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

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

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

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

      样例: 输入123,    输出 6     June

                输入12345,输出 15   ***

    #include <stdio.h>
    int main()
    {
        int a,sum=0,x,y;
        printf("请输入一个数字
    ");
        scanf("%d",&a);
        while(a>0)
        {
            x=a/10;
            y=a%10;
            sum=sum+y;
            a=x;
        }
        if(sum<=12&&sum>0)
        {
            switch(sum)
            {
                case 1 : printf("January
    ");
                    break;
                case 2 : printf("February");
                    break;
                case 3 : printf("March");
                    break;
                case 4 : printf("April");
                    break;
                case 5 : printf("May");
                    break;
                case 6 : printf("June");
                    break;
                case 7 : printf("July");
                    break;
                case 8 : printf("August");
                    break;
                case 9 : printf("September");
                    break;
                case 10 : printf("October");
                    break;
                case 11 : printf("November");
                    break;
                case 12 : printf("December");
                    break;
            }
        }
        else
        {
            printf("
    ***");
        }
        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,e,f;
        printf("请输入一个不大于6的正整数
    ");
        scanf("%d",&a);
        system("CLS");
        printf("输入的数字为%d
    ",a);
        if(a>6||a<0)
        {
            printf("输入的数字有误
    ");
        }
        else
        {
            for(b=a;b<=(a+3);b++)                    /*百位数定义*/ 
            {
                for(c=a;c<=(a+3);c++)               /*十位定义*/ 
                {
                    for(d=a;d<=(a+3);d++)          /*个位定义*/ 
                    {
                        if(b!=c&&c!=d&&b!=d)
                        {
                            e=b*100+c*10+d;
                            printf("%d ",e);
                            f++;
                            if(f%6==0)
                            {
                                printf("
    ");
                            }
                        }
                    }
                }
            }
        }
        return 0;
    } 

    万年历

    #include <stdio.h>
    int main()
    {
        int year,month,day,a,b,c,sum,m,m2,sum2,q,t,x;
        printf("请输入年月,中间用空格分开
    ");
        while(a!=1)
        {
            scanf("%d%d",&year,&month);
            if((month<1||month>12)||year<1900)
            {
                printf("输入的时间有误,请重新输入
    ");
                continue;
            }
                else
            {
                break;
            }
        }
        system("CLS");               /*清屏*/ 
        day=0;                                /*1900年到输入年数的天数*/ 
        for(b=1900;b<=year;b++)
        {
            if((year%4==0&&year%100!=0)||(year%400==0))  /*闰年判断方法*/
            {
                day=day+366;
            }
            else
            {
                day=day+365;
            }
        }
        sum2=0;                                  /*多余月份天数,m代表月份2*/ 
        for(m=1;m<=month-1;m++)
        {
            if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
            {
                sum2=sum2+31;
            }
            else if(m==4||m==6||m==9||m==11)
            {
                sum2=sum2+30;
            }
            else if((year%4==0&&year%100!=0)||(year%400==0))  /*闰年二月份天数不同*/ 
            {
                sum2=sum2+29;
            }
            else
            {
                sum2=sum2+28;
            }
        }
            sum=day+sum2;                                /*所有的天数*/ 
            q=sum%7;                                /*计算月份中几号是星期几*/ 
            printf("%d年%d月
    ",year,m);
        if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)  /*大月份天数*/
            {
                m2=31;                                /*m2为月份天数*/ 
            } 
            else if(m==4||m==6||m==9||m==11)
            {
                m2=30;
            }
            else if(((year%4==0&&year%100!=0)||(year%400==0))&&month==2)      /*闰年二月份天数*/
             {
                 m2=29;
            }
            else 
            {
                m2=28;
            }
            printf("星期一	星期二	星期三	星期四	星期五	星期六	星期日
    ");
            if(q==6)
            {
            for(t=1;t<=m2;t++)
            {
                printf("%d	",t);
                if((q+t+1)%7==0)
                {
                    printf("
    ");
                }
            }    
            }
            else
            {
                for(x=0;x<=q;x++)
            {
                printf("	");
            }
            for(t=1;t<=m2;t++)
            {
                printf("%d	",t);
                if((q+t+1)%7==0)
                {
                    printf("
    ");
                }
            }
            }
        return 0;
     } 

     

       1. 定义一个判断素数的函数isprime(int n),利用该函数输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)

    #include <stdio.h>
    int isprime (int x);
    int main()
    {
        int d,f,k;
        for(k=2;k<=1000;k++)
        {
            if(isprime(k)==0)
            {
                printf("%03d   ",k);
                f++;
                if(f%10==0)
                {
                    printf("
    ");
                }
            }
        }
            printf("
    一共%d个素数",f);
    
    }
    int isprime (int x)
    {
        int y; 
        for(y=2;y<=x-1;y++)
        {
            if(x%y==0)
            { 
                return 1;
            }
    
        }
            return 0;
    }

        2.求两个正整数的最大公约数和最小公倍数。用一个函数gcd(int a,int b)求最大公约数,另一个函数lcm(int a,int b)根据求出的最大公约数求最小公倍数。

    #include <stdio.h>
    int gcd(int a,int b);   /*最大公约数*/ 
    int lcm(int a,int b);   /*最小公倍数*/ 
    int main()
    {
        int a,s,max,min;
        printf("请输入两个正整数
    ");
        scanf("%d  %d",&a,&s);
        min=lcm(a,s);
        max=gcd(a,s);
        printf("最小公倍数为%d最大公约数为%d
    ",min,max);
        return 0;
    }
    int gcd(int a,int b)
    {
        int d,f;
        for(d=1;d<=a&&d<=b;d++)
        {
            if(a%d==0&&b%d==0)
            {
                f=d;
            }
        }
        return f;
    }
    int lcm(int a,int b)
    {
        int g;
        g=a*b/gcd(a,b);
        return g;
    }

       3.编写一个函数fun(double x)求表达式x2-5x+4的值,x作为参数传给函数。在主函数中调用该函数求下列式子的值:

           y1= 22-5*2+4

           y2= (x+15)2-5*(x+15)+4

           y3= sin2x-5*sinx+4    

       求y3用数学函数 sin(x)  头文件math.h

       求解y2和y3时需要输入x的值。

       样例:

       y1=-2, x=0.5时,y2=166.75,y3=1.832721

    #include <stdio.h> 
    #include <math.h>
    double fun(double x);
    int main()
    {
        float x,y1,y2,y3;
        printf("请输入x
    ");
        scanf("%f",&x);
        y1=fun(2);
        y2=fun(x+15);
        y3=fun(sin(x));
        printf("%.2f	%.3f	%.3f",y1,y2,y3);
        return 0;
    }
    double fun(double x)
    {
        double y;
        y=x*x-5*x+4;
        return y;
    }

    4.用函数实现:火柴棍等式问题

    #include <stdio.h>
    int gun(int h); 
    int main()         
    {
        int a,b,d,f,g,h;
        for(a=0;a<=9;a++)
        {
            for(b=0;b<=9;b++)
            {
                for(d=0;d<=9;d++)
                {
                    if(a+b==d&&gun(a)+gun(b)+gun(d)==12)
                    {
                        printf("%d+%d=%d
    ",a,b,d);
                    }
                }
            }
        }
        return 0;
    }
        int gun(int h)
        {
            int f;
            switch(h)
            {
                case 0:
                case 6:
                case 9:f=6;break;
                case 2:
                case 3:
                case 5:f=5;break;
                case 1:f=2;break;
                case 4:f=4;break;
                case 7:f=3;break;
                case 8:f=7;break;
            }
            return f;
    
        }

    知识点总结

    1、必要时可以用死循环,再用break语句跳出

    2、“system(“CLS”)”代表:清屏

    3、程序较长时用“/*....*/”标示

    4、注意中间值的使用

    5、函数不能镶嵌

    6、一般情况下函数中不能出现输出语句

    7、变量名与函数名不能相同

    8、函数后面一定有括号

    实验总结

    1、程序不能直接写,应该有大概运行思路

    2、嵌套语句的使用

    3、注意用标示,防止长代码忘记代码目的。

    4、返回值类型,一般默认为int 型

  • 相关阅读:
    BZOJ1093: [ZJOI2007]最大半连通子图
    BZOJ4033: [HAOI2015]树上染色
    BZOJ1977: [BeiJing2010组队]次小生成树 Tree
    BZOJ4944: [Noi2017]泳池
    BZOJ1269: [AHOI2006]文本编辑器editor
    BZOJ4596: [Shoi2016]黑暗前的幻想乡
    BZOJ1815: [Shoi2006]color 有色图
    BZOJ1488: [HNOI2009]图的同构
    BZOJ3527: [Zjoi2014]力
    Salazar Slytherin's Locket CodeForces
  • 原文地址:https://www.cnblogs.com/456abc/p/6055852.html
Copyright © 2011-2022 走看看