主题:入门必做的题
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)。
回复列表 (共635个回复)
571 楼
ywwdyh [专家分:0] 发布于 2008-03-30 23:42:00
Thanks!
573 楼
5200tt [专家分:120] 发布于 2008-04-07 18:20:00
做一到,贴一到,大家共同进步,今天晚上开始做
574 楼
djk987 [专家分:0] 发布于 2008-04-08 20:08:00
老兄 这些题有答案么
575 楼
pengx1011 [专家分:30] 发布于 2008-06-23 05:00:00
好贴啊 不顶怎么行
576 楼
roudao [专家分:0] 发布于 2008-06-23 12:25:00
我是新手请大家帮我一下我的QQ群号是63241360 大家可以进去一起讨论
577 楼
cosixu [专家分:70] 发布于 2008-07-24 08:09:00
/*73. (NOI'95.1_4) N 位由 0 和 1 组成的字符串 A、B 可分别表示为
A=aNaN-1…ai…a2a1
B=bNbN-1…bi…b2b1
其中, ai=0或1, bi=0或1, 1≤i≤N, N≤15.
如果存在某一位j(j∈1…N), 在该位上两串不同, 即aj≠bj, 而其余N-1位
上的两串相同, 即ai=bi(i∈1…N,i≠j), 则称 A、B 两串“互邻”。
比如,在N=4时, A=1100, B=1000, A、B 两串“互邻”, 而 C=1100, D=
1010, C、D 两串不“互邻”。
编程要求:
寻找一个含有 2N 个上述01串的序列, 该序列满足以下要求:
① 组成该序列的每一个01串都与其它串不同;
② 第k个串与第k-1个串有“互邻”关系,2≤k≤2N;
③ 该序列首项由输入指定.
例如 N=2, 指定首项为01, 则一个满足上述要求的序列为
01 11 10 00
输入数据 ┏━━━━━━┓ ┏━━━━━┓
文件名由键盘输入 ┃EXAMPLE4.TXT┃ ┃MODEL4.TXT┃
该文件共有两行 ┠──────┨ ┠─────┨
第一行为 N ┃2 ┃ ┃2 ┃
第二行为指定的序列首项 ┃01 ┃ ┃01 ┃
┃ ┃ ┃11 ┃
输出数据 ┗━━━━━━┛ ┃10 ┃
输出文件为 OUTPUT.TXT ┃00 ┃
第一行为 N ┃ ┃
第二行至第2N+1行依次输出序列的每一个串. ┗━━━━━┛
输入输出举例
参考输入文件: EXAMPLE4.TXT
参考输出文件: MODEL4.TXT
*/
#include <iostream>
using namespace std;
#include <string>
#include <fstream>
void main()
{char ch[12],p[80],c;
int i,j,number,a[80];
cout<<"请输入文件名为example4.txt的文件:\n";
cin>>ch;
while (strcmp(ch,"example4.txt"))
{cout<<"请输入文件名为example4.txt的文件:\n";
cin>>(ch);
}
ofstream outfile1(ch);
if (!outfile1)
{cerr<<"open error!"<<endl;
exit(1);
}
ofstream outfile2("model4.txt");
if (!outfile2)
{cerr<<"open error!"<<endl;
exit(1);
}
cout<<"请输入一个数:\n";
cin>>number;
while (number<2||number>80)
{cout<<"输入范围出错,请重新输入\n";
cin>>number;
}
outfile1<<number;
outfile1<<endl;
getchar();
cout<<"请输入二进制代码\n";
gets(p);
cout<<endl;
int n=strlen(p);
for (i=0;i<n;i++)
{ if (p[i]<'0'||p[i]>'1')
{ cout<<"输入的二进制代码非法,请重新输入二进制代码:\n";
gets(p);
}
else
{a[i]=p[i]-'0';
outfile1<<a[i];
outfile2<<a[i];
}
}
outfile1.close();
cout<<endl;
cout<<"文件MODEL4.TXT的内容为:\n";
for (i=0;i<n;i++)
cout<<a[i];
cout<<endl;
outfile2<<endl;
for (i=0;i<number;i++)
{for (j=0;j<number;j++)
if (j==i)
{if (a[j]==0)
{a[j]=1;outfile2<<a[j];cout<<a[j];}
else
{a[j]=0;outfile2<<a[j];cout<<a[j];}
}
else
{outfile2<<a[j];cout<<a[j];}
cout<<endl;
outfile2<<endl;
}
outfile2.close();
}
578 楼
cosixu [专家分:70] 发布于 2008-07-24 11:45:00
/* 63. (tic__tac__toe 游戏) tic__tac__toe 游戏的规则是:从一个空的 (N*N) 的
棋盘(例如N=3)开始,甲乙二人轮流将棋子放置在棋盘上未被占据的方格中,
例如甲第一个放,他把棋子放在中央的方格里, 然后轮到乙放,他把棋子放在第
一行中间的方格里。于是又轮到甲放,......如此进行下去。判定胜负的方法是:
若某一游戏者有N枚棋子占据了一横行,或一竖列,或一对角线,则此人获胜;若
直至整个棋盘被占满还没有一方获胜,则为平局。
┏━┯━┯━┓ ┏━┯━┯━┓ ┏━┯━┯━┓
┃ │ │ ┃ ┃ │ │ ┃ ┃ │O│ ┃
┠─┼─┼─┨ ┠─┼─┼─┨ ┠─┼─┼─┨
┃ │ │ ┃ ┃ │X│ ┃ ┃ │X│ ┃
┠─┼─┼─┨ ┠─┼─┼─┨ ┠─┼─┼─┨
┃ │ │ ┃ ┃ │ │ ┃ ┃ │ │ ┃
┗━┷━┷━┛ ┗━┷━┷━┛ ┗━┷━┷━┛
*/
#include <iostream>
using namespace std;
#include <iomanip>
char a[3][3]={'0','0','0','0','0','0','0','0','0'};
int b[3][3]={{0,1,2},{3,4,5},{6,7,8}};
int c[8][3]={0},e[3][3]={0};
int d[9][4]={0,3,6,8,0,4,8,8,0,5,7,8,1,3,8,8,1,4,6,7,1,5,8,8,2,3,7,8,2,4,8,8,2,5,6,8};
int check()
{for (int i=0;i<3;i++)
for (int j=0;j<3;j++)
{ if (a[i][j]=='0')
return 1;
}
return 0;
}
void print(char a[][3])
{for (int i=0;i<3;i++)
{for (int j=0;j<3;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
void fz_c(int i,int j,int n)
{if (i==0&&j==0)
c[0][0]=c[3][0]=c[6][0]=n;
if (i==0&&j==1)
c[0][1]=c[4][0]=n;
if (i==0&&j==2)
c[0][2]=c[5][0]=c[7][0]=n;
if (i==1&&j==0)
c[1][0]=c[3][1]=n;
if (i==1&&j==1)
c[1][1]=c[4][1]=c[6][1]=c[7][1]=n;
if (i==1&&j==2)
c[1][2]=c[5][1]=n;
if (i==2&&j==0)
c[2][0]=c[3][0]=c[7][2]=n;
if (i==2&&j==1)
c[2][1]=c[4][2]=n;
if (i==2&&j==2)
c[2][2]=c[5][2]=c[6][2]=n;
}
void main()
{int win=0,i,j,m,flag=1,p;
char ch[3],n;
while (check()&&win==0)
{ print(a);
cout<<endl;
if (flag)
{ cout<<"甲落子"<<endl;
n='*';
}
else
{ cout<<"乙落子"<<endl;
n='O';
}
gets(ch);
cout<<endl;
i=ch[0]-'0'-1,j=ch[2]-'0'-1;
while (ch[0]<'0'||ch[0]>'4'||ch[1]!=','||ch[2]<'0'||ch[2]>'4'||e[i][j]==1)
{ cout<<"输入错入,重新输入\n";
gets(ch);
i=ch[0]-'0'-1;j=ch[2]-'0'-1;
}
a[i][j]=n;
fz_c(i,j,n);
e[i][j]=1;
p=b[i][j];
for (m=0;m<4;m++)
{ if (d[p][m]!=8)
{ if (c[d[p][m]][0]==c[d[p][m]][1]&&c[d[p][m]][0]==c[d[p][m]][2])
{ win=1;
break;
}
}
}
if (flag)
flag=0;
else
flag=1;
}
cout<<endl;
if ((check()==0&&win==1&&n=='*')||(check()&&win==1&&n=='*'))
cout<<"甲胜"<<endl;
else if (check()==0&&win==0)
cout<<"和棋"<<endl;
else
cout<<"乙胜"<<endl;
print(a);
}
579 楼
兔牙-- [专家分:10] 发布于 2008-07-24 16:38:00
都是专家啊!好羡慕啊
580 楼
loy20002000 [专家分:0] 发布于 2008-07-25 10:48:00
我一定会把他们全挑战完的!!!!!!
我来回复