• 第六次作业


    一、实验内容   

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

    #include <stdio.h>
    int main()
    {
        int number,nnumber;
        for(number=1000;number<=9999;number++)
        {
            nnumber=number%10*1000+number%100/10*100+number%1000/100*10+number/1000;
            if(number==4*nnumber)
            {
                printf("%d
    ",number);
            }
        } 
         return 0;
     } 

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

      样例: 输入123,    输出 6     June

                输入12345,输出 15   ***

    #include <stdio.h>
    int main()
    {
        int number,num,sum=0,i;
        printf("请输入一个多位数:");
        scanf("%d",&number);
        if(number<10)
        {
            printf("输入的数据有误"); 
         }
        else if(number>=10)
        { 
        while(number>0)
        {
            num=number;
            sum=sum+num%10;
            number=number/10;
        }
        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 n,n1,n2,n3,i=0;
        printf("请输入入一个不大于6的正整数:");
        scanf("%d",&n);
        if(n>6||n<=0)
        printf("输入的数据有误");
        else
        {
            for(n1=n;n1<=(n+3);n1++)
            {
                for(n2=n;n2<=(n+3);n2++)
                {
                    for(n3=n;n3<=(n+3);n3++)
                    {
                        if(n1!=n2&&n1!=n3&&n2!=n3)
                        {
                            printf("% d",n1*100+n2*10+n3);
                            i++;
                            if(i%6==0)
                            printf("
    ");
                        }
                    }
                }
            }
         } 
         return 0;
     } 

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

    #include<stdio.h>
    #include<time.h>
    int main()
    {
        int w,c,success=0,fail=0,p=0,z=1,s,j,b;
        char Q;    
        do{
            srand(time(NULL));
            c=rand()%3+1;
            printf("*****猜拳小游戏*****
    ");
            printf("第%d轮对决
    ",z); 
            printf("该你出拳了,请选择:1.石头 2.剪刀 3.布
    ");
            scanf("%d",&w);
            if(w>3||w<0)
            {
                printf("数据错误,请重新输入");
            }
            else if(w==1)
            {
                z++;
                switch(c)
                {
                    case 1 : printf("你出了石头,电脑出石头
    平局,加油啊
    "); p++;
                    break;
                    case 2 : printf("你出了石头,电脑出剪刀
    运气真好,你赢了
    "); success++;
                    break;
                    case 3 : printf("你出了石头,电脑出布
    很遗憾,你输了
    "); fail++;
                    break;
                }            
             }
             else if(w==2)
            {
                 z++;
                switch(c)
                {
                    case 1 : printf("你出了剪刀,电脑出石头
    很遗憾,你输了
    "); fail++;
                    break;
                    case 2 : printf("你出了剪刀,电脑出剪刀
    平局,加油啊
    "); p++;
                    break;
                    case 3 : printf("你出了剪刀,电脑出布
    运气真好,你赢了
    "); success++;
                    break;
                }
             } 
             else if(w==3)
            {
                 z++;
                switch(c)
                {
                    case 1 : printf("你出了布,电脑出石头
    运气真好,你赢了
    "); success++;
                    break;
                    case 2 : printf("你出了布,电脑出剪刀
    很遗憾,你输了
    "); fail++;
                    break;
                    case 3 : printf("你出了布,电脑出布
    平局,加油啊
    "); p++;
                    break;
                }
            }  
            printf("继续下一轮游戏吗?Y(y)orN(n)
    ");
            scanf(" %c",&Q);
        }while(Q=='Y'||Q=='y');    
        printf("对决战况:
    作战次数:%d   平局次数:%d   电脑得分:%d   你得分:%d
    ",z-1,p,fail,success);
        if(success>fail)
            printf("最终结果:你赢了
    ");
        else if(success<fail)
            printf("最终结果:你输了
    ");
        else if(success=fail)
            printf("最终结果:平局
    ");
        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,a1,b1,c1;
        for(a=0;a<=9;a++)
        {
            for(b=0;b<=9;b++)
            {
                for(c=0;c<=9;c++)
                {
                    switch(a)
                    {
                        case 1: a1=2; break;
                        case 2:
                        case 3:
                        case 5: a1=5; break;
                        case 4: a1=4; break;
                        case 6:
                        case 9: 
                        case 0: a1=6; break;
                        case 7: a1=3; break;
                        case 8: a1=7; break;
                    }
                    switch(b)
                    {
                        case 1: b1=2; break;
                        case 2:
                        case 3:
                        case 5: b1=5; break;
                        case 4: b1=4; break;
                        case 6:
                        case 9: 
                        case 0: b1=6; break;
                        case 7: b1=3; break;
                        case 8: b1=7; break;
                    }
                    switch(c)
                    {
                        case 1: c1=2; break;
                        case 2:
                        case 3:
                        case 5: c1=5; break;
                        case 4: c1=4; break;
                        case 6:
                        case 9: 
                        case 0: c1=6; break;
                        case 7: c1=3; break;
                        case 8: c1=7; break;
                    }
                    if(a+b==c&&a1+b1+c1==12)
                    {
                        printf("%d+%d=%d
    ",a,b,c);
                    }
                }
            }
        }
        return 0;
     } 

    二、知识点总结

    1牢记选择结构与循环结构的几种形式

    2分清在什么情况更适合使用什么样的循环结构

    三、实验总结

    1:< <= > >=的运算优先级比==  !=高

    2:switch语句具有穿透性,可以用break跳出

    3:可以新增一个变量进行求余来实现输出结果的换行

    4:不同编译器之间存在着差异,写好程序后要在不同编译器都测试一遍

    5:在某些情况下,用switch case语句要比if else语句更便利

  • 相关阅读:
    HDU-2018中国大学生程序设计竞赛-网络选拔赛-1004-Find Integer
    最短路径--Floyd、Dijkstra、Bellman、SPFA算法
    最小生成树--Prim算法和Kruskal算法
    【原创】KMP算法详解
    MySQL 常见问题
    Gym 101652P:Fear Factoring 数论
    POJ 1426 Find The Multiple(kuangbin搜索专题)
    并查集(Union Find)的实现及代码应用
    SDUT 3403 数据结构实验之排序六:希尔排序
    SDUT 3402 数据结构实验之排序五:归并求逆序数
  • 原文地址:https://www.cnblogs.com/UUZsama/p/6044775.html
Copyright © 2020-2023  润新知