首页 > 代码库 > 第六次作业

第六次作业

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

#include<stdio.h>
int main()
{
    int i,a,b,c,d,e,x;
    for(i=1000;i<=9999;i++)
    {
        a=i/1000;
        b=i%1000/100;
        c=i%100/10;
        d=i%10;
        e=a;
        a=d;
        d=e;
        e=b;
        b=c;
        c=e;
        x=a*1000+b*100+c*10+d;
        if(i==4*x)
        {
            printf("输入的四位数的%d",i);
        }
    }
    
    return 0;
}

技术分享

 

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

  样例: 输入123,    输出 6     June

            输入12345,输出 15   ***

 

#include<stdio.h>
int main()
{
    int a,sum=0,c;
    printf("请输入一个多位数字");
    scanf("%d",&a);
    while(a>0)
    {
        c=a%10;
        a=a/10;
        sum=sum+c;
    }
    if(sum>=1&&sum<=12)
    {
        printf("%d\n",sum);
    }
    switch(sum)
    {
        case 12:printf("Dec\n");break;
        case 11:printf("Eve\n");break;
        case 10:printf("Oct\n");break;
        case 9:printf("Sep\n");break;
        case 8:printf("Aug\n");break;
        case 7:printf("July\n");break;
        case 6:printf("June\n");break;
        case 5:printf("May\n");break;
        case 4:printf("Apirl\n");break;
        case 3:printf("Mar\n");break;
        case 2:printf("Feb\n");break;
        case 1:printf("Jan\n");break;
        default :printf("***\n");
    }
    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 i,a,b,c,d,e,m,n,k=0;
    printf("请输入一个不超过6的正整数A\n");
    scanf("%d",&d);
    while(d>6||d<1)
    {
        printf("error\n请重新输入\n");
        scanf("%d",&d);
    }
    if(d>=1&&d<=6)
    {
        a=d+1;
        b=a+1;
        c=b+1;
    }
    for(i=d*100;i<1000;i++)
    {
        e=i/100;
        m=i%100/10;
        n=i%10;
        if(e!=m&&e!=n&&m!=n&&m>=d&&m<=c&&e>=d&&e<=c&&n>=d&&n<=c)
        {
            printf("%4d",i);
            k++;
            if(k%6==0)
            {
                printf("\n");
            }
        }
    }
    return 0;
}

技术分享

 实验总结:学会用switch case。我觉得有时候用这个比用if判断简单。第二题如果按照我开始的想法用if的话,会有很多条语句,但是改用switch case之后就显得简单了很多。然后还有第三题不会做,同学讲给我的,感觉逻辑不清楚。自己就想不到这样写,还需要思考。

第六次作业