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

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

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

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

      样例: 输入123,    输出 6     June

                输入12345,输出 15   ***

    #include<stdio.h>
    int main()
    {
        int number,a,sum=0;
        printf("请输入任意一个多位的数字。
    ");
        scanf("%d",&number);
        while(number<0)
        {
            printf("输入错误,请重新输入。
    ");
            scanf("%d",&number);
        }
        while(1)
        {
            if(number==0)
            {
                break;
            }
            a=number%10;
            sum=sum+a;
            number=number/10;
        } 
        switch(sum)
        {
            case 1:printf("%d   January",sum);break;
            case 2:printf("%d   February",sum);break;
            case 3:printf("%d   March",sum);break;
            case 4:printf("%d   April",sum);break;
            case 5:printf("%d   May",sum);break;
            case 6:printf("%d   Jun",sum);break;
            case 7:printf("%d   July",sum);break;
            case 8:printf("%d   August",sum);break;
            case 9:printf("%d   September",sum);break;
            case 10:printf("%d   October",sum);break;
            case 11:printf("%d   November",sum);break;
            case 12:printf("%d   December",sum);break;
            default:printf("%d   ***",sum);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 number,i,a,b,c,n,d;
        printf("输入一个不超过6的正整数。
    ");
        scanf("%d",&number);
        while(number<=0||number>6)
        {
            printf("输入错误,请重新输入。
    ");
            scanf("%d",&number);
        }
        n=number;
        for(i=1;i<=4;i++,n++)
        {    
            d=1;
            for(a=n*100;a<=n*100+99;a++)    
            {
                b=a%100/10;
                c=a%10;
                if((b==number||b==number+1||b==number+2||b==number+3)&&(c==number||c==number+1||c==number+2||c==number+3)&&b!=c&&c!=n&&b!=n)
                {
                    printf("%d",a);
                    if(d!=6)
                    printf(" ");
                    d++;
                }
            }
            printf("
    ");
        }
        return 0;
    } 

    实验4.:万年历

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
        int year,year1,month,sum,sum1,sum2,i,n,zong,h;
        printf("请输入年份个月份,用空格分开。
    ");
        scanf("%d%d",&year,&month);
        while(year<1900||month<1||month>12)
        {
            printf("数据错误,请重新输入。
    ");
            scanf("%d%d",&year,&month);
        }
        sum1=0;
        sum2=0;
        year1=year;
        for(year1=year1-1;year1>=1900;year1--)
        {
            if(year1%4==0&&year1%100!=0||year1%400==0)
            {
                sum1=sum1+366;
            }
            else
            {
                sum1=sum1+365;
            }
        }
        
        for(i=1;i<month;i++)
        {
            if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
            {
                sum2=sum2+31;
            }
            else if(i==4||i==6||i==9||i==11)
            {
                sum2=sum2+30;
            }
            else if(i==2)
            {
                if(year%4==0&&year%100!=0||year%400==0)
                {
                    sum2=sum2+29;
                }
                else
                {
                    sum2=sum2+28;
                }
            }
        }       
        sum=sum1+sum2;
        system("cls");
        printf("%d年%d月
    ",year,month);
        printf("星期日:星期一:星期二:星期三:星期四:星期五:星期六
    ");
        switch(sum%7)
            {
        /*1*/   case 0:printf("	");h=2;break;
                case 1:printf("		");h=3;break;
                case 2:printf("			");h=4;break;
                case 3:printf("				");h=5;break;
                case 4:printf("					");h=6;break;
                case 5:printf("						");h=7;break;
                case 6:h=1;break;
            } 
        if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
        {
            zong=31;
        }        
        else if(month==4||month==6||month==9||month==11)
        {
            zong=30;
        }
        else if(month==2)    
        {
            if(year%4==0&&year%100!=0||year%400==0)
            {
                zong=29;
            }
            
            else 
            {
                zong=28;
            }
        }
        for(n=1;n<=zong;n++,h++)
        {
            printf("  %2d    ",n);
            if(h%7==0)
            {
            printf("
    ");        
            }
        }
        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.选择结构和循环结构中条件非零便是真。

    2.用循环求倒序数:

    sum=0;

    while(a!=0)    

    {                             

    b=a%10;                   

    sum=sum*10+b;       

    a=a/10;                     

    }

    3.  实数比较不用直接用!=或==,要用做差如if(fabs(a-1.2)<1e-6)  。

    4.平方根函数:sqrt();清缓存函数:fflush(stdin);清屏函数:system("cls");

    5.表达式1?表达式2:表达式3   (如果表达式一成立,执行表达式二,否则执行表达式三)

    6.循环体,要找适合的情况,根据特点选择使用哪个更适合,在循环体中分清break,和continue的区别。  

    7.求阶乘时因数值可能过大,应定义为实数型,输出格式:%.0f  。

    8.对一个数去掉最后一位/10,得到最后一位%10;

    9.输入一串字符的经典用法:while((ch=getchar())!=' ');               

    试验总结:

    1.循环嵌套时一定注意变量的使用,尽量不要在两个循环体中使用同一个变量,或者注意初赋值。

    2.出现了优先级问题时,适当使用()解决。

    3.一定不能将等于写成赋值。

  • 相关阅读:
    Qt内存回收机制
    Qt坐标系统
    Qt信号与槽的使用
    Qt初始化代码基本说明
    Qt下载、安装及环境搭建
    搭建CentOs7的WebServer
    Laying out a webpage is easy with flex
    Let's write a framework.
    使用go语言开发一个后端gin框架的web项目
    个人总结的J2EE目前知道的涵盖面,从大方向入手,多写单元测试,加强基础
  • 原文地址:https://www.cnblogs.com/TX980502/p/6048111.html
Copyright © 2011-2022 走看看