• 第六次作业


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

    #include<stdio.h>
    int main()
    {
        int a,b,c,d,x,y,i;
    
        for(i=1000;i<=9999;i++)
        {
            a=i/1000;
            b=i%1000/100;
            c=i%1000%100/10;
            d=i%10;
            if(a==b||a==c||a==d||b==c||b==d||c==d)
            {
                continue;
            }
            else
            {
                x=a;
                a=d;
                d=x;
                x=b;
                b=c;
                c=x;
                y=a*1000+b*100+c*10+d;
                if(i==4*y)
                {
                    printf("%d
    ",i);
                }
            }
    
        }
        return 0;
    }

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

      样例: 输入123,    输出 6     June

                输入12345,输出 15   ***

    #include<stdio.h>
    int main()
    {
        int i,a,sum=0;
        printf("输入任意一个多位的数字");
        scanf("%d",&i);
        while(1)
        {
            if(i<10&&i>0)
            {
                sum=sum+i;
                break;
            }
            a=i%10;
            sum=sum+a;
            i=i/10;
            if(i<10&&i>0)
            {
                sum=sum+i;
                break;
            }
    
        }
        switch(sum)
        {
        case 12:printf("%d   December
    ",sum);break;
        case 11:printf("%d   November
    ",sum);break;
        case 10:printf("%d   October
    ",sum);break;
        case 9:printf("%d    September
    ",sum);break;
        case 8:printf("%d    August
    ",sum);break;
        case 7:printf("%d    July
    ",sum);break;
        case 6:printf("%d    June
    ",sum);break;
        case 5:printf("%d    May
    ",sum);break;
        case 4:printf("%d    April
    ",sum);break;
        case 3:printf("%d    March
    ",sum);break;
        case 2:printf("%d    February
    ",sum);break;
        case 1:printf("%d    January
    ",sum);break;
        default:printf("***
    ");
        }
        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,i=0,sum=0;
        printf("输入一个不超过6的正整数A
    ");
        scanf("%d",&a);
        b=a;
        while(b<=a+3)
        {
            c=a;
            while(c<=a+3)
            {
                d=a;
                while(d<=a+3)
                {
                    if(b!=c&&b!=d&&c!=d)
                    {
                        sum=b*100+c*10+d;
                    printf("%3d",sum);
                    i++;
                    if(i!=6)
                    printf(" ");
                    if(i==6)
                    {
                        printf("
    ");
                        i=0;
                    }
                    }
                    sum=0;
                    d++;
                }
                c++;
            }
        b++;    
        }
        return 0;
    }

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

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {
        int a,b,yu,zy,result,answer,d,i=0,y=0,x=0,m=0;
        float lu,zonglu;
        char op,yn;
        srand(time(NULL));
        while(i<=5)
     {
        a=rand()%100;
        b=rand()%100;
        d=rand()%4+1;
        switch(d)
        {
            case 1:op='+';result=a+b;break;
            case 2:op='-';result=a-b;break;
            case 3:op='*';result=a*b;break;
            case 4:op='/';result=a/b;zy=a%b;break;
        }
        if(d==4)
        {
            printf("%d%c%d=?
    ",a,op,b);
            printf("请输入商和余数,用空格分开
    ");
            scanf("%d %d",&answer,&yu);
             
           if(answer==result&&yu==zy)
             {
                printf("回答正确
    ");
                y++;
                x++;
                m++;
             }
             else
              {
                printf("回答错误,正确的答案是%d %d
    ",result,zy);
                x++;
            }
        }
        else
        {
            printf("%d%c%d=?
    ",a,op,b);
            printf("请输入答案
    ");
            scanf("%d",&answer);
     
           if(answer==result)
             {
                printf("回答正确
    ");
                y++;
                x++;
                m++;
             }
             else
              {
                printf("回答错误,正确的答案是%d
    ",result);
                x++;
            }
        }
        i++;
        if(i==5)
        {
            lu=m/5.0;
            printf("这次做对了%d道题,正确率为%.2f%%",m,lu*100);
            printf("继续吗? Y or N
    ");
            scanf(" %c",&yn);
            if(yn=='n')
            {
                zonglu=(float)y/x;
                printf("一共做了%d道题,做对了%d道题,正确率是%.2f%%",x,y,zonglu*100);
                break;
            }
            if(yn=='y')
            {
                i=0;
                m=0;
            }
        }
     }
        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 a,b,c,x,y,z;
        for(a=0;a<=9;a++)
        {
          for(b=0;b<=9;b++)
            {
               switch(a)
                {
                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(b)
                {
                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;
                }
                c=a+b;
                    switch(c)
                {
                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+z==12&&x!=y)
                {
                    printf("%d+%d=%d
    ",a,b,c);
                }
             }
        }
        return 0;
    }

    实验总结:1.注意switch语句的使用,case后加 break

    2.赋值是一个=     等于是两个==

    3.利用时间产生随机数,注意多重嵌套的关系

    4.交换数值用第三变量

    知识点总结:1.对一个数去掉最后一位用/10,得到最后一位用%10

    2.输入一串字符的经典用法:while((ch=getchar())!=' ')

    3.无限循环中,利用循环体中加break语句跳出循环

  • 相关阅读:
    单例设计模式
    C#做窗体皮肤
    常用的数组的操作
    C#调试方法
    Timer
    程序对对象的字段的代码简写
    nginx upstream的几种配置方式
    ava如何实现系统监控、系统信息收集、sigar开源API的学习(转)
    vsftpd 被动模式与主动模式
    MySQL安装详解(V5.5 For Windows)
  • 原文地址:https://www.cnblogs.com/wjm666/p/6052806.html
Copyright © 2020-2023  润新知