• 作业六


    作业六

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

    #include<stdio.h>
    int main()
    {    int a,b,c,d;
        float e,f;
         for(a=1;a<=9;a++)
         for(b=0;b<=9;b++)
         for(c=0;c<=9;c++)
         for(d=1;d<=9;d++)
        
        {
        e=a*1000+b*100+c*10+d;
        f=d*1000+c*100+b*10+a;
         if    (e/f==4)
         {
             printf("这两个四位数是%.f和%.f
    ",e,f);
         }
        }
            return 0;
        
        
     } 

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

      样例: 输入123,    输出 6     June

                输入12345,输出 15   ***

    #include <stdio.h>
    int main()
    {
         int a,sum=0;
         printf("请输入一个整数:");
          scanf("%d",&a);
        while(a)
         {
          sum = sum+a%10;
          a /= 10;
         }
         printf("%d",sum);
         if(sum>12)
         {
             printf(" ***");
         }
         else
         {
             switch(sum)
             {
              case 1:  printf(" January");break;
             case 2:  printf(" February"); break;
             case 3:  printf(" March"); break;
             case 4:  printf(" April"); break;
             case 5:  printf(" May"); break;
             case 6:  printf(" June"); break;
             case 7:  printf(" July"); break;
             case 8:  printf(" August"); break;
             case 9:  printf(" September"); break;
              case 10: printf(" October"); break;
              case 11: printf(" November"); break;
             case 12: printf(" December"); break;
            }
         }
         return 0;
    }

    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

    #include<stdio.h>
    int main()
    {    int a,b,e,f,g,h,m;
        printf("输入一个小于6的数字
    ");
        scanf("%d",&a);
        if(a>6||a<=0)
        {
            printf("输入错误
    "); 
        }
        else
        { 
        e=a+4;
        for(f=a;f<e;f++)
        for(g=a;g<e;g++)
        for(h=a;h<e;h++)
         {    
            
            if(f!=g&&f!=h&&g!=h)
            {
                b=f*100+g*10+h;    
                printf(" %d",b);
                m++;
                if(m%6==0&&m!=0)
             {
                  printf("
    ");
             }
            }
          }
        }
        return 0;
     } 

    4. 万年历、看商品猜价格、自动出题器、猜拳游戏。(完成个人选定的题目)我忘了选的哪个了....交两个吧~~~~

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {    int a,b,c=0,d=0,e=0,f=1,i,i1,i2;
        char x; 
        srand(time(NULL));
        do{     x='N';
                b=rand()%3+1;
                 printf("第%d轮对决,请选择:1.石头,2.剪刀,3.布
    ",f);
                scanf("%d",&a);
                if(a<=0||a>3)
                {
                    printf("数据错误,重新输入!
    ");
                } 
                else if(a==b)
                {
                    c++; 
                    f++;
                    printf("平局
    ");
                }
                else if((a==1&&b==3)||(a==2&&b==1)||(a==3&&b==2))
                {
                    d++;
                    f++;
                    printf("你输了
    ");
                }
                else if((a==1&&b==2)||(a==2&b==3)||(a==3&b==1))
                {
                    e++;
                    f++;
                    printf("你赢了
    ");
                }
                    printf("继续下一轮吗?Y (y)or N(n)
    ");
                    scanf(" %c",&x);
          } while(x=='y'||x=='Y');
          printf("对决次数;%d,平局%d次,电脑得分%d,你得分%d",f-1,c,d,e);
        return 0;
    }

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {    int a,b,i;
        char x;
        do
        { 
        printf("请输入价格
    ");
        srand(time(NULL));
        scanf("%d",&b);
        a=rand()%100+1;
        for(i=1;i<10;i++)
        {if(b>100||b<0)
            {
            printf("输入错误,请重新输入
    ");
            scanf("%d",&b);
            } 
         else
        {if(a==b)
            {
            printf("价格相等,商品是你的,价格就是%d元,你用了%d次。
    ",a,i);
            break; 
            }
        else if(a>b)
            {
            printf("价格错误了,你猜的太小了
    ");
            scanf("%d",&b);    
            }
        else
            {
            printf("价格错误了,你猜的太大了
    ");    
            scanf("%d",&b);
            }
        } 
        }
            if(i==10&&a!=b)
        {
            printf("10次机会用完了,价格是%d元。
    ",a);
        }
        printf("继续吗?y or n
    "); 
        scanf(" %c",&x);
        }
        while(x=='y');    
            return 0; 
    }     

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main() 
    {int a,b,answer,d,result,i,i1=0,i2=0,i4=0,i6=0,m,n;
        float i3,i5;
       
        char x,z;
        srand(time(NULL));
        do{
            i2=0;
            for(i=1;i<=5;i++)
        { 
        a=rand()%100+1;
        b=rand()%100+1;
        d=rand()%4+1;
        switch(d)
        {    case 1:x='+';result=a+b;break;
            case 2:x='-';result=a-b;break;
            case 3:x='*';result=a*b;break;
            case 4:x='/';result=a/b;m=a%b;
            printf("%d %c %d=?
    ",a,x,b);
            printf("输入商和余数,用空格隔开:
    ");
            scanf("%d %d",&answer,&n); 
            if(answer==result&&m==n)
        {
            printf("你答对了!
    ");
            i2++;
            i6++;
            
        }
        else
        {
            printf("你答错了,答案是:%d %c %d=商%d余%d
    ",a,x,b,result,m);
        }
            break;
        }
        
        if(d!=4){
            printf("%d %c %d=?
    ",a,x,b);
        printf("输入答案:
    ");
        scanf("%d",&answer); 
        if(answer==result)
        {
            printf("你答对了!
    ");
            i2++;
            i6++;
        }
        else
        {
            printf("你答错了,答案是:%d %c %d= %d
    ",a,x,b,result);
        }
                }
        i1++;  
        }
        i3=(i2/(double)5)*100;
        printf("本次做对了%d道题,正确率%.2f%%",i2,i3);
        printf("继续吗?Y (y)or N(n)
    ");
        scanf(" %c",&z);
        }while(z=='y'||z=='Y');
        i5=(i6/(double)i1)*100;
        printf("总共做了%d道题,做对了%d道,正确率是%.2f%%",i1,i6,i5);
        
        return 0;
    }

    附加题

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

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

    #include<stdio.h>
    int main()
    {    int x,y,gen1,gen2,sum,gen3;
        for(x=0;x<=9;x++)
        for(y=0;y<=9;y++)
        {
        switch(x)
              {
               case 0: gen1=6; break;
               case 1: gen1=2; break;
               case 2: gen1=5; break;
               case 3: gen1=5; break;
               case 4: gen1=4; break;
               case 5: gen1=5; break;
               case 6: gen1=6; break;
               case 7: gen1=3; break;
               case 8: gen1=7; break;
               case 9: gen1=6; break;
              }
              switch(y)
              {
               case 0: gen2=6; break;
               case 1: gen2=2; break;
               case 2: gen2=5; break;
               case 3: gen2=5; break;
               case 4: gen2=4; break;
               case 5: gen2=5; break;
               case 6: gen2=6; break;
               case 7: gen2=3; break;
               case 8: gen2=7; break;
               case 9: gen2=6; break;
              }
              sum=x+y;
              switch(sum)
              {
               case 0: gen3=6; break;
               case 1: gen3=2; break;
               case 2: gen3=5; break;
               case 3: gen3=5; break;
               case 4: gen3=4; break;
               case 5: gen3=5; break;
               case 6: gen3=6; break;
               case 7: gen3=3; break;
               case 8: gen3=7; break;
               case 9: gen3=6; break;
              }
              if(gen1+gen2+gen3==12&&x<9&&y<9&&sum<9)
              {
                  printf("%d+%d=%d
    ",x,y,sum);
              }
        }
        return 0;
    }

    二、知识点总结:

    1:穷举法的应用,利用多个循环,达成条件退出循环。

    三、实验总结:

    1:在循环中利用switch,可以方便对条件做出选择。

    2:注意int double float的区别。

    3:在循环中使用sum = sum+a%10;  a /= 10;可以实现对输入整数的各位数字相加。

    4:注意够位换行时“某++”的放置位置。

    5:附加题要分清数字相加和火柴根数相加的区别以及联系。

    6:循环嵌套时要注意限制条件。

  • 相关阅读:
    1293E. Xenon's Attack on the Gangs (树形DP)
    二分check的妙用
    Educational Codeforces Round 80 (CF
    CodeForces Goodbye2019 E.Divide Points (构造)
    POJ 1061 (拓展欧几里得+求最小正整数解)
    1238D
    关于Mysql用户的相关操作
    JAVA类的符号引用的理解
    关于tomcat的路径等基础问题
    Java 方法中,参数的装配顺序
  • 原文地址:https://www.cnblogs.com/mty1997/p/6040910.html
Copyright © 2020-2023  润新知