第六次作业

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是一样 然后判断次数 

原文地址:https://www.cnblogs.com/-lyf/p/6057917.html