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

第六次作业

一、实验内容

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

代码:

#include<stdio.h>
int main()
{
    int a,b,c,d,e,f;
    for(a=1000;a<10000;a++)
    {
        b=a/1000;
        c=a%1000/100;
        d=a%1000%100/10;
        e=a%1000%100%10;
        f=e*1000+d*100+c*10+b;
        if((b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e)&&a==(4*f))
        {
            printf("原四位数为%d,新四位数为%d\n",a,f);
        }
    }
    return 0;
 }

程序运行结果:

技术分享

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

  样例: 输入123,    输出 6     June

            输入12345,输出 15   ***

代码:

#include<stdio.h>
int main()
{
    long a,sum=0;
    printf("请输入一个多位数\n");
    scanf("%ld",&a);
    while(a)
    {
        sum=sum+a%10;
        a/=10;
    }
    printf("%ld\n",sum);
    switch(sum)
        {
        case 1:printf("January\n");break;
        case 2:printf("February\n");break;
        case 3:printf("March\n");break;
        case 4:printf("April\n");break;
        case 5:printf("May\n");break;
        case 6:printf("June\n");break;
        case 7:printf("July\n");break;
        case 8:printf("August\n");break;
        case 9:printf("September\n");break;
        case 10:printf("October\n");break;
        case 11:printf("November\n");break;
        case 12:printf("December\n");break;
        default:printf("***\n");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,sum=1,n=0;
    printf("给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。\n");
    scanf("%d",&a);
    if(a>=4)
    {
        printf("不存在\n");
    }
    else
    {
        for(b=a;b<6;b++)
        {
            for(c=a;c<6;c++) 
            {
                for(d=a;d<6;d++)
                {
                    if(b!=c&&b!=d&&c!=d)
                    {
                        sum=b*100+c*10+d;
                        printf("%d%\t",sum);
                        n++;
                        if(n%4==0)
                        {
                            printf("\n");
                        }
                    }
                }
            }
        }
    }
    return 0;
}

程序运行结果:

技术分享

技术分享

技术分享

4、自动出题

代码:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    int a,b,result1,result2,answer1,answer2,d,n1,n2,n3=0,n4=0,y,Y,n;
    char x;
    char op1,op2;
    do
    {
        n2=0;
    for (n1=1;n1<=5;n1++)
    {
    srand(time(NULL));
    a=rand()%100+1;
    b=rand()%100+1;
    d=rand()%4+1;
    switch (d)
    {
        case 1:op1=+;result1=a+b;break;
        case 2:op1=-;result1=a-b;break;
        case 3:op1=*;result1=a*b;break;
        case 4:op1=/,op2=%;result1=a/b,result2=a%b;break;
    }
    if (d==1||d==2||d==3)
    {
        printf("%d%c%d=?\n",a,op1,b);
        printf("请输入答案\n");
        scanf("%d",&answer1);
        if (answer1==result1)
        {
            printf("你很棒,做对了!\n");
            n2++;
        }
        else
        {
printf("做错了!,%d%c%d=%d\n",a,op1,b,result1);
        }
      }
      else
      {
          printf("%d%c%d=?\n",a,op1,b);
printf("请分别输入商和余数,用空格分开\n");
        scanf("%d %d",&answer1,&answer2);
        if (answer1==result1&&answer2==result2)
        {
            printf("你很棒,做对了!\n");
            n2++;
        }
        else
        {
printf("做错了!,%d%c%d=%d...%d\n",a,op1,b,result1,result2);
         }
       }
     }
     n3=n3+n2;
printf("本轮一共做对了%d道题,正确率是%.2f%%\n",n2,(n2/5.0)*100);
     printf("输入y继续,输入n结束\n");
     scanf(" %c",&x);
     n4=n4+5;
    }while (x==y||x==Y);
    printf("本次一共做对了%d道题,正确率为%.2f%%",n3,((float)n3/n4)*100);
return 0;
}

程序运行结果:

技术分享技术分享

二、知识点总结(对顺序结构、选择结构、循环结构做综合总结)

1、分别利用枚举法和辗转相除法计算最大公因数。

2、未知循环次数可用while语句。

3、循环嵌套时要注意限制条件

4、continue语句只能用在循环语句中。

5、分情况合理运用if与switch。

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

1、等于用“==”符号,不是“=”。

2、switch语句中不要忘记break。

3、scanf有&而printf没有&

4、/10去掉最后一位,%10得到最后一位。

5、验证实验的合法性。

第六次作业