标题:▲★★@76道较难度C练习题.含NOI竞赛题.欢迎挑战●◆〓#
只看楼主
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
得分:0 

从上面5条结论上看``

第4条很明显的说明了``D和E绝对有只一个人参加了```

第5条说`` "如果E参加,那么A和D也都参加"

好``现在开始假设``:

第一中可能:

E参加

由 " ( 5 )如果E参加,那么A和D也都参加 →A,D参加

由 " ( 1 )A参加时,B也参加" 可知道B参加 → A,B,D参加`

由 " ( 3 )C和D或者都参加,或者都不参加 →A,B,C,D参加`

由 " ( 2) B和C只有一个人参加" 结合上一步``可以知道``产生矛盾``所以喃```

所以喃```E不回参加的``要不然```BC``回打架的```


第二种可能:

D参加

由 " ( 3 )C和D或者都参加,或者都不参加 →C,D参加`

由 " ( 2) B和C只有一个人参加" →C,D参加` (排除B)

由 " ( 1 )A参加时,B也参加" 可知道B参加 →C,D参加` (排除A)

我们假设的D参加``所以E是排除的``而也的确在第一种可能中排除`

既然``ABE都``吹了````那就只有CD了``而且没有矛盾产生``

所以答案是``

CD



女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-06-26 20:03
hujian100
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2006-9-14
得分:0 

第3题:

#include <stdio.h>
#define N 15

void main()
{
char arr[N][N], num;
int i, j, k = 0, cycnum;

for( i = k; i <= N - 1 - k; i ++ )
{
if( i == k || i == N - 1 - k )
{
for( j = k; j <= N - 1 - k; j ++ )
arr[i][j] = 'T';
}
else
{
arr[i][k] = 'T';
arr[i][N - 1 - k] = 'T';
}
}
k++;

for( i = k; i <= N - 1 - k; i ++ )
{
if( i == k || i == N - 1 - k )
{
for( j = k; j <= N - 1 - k; j ++ )
arr[i][j] = 'J';
}
else
{
arr[i][k] = 'J';
arr[i][N - 1 - k] = 'J';
}
}
k++;

if( N % 2 != 0 )
cycnum = (int)(N / 2) - 1;
else
cycnum = N / 2 - 2;

for( num = '1'; cycnum > 0; num ++, cycnum -- )
{
for( i = k; i <= N - 1 - k; i ++ )
{
if( i == k || i == N - 1 - k )
{
for( j = k; j <= N - 1 - k; j ++ )
arr[i][j] = num;
}
else
{
arr[i][k] = num;
arr[i][N - 1 - k] = num;
}
}
k++;
}

for( i = 0; i < N; i ++ )
{
for( j = 0; j < N; j ++ )
printf( "%c ", arr[i][j] );
printf("\n");
}
}

[此贴子已经被作者于2007-6-26 23:18:37编辑过]


2007-06-26 23:17
hujian100
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2006-9-14
得分:0 

第14题:
已把每一轮的交换结果都打印出来了,算法通过结果即可明白。

#include <stdio.h>
#define N 20

void main()
{
char str[2 * N];
char temp;
int time, i, j, k;

for( i = 0; i < N; i ++ )
str[i] = '*';
for( i = N; i < 2 * N; i ++ )
str[i] = '0';
printf( "%s\n", str );

for( time = N - 1; time >= 1; time = time - 2 )
{
i = time - 1;
j = N - 1;
k = N;
temp = str[k];
str[k] = str[j];
str[j] = temp;
printf( "%s\n", str );
while( i-- >0 )
{
temp = str[j];
str[j] = str[j - 1];
str[j - 1] = temp;
j--;

temp = str[k];
str[k] = str[k + 1];
str[k + 1] = temp;
k++;

printf( "%s\n", str );
}
}
}


2007-06-26 23:20
cysky
Rank: 1
等 级:新手上路
帖 子:18
专家分:3
注 册:2005-9-3
得分:0 
试一下,看来有一定的难度
2007-06-27 07:55
a307871404
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-6-19
得分:0 
第4题
#define N 5
main()
{
int i,j,k;
for(i=1;i<=N;i++)
{for(j=i;j<=N;j++)
printf("%d",j);
for(j=1;j<i;j++)
printf("%d",j);
printf("\n");}}

我让我喜欢的人不开心     真没用
2007-06-27 10:31
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
得分:0 
15楼不对....

在看清楚点题

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-06-27 12:21
a307871404
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-6-19
得分:0 

第6题
1:
#define N 5
main()
{int i,j,k;
for(i=N;i>=1;i--)
{for(j=N*i;j>N*(i-1);j--)
printf("%3d",j);
printf("\n");}}


我让我喜欢的人不开心     真没用
2007-06-27 12:28
YOGIOH
Rank: 1
等 级:新手上路
帖 子:102
专家分:0
注 册:2007-5-8
得分:0 
回复:(I喜欢c)▲★★@76道较难度C练习题.含NOI竞...

6-③ 回转填数

#include <stdio.h>
#include <conio.h>
#define N 8
int main(void)
{

int i,k,n,c,a[N][N]={0},z=1;
clrscr();
for(n=0,c=0;n<(N+1)/2;n++,c++) //每圈为一层作为C,n作为对角线每圈起点的数
{
for(i=n,k=n;i<N-c;i++)a[i][k]=z++;//每圈从上往左上到左下
i--;
for(k=1+c;k<N-c;k++)a[i][k]=z++;//每圈左下到右下
k--;

for(i=N-2-c;i>=c;i--)a[i][k]=z++;//每圈右下到右上
i++;

for(k=N-2-c;k>c;k--)a[i][k]=z++;//每圈右上到左上
k=k-1;
}
for(i=0;i<N;i++)
{
for(k=0;k<N;k++)
{
printf("%3d ",a[i][k]);
if(k+1==N)printf("\n");
}
}

getch();
return 0;
}
思想可能比较简单,如有其他想法请高手赐教
② 蛇形填数
#include <stdio.h>
#include <conio.h>
#define N 5
int main(void)
{

int i,k,n,a[N][N]={0},z=1;
clrscr();
for(n=0;n<N;n++)
{
for(i=n,k=0;i>=0;)a[i--][k++]=z++;//i变大,k不变 沿斜线左下往上填
}

for(n=1;n<N; n++)
{
for(k=n,i=N-1;k<N;)a[i--][k++]=z++;//k变大,i不变 沿斜线左下往上填
}

for(i=0;i<N;i++)
{
for(k=0;k<N;k++)
{
printf("%3d ",a[i][k]);
if(k+1==N)printf("\n");
}
}

getch();
return 0;
}







[此贴子已经被作者于2007-6-27 12:58:01编辑过]


2007-06-27 12:33
a307871404
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-6-19
得分:0 
回16楼,现在对不
main()
{
int i,j,N;
scanf("%d",&N);
for(i=1;i<=N;i++)
{for(j=i;j<=N;j++)
printf("%3d",j);
for(j=1;j<i;j++)
printf("%3d",j);
printf("\n");}}
第2种方法
main()
{
int i,j,N;
scanf("%d",&N);
for(i=1;i<=N;i++)
{for(j=i;j<=N;j++)
printf("%3d",j);
for(j=N-1;j>N-i;j--)
printf("%3d",j);
printf("\n");}}

我让我喜欢的人不开心     真没用
2007-06-27 12:49
a307871404
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-6-19
得分:0 

main()
{int w,x,y,z;/*设4个人原来手中分别有w,x,,t,z根 w第1回合输x第2回合输y第3回合输*/

w=(64+16/(2*2*2))/2;
x=(64+16/(2*2))/(2*2);
y=(64+16/2)/(2*2*2);
z=(64+16)/16;
printf("%3d%3d%3d%3d",w,x,y,z);}
我这样写算不算编程


我让我喜欢的人不开心     真没用
2007-06-27 13:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-150241-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.437364 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved