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

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

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

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

      样例: 输入123,    输出 6     June

                输入12345,输出 15   ***

    #include<stdio.h>
    int main()
    {
        int a,sum=0;
        printf("请输入一个多位数
    ");
        scanf("%d",&a);
        while(a<=0)
        {
            printf("输入错误。
    ");
            scanf("%d",a);
        }
    
        while(a>0)
        {
            sum=sum+a%10;
            a=a/10;
        }
        printf("%d
    ",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位数。

    #include<stdio.h>
    int main()
    {
        int i=0,x,b,c,d,e;
        printf("输入一个不超过6的正整数A。
    ");
        scanf("%d",&x);
        if(x<=0||x>=6)
        {
            printf("输入错误,请重新输入。
    ");
        }
        else
        {
            for(b=x;b<x+4;b++)
            {
                for(c=x;c<x+4;c++)
                {
                    for(d=x;d<x+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<time.h>
    int main()
    {    int a,b,i;
        char x;
        srand(time(NULL));
        a=rand()%100+1;
        do
        { 
        printf("请输入价格
    ");
        scanf("%d",&b);
        for(i=1;i<10;i++)
        {if(b>100||b<0)
            {
            printf("错误,请重新输入
    ");
            scanf("%d",&b);
            } 
         else
        {if(a==b)
            {
            printf("价格相等,商品是你的,价格就是%d元,你用了%d次。
    ",a,i);
            break; 
            }
        else if(a>b)
            {
            printf("错误,你猜的太小了
    ");
            scanf("%d",&b);    
            }
        else
            {
            printf("价格错误了,你猜的太大了
    ");    
            scanf("%d",&b);
            }
        } 
        }
            if(i==10&&a!=b)
        {
            printf("10次机会用完了,价格是%d元。
    ",a);
        }
        printf("继续吗?Y or N
    "); 
        scanf(" %c",&x);
        }
        while(x=='Y'||x=='y');
        printf("一共猜了%d次!
    ",i);
        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++)
        for(b=0;b<=9;b++)
        for(c=0;c<=9;c++)
        {
            switch(a)
            {
                case 0:A=6;break;
                case 1:A=2;break;
                case 2:A=5;break;
                case 3:A=5;break;
                case 4:A=4;break;
                case 5:A=5;break;
                case 6:A=6;break;
                case 7:A=3;break;
                case 8:A=7;break;
                case 9:A=6;break;
            }
            switch(b)
            {
                case 0:B=6;break;
                case 1:B=2;break;
                case 2:B=5;break;
                case 3:B=5;break;
                case 4:B=4;break;
                case 5:B=5;break;
                case 6:B=6;break;
                case 7:B=3;break;
                case 8:B=7;break;
                case 9:B=6;break;
            }
            switch(c)
            {
                case 0:C=6;break;
                case 1:C=2;break;
                case 2:C=5;break;
                case 3:C=5;break;
                case 4:C=4;break;
                case 5:C=5;break;
                case 6:C=6;break;
                case 7:C=3;break;
                case 8:C=7;break;
                case 9:C=6;break;
            }
            if(c==a+b&&A+B+C==12&&a!=b)
            {
                printf("%d+%d=%d
    ",a,b,c);
            }
        }
        return 0;
    }

     

     二、知识点总结(主要用到的语句)

    1.switch   case语句

    switch(表达式)

    {

          case常量表达式1

                 语句 1

               。。。。

          case常量表达式n

                 语句 n

           default

                  语句n+1

    }

    case后的各常量表达式值不能相同

    switch后面表达式类型一般为整型或字符型 整型:int short long unsigned 字符型 char

    2for语句

    for(表达式1;表达式2;表达式3)

    (1)计算表达式1的值

    (2)判断表达式2的值 如果它是真,执行循环体中的代码

    (3)执行完一次代码后求解3

    (4)重复(2)(3)直到2的表达式为假

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

    思路不清晰 捋一下思路

    1.第三题中的三个for 可以求出4个数字中选出的不同的三个数并让他们组合起来

    2附加题中 ABC是火柴棍数 用switch case语句求出ABC出现的值 然后abc是数字 必须满足a+b=c 

    c==a+b&&A+B+C==12&&a!=b) 由此可以可出

    3猜价格用的是do while语句  镶嵌的if 语句 分三种情况 1是猜大了 2是猜小了 3是一样 然后判断次数 

  • 相关阅读:
    Apache基本设置
    主流无线传输技术GPRS与CDMA之对比
    光波分复用系统(WDM)技术要求
    IPv6报头结构以及与IPv4的比较
    网络设计师训练资料
    802.11b/11a/11g横向比较
    交换机术语
    无线局域网技术白皮书
    无线网络基础知识
    校验码
  • 原文地址:https://www.cnblogs.com/-lyf/p/6057917.html
Copyright © 2011-2022 走看看