zoukankan      html  css  js  c++  java
  • 第六次作业

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

    # include <stdio.h>
    int main()
    {
        int a,b,c,d,e,i;
        for(i=4000;i<=10000;i++)
        {
            a=i%10;
            b=i/10%10;
            c=i/100%10;
            d=i/1000;
            e=a*1000+b*100+c*10+d;
            if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d)
            {
                if(i==e*4)
                {
                    printf("%d",i);
                    break; 
                }
            }
        }
     return 0;    
    }

     

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

      样例: 输入123,    输出 6     June

                输入12345,输出 15   ***

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

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

    # include <stdio.h>
    # include <stdlib.h>
    # include <math.h>
    # include <time.h>
    int main()
    {
        int number;
        hh:printf("1.万年历
    2.连续五道计算题
    3.石头剪子布
    4.猜价格
    输入0结束
    ");
        scanf("%d",&number);
        if(number==1)
        {
            system("cls");
              int a,b,d,e=0,f,g=0,x,y=0,z,i;
      char c;
      do
      {
        printf("请输入日期,中间用空格隔开(只需输入年和月):
    ");
        gg:scanf("%d %d",&a,&b);
        if(a<1900||b<1||b>12)
        {
            printf("数据错误,重新输入
    ");
            goto gg;
        }
        if((a%4==0&&a%100!=0)||a%400==0)
        {
            for(i=1900;i<a;i++)
            {    if((i%4==0&&i%100!=0)||i%400==0)
                {
                y=y+1;
                }
            }
            d=366*y+365*(a-1900-y);
            for(i=1;i<b;i++)
            {
                if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
                {
                    e=e+31;
                }
                else if(i==4||i==6||i==9||i==11)
                {
                    e=e+30;
                }
                else
                {
                    e=e+29;
                }
            }
        }
        else
        {
            
            for(i=1900;i<a;i++)
            {
                if((i%4==0&&i%100!=0)||i%400==0)
                {
                    y=y+1;
                }
            }
            d=366*y+365*(a-1900-y);        
            for(i=1;i<b;i++)
            {
                if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
                 {
                     e=e+31;
                 }
                else if(i==4||i==6||i==9||i==11)
                 {
                    e=e+30;
                 }
                else
                 {
                    e=e+29;
                 }
            }
        }
        if(b==1||b==3||b==5||b==7||b==8||b==10||b==12)
        {
            x=d+e;
            f=x%7;
            printf("%d年%d月
    ",a,b);
            printf("星期日 星期一 星期二 星期三 星期四 星期五 星期六
    ");
            for(i=0;i<=f;i++)
            {
                printf("       ");
                g++;
            }
            for(i=1;i<=31;i++)
            {
                printf("%-2d     ",i);
                g++;
                if(g!=0&&g%7==0)
                {
                    printf("
    ");
                }
            }
        }
        else if(b==4||b==6||b==9||b==11)
        {
            x=d+e;
            f=x%7;
            printf("%d年%d月
    ",a,b);
            printf("星期日 星期一 星期二 星期三 星期四 星期五 星期六
    ");
            for(i=0;i<=f;i++)
            {
                printf("       ");
                g++;
            }
            for(i=1;i<=30;i++)
            {
                printf("%-2d     ",i);
                g++;
                if(g!=0&&g%7==0)
                {
                    printf("
    ");
                }
            }
        }
        else
        {
            if((i%4==0&&i%100!=0)||i%400==0)
            {
                x=d+e;
                f=x%7;
                printf("%d年%d月
    ",a,b);
                printf("星期日 星期一 星期二 星期三 星期四 星期五 星期六
    ");
                for(i=0;i<=f;i++)
                {
                    printf("       ");
                    g++;
                }
                for(i=1;i<=29;i++)
                {
                    printf("%-2d     ",i);
                    g++;
                    if(g!=0&&g%7==0)
                    {
                        printf("
    ");
                    }
                }
            }
            else
            {
                x=d+e;
                f=x%7;
                printf("%d年%d月
    ",a,b);
                printf("星期日 星期一 星期二 星期三 星期四 星期五 星期六
    ");
                for(i=0;i<=f;i++)
                {
                    printf("       ");
                    g++;
                }
                for(i=1;i<=28;i++)
                {
                    printf("%-2d     ",i);
                    g++;
                    if(g!=0&&g%7==0)
                    {
                        printf("
    ");
                    }
                }
            }
        }
        printf("
    ");
        printf("是否继续,继续请输入G,结束请输入S
    ");
        scanf(" %c",&c);
        if(c=='G')
        {
             system("cls");
        }
      }while (c=='G');
      if(c=='S')
      {
          system("cls");
          goto hh;
      }
        }
        else if(number==2)
        {
            system("cls");
                int i,ia,ib,ic,id,ig,ih,ij=0,iq=0,ir,ix=0,iy=0,iz=0;
        char ie;
    
        do
        {
            ie='S';
            iy=0;
            for(i=1;i<=5;i++)
            {
                srand(time(NULL));
                ia=rand()%100+1;
                ib=rand()%100+1;
                ig=(rand()%100)/25+1; 
                switch(ig)
                {
                    case 1:printf("%d+%d=?
    请输入答案
    ",ia,ib);
                        scanf("%d",&ic);
                        ir=ia+ib;
                        if(ic==ir)
                        {
                            printf("你很棒,做对了!
    ");
                            iy++;
                            iz++;
                        }
                        else
                        {
                            printf("做错了!,%d+%d=%d
    ",ia,ib,ir);
                            iz++;
                        }
                        break;
                    case 2:    printf("%d-%d=?
    请输入答案
    ",ia,ib);
                        scanf("%d",&ic);
                        ir=ia-ib;
                        if(ic==ir)
                        {
                            printf("你很棒,做对了!
    ");
                            iy++;
                            iz++;
                        }
                        else
                        {
                            printf("做错了!,%d-%d=%d
    ",ia,ib,ir);
                            iz++;
                        }
                        break;
                    case 3:    printf("%d*%d=?
    请输入答案
    ",ia,ib);
                        scanf("%d",&ic);    
                        ir=ia*ib;
                        if(ic==ir)
                        {
                            printf("你很棒,做对了!
    ");
                            iy++;
                            iz++;
                        }
                        else
                        {
                            printf("做错了!,%d*%d=%d
    ",ia,ib,ir);
                            iz++;
                        }
                        break;
                    case 4:printf("%d/%d=?
    请分别输入商和余数(用空格隔开)
    ",ia,ib);
                        scanf("%d %d",&ic,&id);    
                        ir=ia/ib;
                        ix==ia%ib;
                        if(ic==ir&&id==ix)
                        {
                            printf("你很棒,做对了!
    ");
                            iy++;
                            iz++;
                        }
                        else
                        {
                            printf("做错了!,%d/%d=%d......%d
    ",ia,ib,ir,ix);
                            iz++;
                        }
                        break;    
                }
            }
            ij=ij+iy;
            iq=(double)ij/iz*100;
            ih=(double)iy/5*100;
            printf("本次一共做对了%d道题,正确率是%.2f%",iy,ih);
            printf("继续吗?Y or N
    ");
            if(iz>5)
            {
                printf("一共做了%d道题,做对了%d道题,正确率是%.2f%",iz,ij,iq);
            }
            scanf(" %c",&ie);
        }while(ie=='Y');
        if(ie=='N')
        {
            system("cls");
            goto hh;
        }
        }
        else if(number==3)
        {
            system("cls");
                int a,b,x=0,y=0,z=0,i=1;
        char c;
        printf("----猜拳游戏----
    ");
        do
        {
            tt:printf("第%d轮对决
    ",i);
            printf("该你出拳了,请选择:1.石头2.剪刀3.布
    ");
            scanf("%d",&a);
            if(a<1||a>3)
            {
                printf("输入数据错误,请重新输入!
    ");
                goto tt;
            }
            srand(time(NULL));
            b=(rand()%100-2)/33+1;
            if(a==1)
            {
                if(b==1)
                {
                    printf("电脑出石头       你出石头
    ");
                    printf("结果:平局,加油啊!
    ");
                    x++;
                }
                else if(b==2) 
                {
                    printf("电脑出剪刀       你出石头
    ");
                    printf("结果:运气真好,你赢了!");
                    z++;
                }
                else
                {
                    printf("电脑出布         你出石头
    ");
                    printf("结果:运气不太好哦,你输了!
    "); 
                    y++;
                }
                i++; 
                printf("继续下一轮吗?Y(y)orN(n)
    ");
                scanf(" %c",&c); 
            }
            else if(a==2)
            {
                if(b==1)
                {
                    printf("电脑出石头       你出剪刀
    ");
                    printf("结果:运气不太好哦,你输了!
    ");
                    y++;
                }
                else if(b==2) 
                {
                    printf("电脑出剪刀       你出剪刀
    ");
                    printf("结果:平局,加油啊!");
                    x++;
                }
                else
                {
                    printf("电脑出布         你出剪刀
    ");
                    printf("结果:运气真好,你赢了!
    "); 
                    z++;
                }
                i++; 
                printf("继续下一轮吗?Y(y)orN(n)
    ");
                scanf(" %c",&c);    
            }
            else
            {
                if(b==1)
                {
                    printf("电脑出石头       你出布
    ");
                    printf("结果:运气真好,你赢了!
    ");
                    z++;
                }
                else if(b==2) 
                {
                    printf("电脑出剪刀       你出布
    ");
                    printf("结果:运气不太好哦,你输了!");
                    y++;
                }
                else
                {
                    printf("电脑出布         你出布
    ");
                    printf("结果:平局,加油啊!
    "); 
                    x++;
                }
                i++; 
                printf("继续下一轮吗?Y(y)orN(n)
    ");
                scanf(" %c",&c);    
            } 
        }while(c=='y'||c=='A');
        i=i-1;
        printf("你选择了退出游戏!
    ");
        printf("对决战况:
    ");
        printf("对决次数:%d  平局次数:%d  电脑得分:%d  你得分:%d
    ",i,x,y,z); 
        if(y>z)
        {
            printf("最终结果:你输了!
    ");
        }
        else if(y==z)
        {
            printf("最终结果:平局!
    ");
        }
        else
        {
            printf("最终结果:你赢了!
    ");
        }
        if(c=='N'||c=='n')
        {
            system("cls");
            goto hh;
        }
        }
        else if(number==4)
        {
            system("cls");
                int a,i,result;
        char b;
        srand(time(NULL));
        a=rand()%100+1;
        do
        {
            for(i=1;i<=10;i++)
            {
                printf("你猜商品的价格是多少:
    ");
                scanf("%d",&result);
                if(a==result)
                {
                    printf("恭喜你猜对了!!!
    ");
                    exit(0);
                }
                else
                {
                    printf("运气不太好哦!猜错了。你还有%d次机会
    ",10-i);
                }
            }
            printf("如果继续请输入G,结束请输入S
    ");
            scanf(" %c",&b);
        }while(b=='G');
        if(b=='S')
        {
            system("cls");
            goto hh;
        }
        }
        else if(number==0)
        {
            exit(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,A,B,C;
        for(a=0;a<9;a++)
        {
            if(a==1)
            {
                A=2;
            }
            else if(a==2||a==3||a==5)
            {
                A=5;
            }
            else if(a==4)
            {
                A=4;
            }
            else if(a==6||a==9||a==0)
            {
                A=6;
            }
            else if(a==7)
            {
                A=3;
            }
            else
            {
                A=7;
            }
            for(b=0;b<9;b++)
            {
                if(b==1)
                {
                    B=2;
                }
                else if(b==2||b==3||b==5)
                {
                    B=5;
                }
                else if(b==4)
                {
                    B=4;
                }
                else if(b==6||b==9||b==0)
                {
                    B=6;
                }
                else if(b==7)
                {
                    B=3;
                }
                else
                {
                    B=7;
                }
                for(c=0;c<9;c++)
                {
                    if(c==1)
                    {
                        C=2;
                    }
                    else if(c==2||c==3||c==5)
                    {
                        C=5;
                    }
                    else if(c==4)
                    {
                        C=4;
                    }
                    else if(c==6||c==9||c==0)
                    {
                        C=6;
                    }
                    else if(c==7)
                    {
                        C=3;
                    }
                    else
                    {
                        C=7;
                    }
                    if(a+b==c&&A+B+C==12)
                    {
                        printf("%d+%d=%d
    ",a,b,c);
                    }
                }
            }
        }
     return 0;    
    }

     知识点总结:

    1.熟练运用循环嵌套;

    2.分情况合理运用if与switch;

    3.我个人认为在判断输入数据合法性性时,如果不满足条件可以用goto让程序自动跳到开头位置,就不用在关了从新开了;

    4.清屏system("cls");

    5.清除缓存区fflush(stdin);

    实验总结:

    1.循环的连环嵌套适合解决一些需要分层次计算的问题;

    2.我感觉goto在很多时候都有不错的用处,随心所欲,想跳哪就跳哪......(看情况用吧,自己别乱了就行);

    3.尽可能的简化自己的程序。

  • 相关阅读:
    Spring Security
    用过sessionid防钓鱼
    request获取json
    相对于Statement,PreparedStatement的优点是什么?
    jquery中$.get()提交和$.post()提交有区别吗?
    相对于Statement,PreparedStatement的优点是什么?
    什么是Redis?
    如何解决表单提交的中文乱码问题
    execute,executeQuery,executeUpdate的区别是什么?
    根据你以往的经验简单叙述一下MYSQL的优化
  • 原文地址:https://www.cnblogs.com/w123/p/6045200.html
Copyright © 2011-2022 走看看