第六次作业

Posted 丁啸宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六次作业相关的知识,希望对你有一定的参考价值。

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\\n",a);
        }
    }
     return 0;
}

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

  样例: 输入123,    输出 6     June

            输入12345,输出 15   ***

#include <stdio.h>
int main()
{
    int a,sum=0,x,y;
    printf("请输入一个数字\\n");
    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\\n");
                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("\\n***");
    }
    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的正整数\\n");
    scanf("%d",&a);
    system("CLS");
    printf("输入的数字为%d\\n",a);
    if(a>6||a<0)
    {
        printf("输入的数字有误\\n");
    }
    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("\\n");
                        }
                    }
                }
            }
        }
    }
    return 0;
} 

 

 

 

万年历

#include <stdio.h>
int main()
{
    int year,month,day,a,b,c,sum,m,m2,sum2,q,t,x;
    printf("请输入年月,中间用空格分开\\n");
    while(a!=1)
    {
        scanf("%d%d",&year,&month);
        if((month<1||month>12)||year<1900)
        {
            printf("输入的时间有误,请重新输入\\n");
            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月\\n",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("星期一\\t星期二\\t星期三\\t星期四\\t星期五\\t星期六\\t星期日\\n");
        if(q==6)
        {
        for(t=1;t<=m2;t++)
        {
            printf("%d\\t",t);
            if((q+t+1)%7==0)
            {
                printf("\\n");
            }
        }    
        }
        else
        {
            for(x=0;x<=q;x++)
        {
            printf("\\t");
        }
        for(t=1;t<=m2;t++)
        {
            printf("%d\\t",t);
            if((q+t+1)%7==0)
            {
                printf("\\n");
            }
        }
        }
    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("\\n");
            }
        }
    }
        printf("\\n一共%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("请输入两个正整数\\n");
    scanf("%d  %d",&a,&s);
    min=lcm(a,s);
    max=gcd(a,s);
    printf("最小公倍数为%d最大公约数为%d\\n",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\\n");
    scanf("%f",&x);
    y1=fun(2);
    y2=fun(x+15);
    y3=fun(sin(x));
    printf("%.2f\\t%.3f\\t%.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\\n",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 型

 

以上是关于第六次作业的主要内容,如果未能解决你的问题,请参考以下文章

第六次作业周总结

OOP第四次到第六次作业总结

第六次作业—例行报告

第六次作业psp

软件工程第六次作业 - 每周例行汇报

第六次作业