第六次作业

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.尽可能的简化自己的程序。

原文地址:https://www.cnblogs.com/w123/p/6045200.html