首页 > 代码库 > 作业6

作业6

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

代码;

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

技术分享

 

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

  样例: 输入123,    输出 6     June

            输入12345,输出 15   ***

 

代码

#include <stdio.h>
int main()
{
    int a,s=0;
    printf("请输入一个正数a");
    scanf("%d",&a);
    while(1)
    {
        if(a<=0)
        {
            printf("输入错误,请重新输入");
            continue;
        }
        else
        {
            break;
        }
    }
    while(a>0)
    {
        s=s+(a%10);
        a=a/10;
    }
    if(s==1)
    {
        printf("january\n");
    }
    else if(s==2)
    {
        printf("february\n");
    }
    else if(s==3)
    {
        printf("march\n");
    }
    else if(s==4)
    {
        printf("april\n");
    }
    else if(s==5)
    {
        printf("may\n");
    }
    else if(s==6)
    {
        printf("june\n");
    }
    else if(s==7)
    {
        printf("july\n");
    }
    else if(s==8)
    {
        printf("august\n");
    }
    else if(s==9)
    {
        printf("september\n");
    }
    else if(s==10)
    {
        printf("october\n");
    }
    else if(s==11)
    {
        printf("november\n");
    }
    else if(s==12)
    {
        printf("december\n");
    }
    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

  此题可在pta网站注册提交测试。https://pta.patest.cn/pta/test/14/exam/4/question/796

 

#include<stdio.h>
int main()
{
    int a,b,c,d,s,i=0;
    printf("请输入一个不超过6的正整数\n");
    scanf("%d",&a);
    if(a>6||a<=0)
    {
        printf("error");
     } 
    else
    {
        for(b=a;b<a+4;b++)
        {
            for(c=a;c<a+4;c++)
            {
                for(d=a;d<a+4;d++)
                {
                    if(b!=c && b!=d && c!=d)
                    {
                        s=(b*100)+(c*10)+d;
                               i++;
                        if(i%6==0)
                        {
                            printf("%d\n",s);
                        }
                        else
                        {
                            printf("%d ",s);
                        }
                        
                    }
                }
            }
        }     
    }
    return 0;
 } 

 

 技术分享

 

 

 

万年历

 

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int year,month,a,a1=0,b1,c1,d1,i1,j1,sum,sum1,sum2;
    while(a1!=1)
    {
        printf("请输入年份月份和日期,用空格隔开\n");
        scanf("%d%d",&year,&month);
        if(month>12||month<1)
        {
            printf("输入错误,请重新输入\n");
            continue;
        }
        else
        {
            a1=1;
        }
    
    }
    system("CLS");
    for(i1=1900,sum1=0;i1<=year-1;i1++)
    {
        if((i1%4==0&&i1%100!=0)||(i1%400==0))
        {
            sum1=sum1+366;
        }
        else
        {
            sum1=sum1+365;
        }
    }
        for(j1=1,sum2=0;j1<=month-1;j1++)
        {
            if(j1==1||j1==3||j1==5||j1==7||j1==8||j1==10||j1==12)
            {
                sum2=sum2+31;
            }
            else if(j1==4||j1==6||j1==9||j1==11)
            {
                sum2=sum2+30;
            }
            else
            {
                if((i1%4==0&&i1%100!=0)||(i1%400==0))
                {
                    sum2=sum2+29;
                }
                else
                {
                    sum2=sum2+28;
                }
            }
        }
    sum=sum1+sum2+1;
    c1=sum%7;                    
    printf("%d年%d月\n",year,month);
    printf("星期日   星期一   星期二   星期三   星期四   星期五   星期六\n");
    if(month==4||month==6||month==9||month==11)    
    {
        a=30;
    }
    else if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)     
    {
        a=31;
    }
    else if(((year%4==0&&year%100!=0)||(year%400==0))&&month==2)      
    {
        a=29;
    }
    else       
    {
        a=28;
    }
    for(d1=c1;d1>0;d1--)
            {
                printf("         ");
            }
    for(b1=1;b1<=a;b1++)
        {
            printf(" %-2d      ",b1);
            if((b1+c1)%7==0)
            {
                printf("\n");                
            }
        }
    return 0;
}

技术分享

 

 

 

 

实验总结:

1:用了一个for循环。要是想让一个长整数上的各个数字换位置,可以用到除法要商和取余要余数来配合调换。

2:while语句不太熟,后面输出月份的时候一直是if语句没难点。

3:for语句的嵌套,一开始最里面的for语句的if判断没弄好, 够六个换一行需要输出%d后再\n。

 

作业6