主题:入门必做的题
GCC
[专家分:14380] 发布于 2006-04-14 11:53:00
1. 给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不
D F G 同字母。编程求出这些数字并且打出这个数字的
+ D F G 算术计算竖式。
───────
X Y Z D E
2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
人参加了竞赛:
(1)A参加时,B也参加;
(2)B和C只有一个人参加;
(3)C和D或者都参加,或者都不参加;
(4)D和E中至少有一个人参加;
(5)如果E参加,那么A和D也都参加。
3. 打印一个 N*N 的方阵,N为每边 N=15 打印出下面图形
字符的个数(3<N<20), 要求最 TTTTTTTTTTTTTTT
外一层为"T", 第二层为"J", 从第三层 TJJJJJJJJJJJJJT
起每层依次打印数字 1,2,3,... TJ11111111111JT
(右图以N为15为例) TJ12222222221JT
TJ12333333321JT
TJ12344444321JT
TJ12345554321JT
TJ12345654321JT
TJ12345554321JT
TJ12344444321JT
TJ12333333321JT
TJ12222222221JT
TJ11111111111JT
TJJJJJJJJJJJJJT
TTTTTTTTTTTTTTT
4. 在N行N列的数阵中, 数K(1〈=K〈=N)在每行和每列中出现且仅
出现一次,这样的数阵叫N阶拉丁方阵。例如下图就是一个五阶拉丁方阵。
编一程序,从键盘输入N值后,打印出所有不同的N阶拉丁方阵,并统计个数。
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4
5. 输入一个十进数,将其转换成 N 进制数(0<N<=16)。
292 楼
xiabin22 [专家分:0] 发布于 2006-08-17 10:31:00
#include<iostream.h>
void condition(int a,int b,int c,int d,int e)
{
int sign=1;
while(a==1) {if(b!=1) sign=0;}
while(sign==1)
{
if((b+c)!=1) {sign=0;break;}
if(c+d==1){ sign=0;break;}
if( d+e==0) {sign=0;break;}
if(e==1)
{
if(a==0)sign=0;
if(d==0)sign=0;
}
break;
}
if(sign==1)
cout<<a<<b<<c<<d<<e;
}
void main()
{
int i;//0表示不参加,1表示参加
for(i=1;i<=16;i++)
{
switch(i)
{
case 1:condition(0,0,0,0,0);break;
case 2:condition(0,0,0,0,1);break;
case 3:condition(0,0,0,1,0);break;
case 4:condition(0,0,0,1,1);break;
case 5:condition(0,0,1,0,0);break;
case 6:condition(0,0,1,0,1);break;
case 7:condition(0,0,1,1,0);break;
case 8:condition(0,0,1,1,1);break;
case 9:condition(0,1,0,0,0);break;
case 10:condition(0,1,0,0,1);break;
case 11:condition(0,1,0,1,0);break;
case 12:condition(0,1,0,1,1);break;
case 13:condition(0,1,1,0,0);break;
case 14:condition(0,1,1,0,1);break;
case 15:condition(0,1,1,1,0);break;
case 16:condition(0,1,1,1,1);break;
case 17:condition(1,0,0,0,0);break;
case 18:condition(1,0,0,0,1);break;
case 19:condition(1,0,0,1,0);break;
case 20:condition(1,0,0,1,1);break;
case 21:condition(1,0,1,0,0);break;
case 22:condition(1,0,1,0,1);break;
case 23:condition(1,0,1,1,0);break;
case 24:condition(1,0,1,1,1);break;
case 25:condition(1,1,0,0,0);break;
case 26:condition(1,1,0,0,1);break;
case 27:condition(1,1,0,1,0);break;
case 28:condition(1,1,0,1,1);break;
case 29:condition(1,1,1,0,0);break;
case 30:condition(1,1,1,0,1);break;
case 31:condition(1,1,1,1,0);break;
case 32:condition(1,1,1,1,1);break;
}
}
}
300 楼
cosixu [专家分:70] 发布于 2006-08-21 16:22:00
第十一题:我只做了六个数的,要做二十个数的改一下数组就行了!
#include "stdio.h"
int fun(int ss)
{int i;
for (i=2;i<ss;i++)
if (ss%i==0)
break;
if (i>=ss)
return 1;
else
return 0;
}
void main()
{int i=0,location=1,k,a[6]={1,2,3,4,5,6},sum,m,t;
clrscr();
while (i<6)
{if (i==5)
sum=a[i]+a[0];
else
sum=a[i]+a[i+1];
if (fun(sum))
{if (i==5&&location<=6)
{printf("%d ",location);
for (m=0;m<6;m++)
if (a[m]==location)
i=m;
for (k=i-1;k>=0;k--)
printf("%d ",a[k]);
for (k=5;k>i;k--)
printf("%d ",a[k]);
printf("\n");
printf("%d ",location);
for (k=i+1;k<6;k++)
printf("%d ",a[k]);
for (k=0;k<i;k++)
printf("%d ",a[k]);
printf("\n");
location++;
}
else
{i++;continue;}
}
else
{t=a[i];a[i]=a[i-2];a[i-2]=t;i=0;}
}
}