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

    一、实验内容        

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

    代码:

    #include<stdio.h>
    int main()
    {    int a,b,c,d,n1,n2;
         for(a=1;a<10;a++)
         for(b=0;b<10;b++)
         for(c=0;c<10;c++)
         for(d=1;d<10;d++)
         {
             if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d)
                 {
                     n1=a*1000+b*100+c*10+d;
                     n2=d*1000+c*100+b*10+a;
                     if(n1==4*n2)
                     {
                           printf("这个四位数是%d
    ",n1);
                     }
                 }
        }
        return 0;
    } 

    程序运行结果:

    2.实验要求:

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

      样例: 输入123,    输出 6     June

                输入12345,输出 15   ***

    代码:

    #include<stdio.h>
    int main()
    {
        int x,m,sum=0;
        printf("请输入一个多位数:
    ");
        scanf("%d",&x);
        while(x!=0)
        {
            m=x%10;
            sum=sum+m;
            x=x/10;
        }
        printf("sum=%d
    ",sum);
        if(sum==1)
            printf("January
    ");
        else if(sum==2)
            printf("February
    ");
        else if(sum==3)
            printf("March
    ");
        else if(sum==4)
            printf("April
    ");
        else if(sum==5)
            printf("May
    ");
        else if(sum==6)
            printf("June
    ");
        else if(sum==7)
            printf("July
    ");
        else if(sum==8)
            printf("August
    ");
        else if(sum==9)
            printf("Septemper
    ");
        else if(sum==10)
            printf("Octorber
    ");
        else if(sum==11)
            printf("November
    ");
        else if(sum==12)
            printf("December
    ");
        else
            printf("***");
    }

    程序运行结果:

    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,i=0;
        printf("请输入一个不超过6的正整数:
    ");
        scanf("%d",&A);
        if(A>0&&A<=6)
        {
            for(b=A;b<=A+3;b++)
            for(c=A;c<=A+3;c++)
            for(d=A;d<=A+3;d++)
            {
                if(b!=c&&b!=d&&c!=d)
                {
                    printf("%d",b*100+c*10+d);
                    i++;
                    if(i%6!=0)
                    {
                        printf(" ");
                    }
                    else
                    {
                        printf("
    ");
    
                    }
                }
            }
        }
        else
        {
            printf("error
    ");
        }
        return 0;
    }

    程序运行结果:

    4.实验要求:自动出题器

    代码:

    #include<stdio.h>
    #include<time.h>
    #include<stdlib.h>
    int main()
    {
        int a,b,c,d1,d2,g,s1,s2,n=0;
        char op,op1='Y';
        float k;
        while(op1=='Y')
        {
            for(n=1;n<=5;n++)
            {
                srand(time(NULL));
                a=rand()%100+1;
                b=rand()%100+1;
                c=rand()%100+1;
                g=0;
                if(c>=1&&c<=25)
                {
                    op='+';
                    printf("%d+%d=?",a,b);
                    printf("请输入你的答案:
    ");
                    scanf("%d",&s1);
                    s2=a+b;
                    if(s1==s2)
                    {
                        printf("回答正确");
                        g++;
                    }
                    else
                    {
                        printf("回答错误,正确答案是%d
    ",s2);
                    }
                }
                if(c>=26&&c<=50)
                {
                    op='-';
                    printf("%d-%d=?",a,b);
                    printf("请输入你的答案:
    ");
                    scanf("%d",&s1);
                    s2=a-b;
                    if(s1==s2)
                    {
                        printf("回答正确");
                        g++;
                    }
                    else
                    {
                        printf("回答错误,正确答案是%d
    ",s2);
                    }
                }
                if(c>=51&&c<=75)
                {
                    op='*';
                    printf("%d*%d=?",a,b);
                    printf("请输入你的答案:
    ");
                    scanf("%d",&s1);
                    s2=a*b;
                    if(s1==s2)
                    {
                        printf("回答正确");
                        g++;
                    }
                    else
                    {
                        printf("回答错误,正确答案是%d
    ",s2);
                    }
                }
                if(c>=76&&c<=100)
                {
                    op='/';
                    printf("%d/%d=?",a,b);
                    printf("请输入商和余数:
    ");
                    scanf("%d%d",&s1,&d1);
                    s2=a/b;
                    d2=a%b;
                    if(s1==s2&&d1==d2)
                    {
                        printf("回答正确");
                        g++;
                    }
                    else
                    {
                        printf("回答错误,商是%d,余数是%d
    ",s2,d2);
                    }
                }
            }
            k=(float)g/5;
            {
                printf("做对%d次,正确率%.2f",g,k);
            }
            printf("是否继续Y or N
    ");
            scanf("%c",&op1);
        }
        return 0;
    }

    程序运行结果:

    二、知识点总结

    1.对于有些题可以先穷举后优化减少循环次数;

    2.求a和b最大公约数:

    法一:设i为1; 如果a和b都能被这个i整除,则记下这个i; i+1重复上一步,直到等于a或b; i为最大公约数;

    法二:辗转相除法:a/b,令r为所得余数(0<=r<b)若r=0,算法结束b为答案;   互换:b→a,r→b,并返回第一步

    三、实验总结

    1,随机数字的表示为srand(time(NULL)); a=rand()%100+1;

    2,注意循环语句中大括号的位置和各个语句的位置;

    3,程序结束时大括号填齐;

    4,注意每条语句后是否需要加分号;

    5,注意每个赋值式子的位置。



  • 相关阅读:
    java读写文本文件
    django学习<二>:连接数据库
    【MongoDB】递归获取字段更新表达式,更新复杂数据类型对象
    【MongoDB】C#中的Mongo数据类型转换
    【MongoDB】 基于C#官方驱动2.2版的封装类
    【Python】 属性的 get 与 set 方法
    【基础知识】UML基础
    【C#】 知乎用户网络爬虫
    【C#】MVC项目中搭建WebSocket服务器
    【MongoDB】 Windows 安装
  • 原文地址:https://www.cnblogs.com/zhao-1184346113/p/6046513.html
Copyright © 2011-2022 走看看