• 2016-11-10


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

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

    总结:注意该四位的首项和末项不能是0

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

      样例: 输入123,    输出 6     June

                输入12345,输出 15   ***

    #include <stdio.h>
    int main()
    {
        long n,m,sum=0;
        scanf("%ld",&n);
        while(n>0)
        {
            m=n%10;
            n=n/10;
            sum=sum+m;
        }
        switch(sum)
        {
            case 1:printf("1 January
    ");break;
            case 2:printf("2 February
    ");break;
            case 3:printf("3 March
    ");break;
            case 4:printf("4 April
    ");break;
            case 5:printf("5 May
    ");break;
            case 6:printf("6 June
    ");break;
            case 7:printf("7 July
    ");break;
            case 8:printf("8 August
    ");break;
            case 9:printf("9 September
    ");break;
            case 10:printf("10 October
    ");break;
            case 11:printf("11 November
    ");break;
            case 12:printf("12 December
    ");break;
            default :printf("%d   ***
    ",sum);break;
        }
        return 0;
    }

    总结:注意输出的数可能过大可以用long型

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

    总结:行末不能有空格换行的时候注意将空格清除

    4.万年历

    #include <stdio.h>
    int main()
    {
        int year,month,year1,month1,day=0,day1,maxday=0,maxday1,i,j;
        printf("请输入年月,用空格分开
    ");
        scanf("%d%d",&year1,&month1);
        while(year1<1900||month1<1||month1>12)
        {
            printf("Error  请重新输入 
    ");
            scanf("%d%d",&year1,&month1);
        }
        for(year=1900;year<year1;year++)
        {
            if(year%4==0&&year%100!=0||year%400==0)
            {
                day=day+366;
            }
            else
            {
                day=day+365;
            }
        }
        for(month=1;month<month1;month++)
        {
            if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
            {
                maxday=maxday+31;
            }
            else if(month==4||month==6||month==9||month==11)
            {
                maxday=maxday+30;
            }
            else if(month==2)
            {
                if(year1%4==0&&year1%100!=0||year1%400==0)
                {
                    maxday=maxday+29;
                }
                else
                {
                    maxday=maxday+28;
                }
            }
        }
        day1=day+maxday;
        printf("%d
    ",day1%7);
        printf("
                ********%d年%d月********
    ",year1,month1);
        printf("星期日  星期一  星期二  星期三  星期四  星期五  星期六
    ");
        switch(day1%7)
        {
            case 0: printf("	");j=1;break;
            case 1: printf("		");j=2;break;
            case 2: printf("			");j=3;break;
            case 3: printf("				");j=4;break;
            case 4: printf("					");j=5;break;
            case 5: printf("						");j=6;break;
            case 6: j=0;break;
        }
        if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
        {
            maxday1=31;
        }
        else if(month==4||month==6||month==9||month==11)
        {
            maxday1=30;
        }
        else if(month==2)
        {
            if(year1%4==0&&year1%100!=0||year1%400==0)
            {
                maxday1=29;
            }
            else
            {
                maxday1=28;
            }
        }
        for(i=1;i<=maxday1;i++)
        {
            printf("  %2d    ",i);
            j++;
            if(j%7==0)
            {
                printf("
    ");
            }
        }
        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(A+B==C&&a+b+c==12&&A!=B)
                    {
                        printf("%d+%d=%d
    ",A,B,C);
                    }
                }
         return 0;
    }

    总结:注意控制每个数字的火柴棍根数

     知识点总结:

    1.使用do  while循环的时候要注意循环至少执行一次

    2.好久没用switch语句了  总是忘了后面的break;

    3.穷举法先进行内层循环  之后再进行外层循环

    4.注意循环变量不要写混了

    5.注意算式在循环中的先后顺序  两个数互换的时候不要忘记中间变量

    6.注意while循环成立的条件

    7.编程时先判断不符的情况,强制输出,若符合就执行,注意大括号内的语句

    8.要注意空格的使用 ,输出字符后面,输入字符后边 少输入空格到最后找错不太容易

    9.

    m=0;

    while(n!=0)    

    {                                      

    m=m*10+n%10;       

    n=n/10;                     

    }

    10.循环嵌套时一定注意变量的使用,尽量不要在两个循环体中使用同一个变量

    11.有小数点要用float或者double

  • 相关阅读:
    人生是马拉松,胜者不一定是跑得最快的
    二.JSP开发过程中遇到的问题及解决
    一.JSP开发的工具下载与环境搭建
    将文件隐藏到图片中的方法与一键合成工具
    VC6兼容性及打开文件崩溃问题解决
    windows10UWP开发真机调试时遇到DEP6100和DEP6200解决办法
    Vs2015 win10虚拟机启动问题:无法设置UDP端口 解决方法 合集(转载)
    10个维修中最常见的蓝屏代码,值得收藏!
    [idea]添加jar包的方法
    [idea]创建一个控制台程序
  • 原文地址:https://www.cnblogs.com/333xar/p/6048992.html
Copyright © 2020-2023  润新知