回 帖 发 新 帖 刷新版面

主题:[原创]没事一起写程序吧(入门)

没事一起写程序吧(入门)
题目::“入门必做的题”http://www.programfan.com/club/post-157289.html
编程环境:DEV_CPP

[size=4][color=FF0000][b]提建议者或参与者必加分[/b][/color][/size]

[size=3][b][color=FF0000]已完成题目:1、2、3、4[/color][/b][/size]

回复列表 (共31个回复)

沙发

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

[code=c]
#include<stdio.h>
#include<conio.h>
int main(void)
{
 char *p="TJ123456789";
 
 int i,j,k;
 printf("please input number:");
 scanf("%d",&k);
 char b[k][k];
 for(i=0;i<k/2+1;i++,p++)
  for(j=i;j<k-i;j++)
   {
    b[i][j]=*p;
    b[j][i]=*p;
    b[k-i-1][j]=*p;
    b[j][k-i-1]=*p;           
   }
 for(i=0;i<k;i++)
  {
  for(j=0;j<k;j++)
   printf(" %c",b[i][j]);   
   printf("\n");
  }
getch();    
}
[/code]

板凳

老兄你这个有问题吧!~报错啊!~~~

3 楼

楼上的兄弟,楼主这代码没报错,完全正确。。。

是你的编译器有问题吧。。。。

4 楼


1.  给定等式    A B C D E     其中每个字母代表一个数字,且不同数字对应不
                    D F G     同字母。编程求出这些数字并且打出这个数字的
             +      D F G     算术计算竖式。

             ───────

                X Y Z D E
 
[code=c]
#include<stdio.h>
#include<conio.h>
int main(void)
{
 int q[10]={0,0,0,0,0,0,0,0,0,0};
 int *p=q;
 int a,b,c,d,e,f,g,x,y,z,i,u=0;
 long int h,k;
 for(a=0;a<10;a++) 
 {q[a]=1;
  for(b=0;b<10;b++) 
  {q[b]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=2) continue;
   for(c=0;c<10;c++) 
   {q[c]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=3) continue;
    for(d=0;d<10;d++) 
    {q[d]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=4) continue;
     for(e=0;e<10;e++) 
     {q[e]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=5)continue;
      for(f=0;f<10;f++) 
      {q[f]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=6)continue;
       for(g=0;g<10;g++) 
       {q[g]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=7)continue;
        for(x=0;x<10;x++) 
        {q[x]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=8)continue;
         for(y=0;y<10;y++) 
         {q[y]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=9)continue;
          for(z=0;z<10;z++) 
          {q[z]=1;if(q[0]+q[1]+q[2]+q[3]+q[4]+q[5]+q[6]+q[7]+q[8]+q[9]!=10)continue;
           {
               h=a*10000+b*1000+(c+2*d)*100+(d+2*f)*10+e+2*g;
               k=x*10000+y*1000+z*100+d*10+e;
               if(h==k)
                {             
                printf("\n   %d%d%d%d%d\n     %d%d%d\n+    %d%d%d\n_______\n   %d%d%d%d%d"
                             ,a,b,c,d,e,d,f,g,d,f,g,x,y,z,d,e);
                getch();
                }           
            }  
           q[z]=0;}q[y]=0;}q[x]=0;}q[g]=0;}q[f]=0;}q[e]=0;}q[d]=0;}q[c]=0;}q[b]=0;}q[a]=0;}
            
}

[/code]

5 楼


 2. A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些
  人参加了竞赛:

   (1)A参加时,B也参加;

   (2)B和C只有一个人参加;

   (3)C和D或者都参加,或者都不参加;

   (4)D和E中至少有一个人参加;

   (5)如果E参加,那么A和D也都参加。

[code=c]
#include<stdio.h>
#include<conio.h>
int main(void)
{
 int a,b,c,d,e;
 for(a=0;a<2;a++)//1:present,0:absent
  for(b=0;b<2;b++)
   for(c=0;c<2;c++)
    for(d=0;d<2;d++)
     for(e=0;e<2;e++) 
      {
       if((a+b==2||a==0)&&b+c==1&&(c+d==2||c+d==0)&&d+e>0&&(e+a+d==3||e==0))
        { 
         printf("a=%d;b=%d;c=%d;d=%d;e=%d\n",a,b,c,d,e); 
         getch();  
        }                   
      } 

}
[/code]
输出结果:a=0;b=0;c=1;d=1;e=1

6 楼

楼主,你的这个算法貌似太。。。。for循环太多啦,对程序来讲,这个是不太好的吧。。

有没有更好一点的算法?。。。想一想。。。

7 楼

难道没有更好的方法了吗

8 楼

我也在开始做 一起写程序吧 哈哈
以前一直想做但没做  这回回过头来再做下  一起+U+U吧~~
我的第三题 好像跟你的差不多 哦

不过LZ的第一个for循环不要循环到K-1就可以了吧 只要他的一半就可以了吧 ~~
[code=c]
#include <stdio.h>
#include <stdlib.h>
//#include <time.h>

#define        N    15

int main()
{
    int i = 0, j = 0;
    char a[N][N];
    char string[] = {"TJ123456789"};
//    time_t start = clock();

    for (i = 0; i < N / 2 + 1; i++)
    {
        for (j = i; j < N - i; j++)
        {
            a[i][j] = string[i];
            a[j][i] = string[i];
            a[N - 1 - i][j] = string[i];
            a[j][N - 1 -i] = string[i];
        }
    }
    
    for (i = 0; i < N; i++)
    {
        printf("\t");
        for (j = 0; j < N ; j++)
        {
            printf("%c",a[i][j]);
        }
        printf("\n");
    }

//    printf("\n%2.1f",(double)(clock() - start));
    return 0;
}
[/code]

9 楼

第四题还没搞出来 有点难度啊 菜鸟一个啊我~~~

10 楼

第五题: 5. 输入一个十进数,将其转换成 N 进制数(0<N<=16)。

第四题还没搞定啊~~~继续中~~~
[code=c]
#include <stdio.h>

void convert(int deci, int n)
{
    if (deci != 0)
    {
        convert(deci / n, n);
        printf("%d",deci % n);
    }
}

int main()
{
    int deci_num, n ;
    printf("请输入一个十进制数和你想将其转换成的进制:\n");
    if (2 == scanf("%d%d",&deci_num, &n))
    {
        convert(deci_num, n);
    }

    return 0;
}
[/code]

我来回复

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