回 帖 发 新 帖 刷新版面

主题:入门必做的题

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个回复)

41 楼

hehe, which door do you refer to???

42 楼


c语言须说是学了一年多了~~
但是用起来那才少的很~~
还好就是现在有开始学习c版的数据结构和算法
要不能真的要全部还回去了~~
看见那些题目真是有难度~~

43 楼

手算第一题?(编程找不到什么好的方法)

//  ABCDE
//    DFG
// +  DFG
// ------
//  XYZDE
// 每个字母是不同数字
// 求所有可能

/*
解:先看后两位,得FG+FG=00,所以F=5,G=0,进一位
    前三位:ABC+D+D+1=XYZ,由于数是不同的,所以百位上有进位
    于是B+(C+D+D+1)/10 > 10(由于Y!=G=0,所以不取等号),B只能是9(若为8,则C+D+D<=25不满足)
    Y!=G=0,所以Y为1。即C+D+D+1进了两位,C+D+D+1>20,C+D+D>19
    剩余数字为2,3,4,6,7,8,所以C,D取值:(4,8),(6,8),(7,8),(6,7)
    若C=4,D=8,则C+D+D+1=21,所以Z=1=Y,不行
    若C=6,D=8,则C+D+D+1=23,所以Z=3;由于X=A+1,但数字只剩2,4,7,不行
    若C=7,D=8,则C+D+D+1=24,所以Z=4;由于X=A+1,数字只剩2,3,6,所以A=2,X=3,E=6
    若C=6,D=7,则C+D+D+1=21,所以Z=1=Y,不行

    综上,算式为:
    29786
      850
   +  850
   ------
    31486
*/
#include<stdio.h>
#include<assert.h>
int main(void)
{
    int a=2,b=9,c=7,d=8,e=6,f=5,g=0,x=3,y=1,z=4;
    int op1 = a*10000+b*1000+c*100+d*10+e;
    int op2 = d*100+f*10+g;
    int op3 = x*10000+y*1000+z*100+d*10+e;
    assert( op1+op2+op2 == op3 );

    printf(" 29786\n"
           "   850\n"
           "+  850\n"
           "------\n"
           " 31486\n");
    return 0;
}

44 楼

NB呀

45 楼

这里很多题目都是toj上的,所以说是入门的题稍稍有些过,当然要看这“入门”二字如何理解。要解决这些题目,递归,回溯,动态规划,甚至np等算法都要用到,这种“入门”无疑不是普通人所想的那种入门。所以大家也不必丧失信心,一点一点来。

46 楼

大哥有答案没,我是超初学者啊.........

47 楼

惨!!!我是计算机专业的(今年刚开始上大学啦)。
学校的C语言课业上完了!!学得不知道怎样。

但看了这些题才发现自己什么都不懂

我一道题都不会做!!

希望哪个高手能指点迷津,我接下来该怎么学啊!!

48 楼

呵呵,GCC这篇东西,鼓励了一批人,也吓倒了一批人啊!哈哈

看了下 东方牛娃 的那个手算,挺有创意的。我的想法是用循环来遍历,至多就是

26*26*10 次循环,这对CPU来说,是小case。

建议一下,大家抽空闲时间,每人写道题的答案,我想过不了多久,就能把所有的答

案都凑齐吧。

各位觉得呢?

49 楼

怎么看都不能理解第一题的意思...啊门,完成第二题,放出代码
没有注释...原谅啊...算出来是容易,实现出来就麻烦了...
#include <iostream.h>
main(){int f,a,b,c,d,e;
f=1;;
while(f==1)
{ for(a=0;a<=1;a++)
{for(b=0;b<=1;b++){for(c=0;c<=1;c++){
for(d=0;d<=1;d++){
for(e=0;e<=1;e++){if(a==0){if(b==0&&c==1){if(e==0){if(a==0&&d==0){f=2;
if(a==0){cout<<"a参加";}
if(b==0){cout<<"b参加";}
if(c==0){cout<<"c参加";}
if(d==0){cout<<"d参加";}
if(e==0){cout<<"e参加";} 
cout<<endl;





}}}}
else if(c==0){if(d==0&&b!=0){if(e!=0){f=2;if(a==0){cout<<"a参加";}
if(b==0){cout<<"b参加";}
if(c==0){cout<<"c参加";}
if(d==0){cout<<"d参加";}
if(e==0){cout<<"e参加";}}}}
}}}}} }             


getchar();

}
                                      
                      
              

我是用dev-c++编译完成的
输出a,b,c,d和c,d
不知道对不对..大侠们看看

50 楼

错了,是输出abde和cd....打错了- -

我来回复

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