回 帖 发 新 帖 刷新版面

主题:入门必做的题

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

311 楼

蛇形填数  


#include"stdio.h"

main()
{int s[100][100],x[100][100],i,j,d,n,m,v,c,b;
m=1;d=1;v=1;c=1;b=1;
printf("input:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        s[i][j]=m++;
    x[1][1]=s[b][c++];
    i=1;j=1;
    while(v!=n*n)
    {if(v%n==0)
        {c=1;
    b++;}
        switch(d)
{case 1:

    {i++;
    v++;
        x[i][j]=s[b][c++];
    if(j==1)
        d=2;
    else
        d=4;
    break;}
case 2:
    {   i--;
        j++;
        v++;
        x[i][j]=s[b][c++];
    if(j==n)
        d=1;
    else
        if(i==1)
            d=3;
        break;}
case 3:
    {j++;
    v++;
    x[i][j]=s[b][c++];
    if(i==n)
        d=2;
    else
        d=4;
    break;}
case 4:

    {i++;j--;
        v++;
        x[i][j]=s[b][c++];
    if(i==n)
       d=3;
    else
        if(j==1)
            d=1;
        break;}
    }
}
printf("output:\n");
    for(i=1;i<=n;i++)
        {for(j=1;j<=n;j++)
            printf("%5d",x[i][j]);
        printf("\n");
        }
}

312 楼

八数码问题

#include "stdio.h"


typedef struct aa
{int x;
int y;
}ll;
 ll top[5];
int z=0,i=0,depth=-1;


int pp(int a[5][5],int b[5][5])
{int k,j,num;
num=0;
for(k=1;k<4;k++)
    for(j=1;j<4;j++)
        if(a[k][j]!=b[k][j])
            if(a[k][j]!=0)
            num++;
        return num;
}




int gujia(int al[5][5],int bl[5][5],int w,int dep1[5])
{int k,j,tem;
tem=0;
for(k=1;k<4;k++)
    for(j=1;j<4;j++)
        if(al[k][j]!=bl[k][j])
            if(al[k][j]!=0)
            tem++;
            switch(w)
            {
case 1:tem=tem+dep1[1]+1;break;
case 2:tem=tem+dep1[2]+1;break;
case 3:tem=tem+dep1[3]+1;break;
case 4:tem=tem+dep1[4]+1;break;
            }
        return tem;
}


int dd(int vv[5])
{int d,h,l;
d=vv[1];
l=1;
for(h=2;h<5;h++)
if(vv[h]<d)
{d=vv[h];
l=h;
}
return l;
}









313 楼


main()
{
    int a[5][5],b[5][5],v[5],dep[5],t,q,h,l,j,d,r,e,o;
int han,lie,min;
int a1[5][5],a2[5][5],a3[5][5],a4[5][5],c[5];

int s[5][5]={{1,1,1,1,1},{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1},{1,1,1,1,1}};
int ss[5][5][5];


printf("请输入初始状态:\n");
for(t=1;t<4;t++)
    for(q=1;q<4;q++)
        {scanf("%d ",&a[t][q]);
        if(a[t][q]==0)
        {han=t;
        lie=q;
        }
        }
    printf("\n");
    printf("请输入目标状态:\n");
    for(t=1;t<4;t++)
        for(q=1;q<4;q++)
            scanf("%d ",&b[t][q]);
     
        
        top[i].x=han;
        top[i].y=lie;



    do{


    for(o=1;o<5;o++)
    for(r=1;r<4;r++)
        for(e=1;e<4;e++)
        ss[o][r][e]=s[r][e];

for(o=1;o<5;o++)
    dep[o]=depth;




for(h=1;h<4;h++)
for(l=1;l<4;l++)
{a1[h][l]=a[h][l];
a2[h][l]=a[h][l];
a3[h][l]=a[h][l];
a4[h][l]=a[h][l];
}




if(s[top[i].x][top[i].y+1]==0)
          {c[1]=1;

              for(h=1;h<4;h++)
        for(l=1;l<4;l++)
            ss[1][h][l]=0;
            ss[1][top[i].x][top[i].y]=1;
         j=a1[top[i].x][top[i].y+1];
         a1[top[i].x][top[i].y+1]=a1[top[i].x][top[i].y];
         a1[top[i].x][top[i].y]=j;
         v[1]=gujia(a1,b,1,dep);
      


      }







     if(s[top[i].x-1][top[i].y]==0)
     {
     c[2]=1;  for(h=1;h<4;h++)
        for(l=1;l<4;l++)
            ss[2][h][l]=0;
        ss[2][top[i].x][top[i].y]=1;
       j=a2[top[i].x-1][top[i].y];
      a2[top[i].x-1][top[i].y]=a2[top[i].x][top[i].y];
      a2[top[i].x][top[i].y]=j;
      v[2]=gujia(a2,b,2,dep);
    

     }





     if(s[top[i].x][top[i].y-1]==0)
     {
  for(h=1;h<4;h++)
        for(l=1;l<4;l++)
            ss[3][h][l]=0;
      ss[3][top[i].x][top[i].y]=1;
      c[3]=1;
      j=a3[top[i].x][top[i].y-1];
      a3[top[i].x][top[i].y-1]=a3[top[i].x][top[i].y];
      a3[top[i].x][top[i].y]=j;
      v[3]=gujia(a3,b,3,dep);


          }




     if(s[top[i].x+1][top[i].y]==0)
     {c[4]=1;
  for(h=1;h<4;h++)
        for(l=1;l<4;l++)
            ss[4][h][l]=0;
      ss[4][top[i].x][top[i].y]=1;
      j=a4[top[i].x+1][top[i].y];
      a4[top[i].x+1][top[i].y]=a4[top[i].x][top[i].y];
      a4[top[i].x][top[i].y]=j;
      v[4]=gujia(a4,b,4,dep);
    
    
     }

     i++;








for(d=1;d<5;d++)
    {if(c[d]==0)
    v[d]=1000; dep[d]++;}

    min=dd(v);






    switch(min)
{case 1:

    {top[i].x=top[i-1].x;
    top[i].y=top[i-1].y+1;
for(h=1;h<4;h++)
    for(l=1;l<4;l++)
        a[h][l]=a1[h][l];
    
      for(h=1;h<4;h++)
        for(l=1;l<4;l++)
            s[h][l]=ss[1][h][l];
    
      
    break;}
    
    case 2:
        {top[i].x=top[i-1].x-1;
        top[i].y=top[i-1].y;

    for(h=1;h<4;h++)
    for(l=1;l<4;l++)
        a[h][l]=a2[h][l];
     for(h=1;h<4;h++)
        for(l=1;l<4;l++)
            s[h][l]=ss[2][h][l];
    break;}
        
    case 3:
    {top[i].x=top[i-1].x;
        top[i].y=top[i-1].y-1;
    for(h=1;h<4;h++)
        for(l=1;l<4;l++)
        a[h][l]=a3[h][l];
              for(h=1;h<4;h++)
        for(l=1;l<4;l++)
            s[h][l]=ss[3][h][l];
        
        break;}
    
    case 4:
        {top[i].x=top[i-1].x+1;
        top[i].y=top[i-1].y;
        for(h=1;h<4;h++)
              for(l=1;l<4;l++)
             a[h][l]=a4[h][l];
                   for(h=1;h<4;h++)
        for(l=1;l<4;l++)
            s[h][l]=ss[4][h][l];
              break;}
        
    }
for(h=1;h<5;h++)
    c[h]=0;

    for(h=1;h<4;h++)
    {for(l=1;l<4;l++)
    printf("%4d",a[h][l]);
    printf("\n");
    }
    printf("\n");
    printf("\n");

depth++;
}while(pp(a,b));

printf("\n最少步骤:%d",depth+1);

}

314 楼

我也要入入门了,这些看起来蛮难的,如果大家有做的可以拿出来交流下呀

315 楼

真的是不简单~~第一题就用到递归~~第二题用到位运算添!!
第三第四更加用到两次双重for循环

316 楼


天杀的,这么多,不过做的肯定爽死哦

317 楼

往死里顶!太好了,谢谢楼主[em12][em12][em12]

318 楼

看完后觉得门还没入呢。。晕了。。自己都已经学完for循环与嵌套了。。觉得咋的也能算是入门了吧。。这题应该正好锻炼。。 第1题就没做出来啊。。

楼主  你应该叫。。入门终极题。。。学艺不精。。看了4道题 1道题也没解出

还是支持~~~好题。。

319 楼

我学了2个月的C语言 就把潭浩强老师给记住了,其他什么也没有~~看来入门还早啊..........

320 楼

第一题题目有些不明白:等式是ABCDE+DFG+DFG=XYZDE的意思吗?

我来回复

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