• 第六次作业


    一、实验内容

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

    代码:

    #include<stdio.h>
    int main()
    {
        int a,b,c,d,e,f;
        for(a=1000;a<10000;a++)
        {
            b=a/1000;
            c=a%1000/100;
            d=a%1000%100/10;
            e=a%1000%100%10;
            f=e*1000+d*100+c*10+b;
            if((b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e)&&a==(4*f))
            {
                printf("原四位数为%d,新四位数为%d
    ",a,f);
            }
        }
        return 0;
     }

    程序运行结果:

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

      样例: 输入123,    输出 6     June

                输入12345,输出 15   ***

    代码:

    #include<stdio.h>
    int main()
    {
        long a,sum=0;
        printf("请输入一个多位数
    ");
        scanf("%ld",&a);
        while(a)
        {
            sum=sum+a%10;
            a/=10;
        }
        printf("%ld
    ",sum);
        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;
            default:printf("***
    ");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,c,d,sum=1,n=0;
        printf("给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。
    ");
        scanf("%d",&a);
        if(a>=4)
        {
            printf("不存在
    ");
        }
        else
        {
            for(b=a;b<6;b++)
            {
                for(c=a;c<6;c++) 
                {
                    for(d=a;d<6;d++)
                    {
                        if(b!=c&&b!=d&&c!=d)
                        {
                            sum=b*100+c*10+d;
                            printf("%d%	",sum);
                            n++;
                            if(n%4==0)
                            {
                                printf("
    ");
                            }
                        }
                    }
                }
            }
        }
        return 0;
    }

    程序运行结果:

    4、自动出题

    代码:

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {
        int a,b,result1,result2,answer1,answer2,d,n1,n2,n3=0,n4=0,y,Y,n;
        char x;
        char op1,op2;
        do
        {
            n2=0;
        for (n1=1;n1<=5;n1++)
        {
        srand(time(NULL));
        a=rand()%100+1;
        b=rand()%100+1;
        d=rand()%4+1;
        switch (d)
        {
            case 1:op1='+';result1=a+b;break;
            case 2:op1='-';result1=a-b;break;
            case 3:op1='*';result1=a*b;break;
            case 4:op1='/',op2='%';result1=a/b,result2=a%b;break;
        }
        if (d==1||d==2||d==3)
        {
            printf("%d%c%d=?
    ",a,op1,b);
            printf("请输入答案
    ");
            scanf("%d",&answer1);
            if (answer1==result1)
            {
                printf("你很棒,做对了!
    ");
                n2++;
            }
            else
            {
    printf("做错了!,%d%c%d=%d
    ",a,op1,b,result1);
            }
          }
          else
          {
              printf("%d%c%d=?
    ",a,op1,b);
    printf("请分别输入商和余数,用空格分开
    ");
            scanf("%d %d",&answer1,&answer2);
            if (answer1==result1&&answer2==result2)
            {
                printf("你很棒,做对了!
    ");
                n2++;
            }
            else
            {
    printf("做错了!,%d%c%d=%d...%d
    ",a,op1,b,result1,result2);
             }
           }
         }
         n3=n3+n2;
    printf("本轮一共做对了%d道题,正确率是%.2f%%
    ",n2,(n2/5.0)*100);
         printf("输入y继续,输入n结束
    ");
         scanf(" %c",&x);
         n4=n4+5;
        }while (x=='y'||x=='Y');
        printf("本次一共做对了%d道题,正确率为%.2f%%",n3,((float)n3/n4)*100);
    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根火柴棍必须全部用上

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

                  

    代码:

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

    程序运行结果:

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

    1、分别利用枚举法和辗转相除法计算最大公因数。

    2、未知循环次数可用while语句。

    3、循环嵌套时要注意限制条件

    4、continue语句只能用在循环语句中。

    5、分情况合理运用if与switch。

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

    1、等于用“==”符号,不是“=”。

    2、switch语句中不要忘记break。

    3、scanf有&而printf没有&

    4、/10去掉最后一位,%10得到最后一位。

    5、验证实验的合法性。

  • 相关阅读:
    【转载】ARM与单片机的区别
    关于头文件定义的一点思考
    关于*** WARNING L15: MULTIPLE CALL TO SEGMENT
    【转】单片机中volatile定义的作用详解
    关于单片机位数的思考(8位、16位、32位)
    memcpy函数
    ubuntu下打开windows里的txt文件乱码解决
    linux source filename
    linux环境设置export
    pdf转word工具
  • 原文地址:https://www.cnblogs.com/chenqiu/p/6049273.html
Copyright © 2020-2023  润新知