回 帖 发 新 帖 刷新版面

主题:入门必做的题

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 楼


Thanks!

572 楼


厉害!

573 楼

做一到,贴一到,大家共同进步,今天晚上开始做

574 楼


老兄 这些题有答案么

575 楼

好贴啊  不顶怎么行

576 楼

我是新手请大家帮我一下我的QQ群号是63241360 大家可以进去一起讨论

577 楼

/*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 楼

/* 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 楼

都是专家啊!好羡慕啊

580 楼

我一定会把他们全挑战完的!!!!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册