• 第六次作业


    1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。

     1 #include<stdio.h>
     2 int main()
     3 {
     4     int num,a,b,c,d,sum;
     5     printf("输入一个四位整数");
     6         for(num=1000;num<=9999;num++)
     7         {
     8         a=num/1000;
     9         b=num/100%10;
    10         c=num/10%10;
    11         d=num%10;
    12         sum=1000*d+100*c+10*b+a;
    13         if(num==4*sum)
    14         {
    15             printf(" %4d",num);    
    16         }    
    17         }
    18         
    19     return 0;
    20 } 

    2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。

      样例: 输入123,    输出 6     June

                输入12345,输出 15   ***

     1 #include<stdio.h>
     2 int main()
     3 {
     4     int num,s=0,i,x,sum=0;
     5 
     6     printf("输入任意一个多位的数字");
     7     scanf("%d",&num);
     8     
     9     while(num!=0)
    10     {
    11     s=num%10;
    12     num=num/10;
    13     x=x+s;
    14 }
    15 
    16     if(x<=0||x>=13)
    17     {
    18         printf("***"); 
    19     }
    20     else if(x>=0&&x<=12)
    21     {
    22     
    23     switch(x)
    24     {
    25         case 1:printf("%dJanuary",x);break;
    26         case 2:printf("%dFebruary",x);break;
    27         case 3:printf("%dMarch",x);break;
    28         case 4:printf("%dApril",x);break;
    29         case 5:printf("%dMay",x);break;
    30         case 6:printf("%dJune",x);break;
    31         case 7:printf("%dJuly",x);break;
    32         case 8:printf("%dAugust",x);break;
    33         case 9:printf("%dSeptember",x);break;
    34         case 10:printf("%dOctorber",x);break;
    35         case 11:printf("%dNovember",x);break;
    36         case 12:printf("%dDecember",x);break;    
    37         }
    38     }
    39 
    40     return 0;
    41 } 

    3.给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

       输入格式:输入在一行中给出A。

       输出格式:输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

       输入样例:2

       输出样例:234  235  243  245  253  254

                      324  325  342  345  352  354

                      423  425  432  435  452  453

                      523  524  532  534  542  543

      此题可在pta网站注册提交测试。https://pta.patest.cn/pta/test/14/exam/4/question/796

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 int main()
     4 {
     5     int A,a,x,y,z,d,num;
     6     printf("输入一位不超过6的整数");
     7     scanf("%d",&A);
     8     a=A+4;
     9     for(x=A;x<a;x++)
    10     for(y=A;y<a;y++)
    11     for(z=A;z<a;z++)
    12     {
    13         if(x!=y&&x!=z&&y!=z)
    14         {
    15         num=100*x+10*y+z;
    16         printf(" %d",num);
    17         d++;
    18         if(d%6==0)
    19         {
    20             printf("
    ");
    21         }
    22     }
    23     }
    24     return 0;
    25  } 

    4. 万年历、看商品猜价格、自动出题器、猜拳游戏。(完成个人选定的题目)

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<time.h>
     4 int main()
     5 {
     6     int a,b,c,i,j,k;
     7     char x,y,Y;
     8     do
     9     {
    10     printf("请输入商品的价格:
    ");
    11     scanf("%d",&a);
    12     srand(time(NULL));
    13     b=rand()%100+1;    
    14     for(i=1;i<=10;i++)
    15     {
    16     if(a!=b)
    17     {
    18     if(a>b)
    19     {
    20         printf("猜大了
    ");
    21         scanf("%d",&a);
    22         j=j+1; 
    23     }
    24     else if(a<b)
    25     {
    26         printf("猜小了
    ");
    27         scanf("%d",&a);
    28         k=k+1;
    29     }
    30     }
    31     if(a==b)
    32     {
    33         printf("猜对了,你一共猜错了%次",(j+k));    
    34     }    
    35     }
    36     printf("你一共猜错了%d次哦",(j+k-1));
    37     printf("继续下一轮吗?Y (y)or N(n)
    ");
    38     scanf(" %c",&x); 
    39 }while(x=='Y'||x=='y');
    40     return 0;
    41 }
    42     

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<time.h>
     4 int main()
     5 {    int a,b,c=0,e=1,s1=0,s2=0,i,i1,i2;
     6     char x; 
     7     srand(time(NULL));
     8         do{     
     9       10             b=rand()%3+1;
    11              printf("第%d轮对决,请选择:1.石头,2.剪刀,3.布
    ",e);
    12             scanf("%d",&a);
    13             if(a<=0||a>3)
    14             {
    15                 printf("数据错误,重新输入!
    ");
    16             } 
    17             else if(a==b)
    18             {
    19                 c++; 
    20                 e++;
    21                 printf("平局
    ");
    22             }
    23             else if((a==1&&b==3)||(a==2&&b==1)||(a==3&&b==2))
    24             {
    25                 s1++;
    26                 e++;
    27                 printf("你输了
    ");
    28             }
    29             else if((a==1&&b==2)||(a==2&b==3)||(a==3&b==1))
    30             {
    31                 s2++;
    32                 e++;
    33                 printf("你赢了
    ");
    34             }
    35                 printf("继续下一轮吗?Y (y)or N(n)
    ");
    36                 scanf(" %c",&x);
    37       } while(x=='y'||x=='Y');
    38       printf("对决次数%d平局%d次,电脑%d分,你%d分",e-1,c,s1,s2);
    39     return 0;
    40 }

    附加题

      有16根火柴,可以拼出多少个形如“A+B=C”的等式,A、B、C是用火柴棍拼出的整数,且为一位数,输出该等式形式。

     注意:  1. 加号与等号各自需要两根火柴棍    2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0) 3. 16根火柴棍必须全部用上

      用火柴棍拼数字0-9的拼法如图所示: 

                  

     1 #include<stdio.h>
     2 int main()
     3 {
     4     int s1,s2,s3,a,b,sum;
     5     for(a=0;a<=9;a++)
     6     for(b=0;b<=9;b++)
     7     {
     8         switch(a)
     9         {
    10             case 0:s1=6;break;
    11             case 1:s1=2;break;
    12             case 2:s1=5;break;
    13             case 3:s1=5;break;
    14             case 4:s1=4;break;
    15             case 5:s1=5;break;
    16             case 6:s1=6;break;
    17             case 7:s1=3;break;
    18             case 8:s1=7;break;
    19             case 9:s1=6;break;
    20         }
    21         switch(b)
    22         {
    23             case 0:s2=6;break;
    24             case 1:s2=2;break;
    25             case 2:s2=5;break;
    26             case 3:s2=5;break;
    27             case 4:s2=4;break;
    28             case 5:s2=5;break;
    29             case 6:s2=6;break;
    30             case 7:s2=3;break;
    31             case 8:s2=7;break;
    32             case 9:s2=6;break;
    33         }
    34         sum=a+b;
    35         switch(sum)
    36         {
    37             case 0:s3=6; break;
    38             case 1:s3=2; break;
    39             case 2:s3=5; break;
    40             case 3:s3=5; break;
    41             case 4:s3=4; break;
    42             case 5:s3=5; break;
    43             case 6:s3=6; break;
    44             case 7:s3=3; break;
    45             case 8:s3=7; break;
    46             case 9:s3=6; break;
    47         }
    48         if(s1+s2+s3==12&&a<=9&&b<=9&&sum<=9)
    49         {
    50             printf("%d+%d=%d
    ",a,b,sum);
    51         }
    52     }
    53     return 0;
    54 }

    二、知识点总结(对顺序结构、选择结构、循环结构做综合总结)

    1:利用穷举法,用多个循环叠加求出多个解得问题。

    2:如果使一个数倒叙输出可以通过(x=x*10+?%10;?=?%10)得到

    三、实验总结(实验中遇到的问题及解决方法) 

    1:虽然穷举法简单好用,但是有时候运算步骤过多,需要适当减短。

    2:如果变量没有规律可以通过swtich语句解决,不要忘了加分号。

    3:注意问题条件的范围大小,在输出结果往往会忽略这些细节。

    4:没有什么困难是努力做不到的,如果做不出来,那说明不够用心。

    5:C语言编译失败往往是因为小错误,看看是那里错了呢?

    6:continue跳入上一个循环(勿?)。

  • 相关阅读:
    FastAPI(38)- 模拟一个跨域场景
    FastAPI(37)- Middleware 中间件
    Python
    Python
    FastAPI(35)- 依赖项中使用 yield + Context Manager 上下文管理器
    汇编 | CPU物理地址本质理解
    汇编 | DosBox初步接触的一些初始化设置(窗口大小 & 默认命令)
    汇编语言 第3版 王爽 检测点答案及详细解析 (更新中)
    JSP | Tomcat目录结构详解
    JSP常见错误以及解决方案
  • 原文地址:https://www.cnblogs.com/yeqingsong/p/6041308.html
Copyright © 2020-2023  润新知