首页 > 代码库 > 第六次作业

第六次作业

一、实验内容  

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

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

技术分享

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

 样例: 输入123,    输出 6     June

            输入12345,输出 15   ***

#include<stdio.h>
int main()
{
    long a,b,i=0;
    printf("请输入任意一个多位的整数\n");
    scanf("%ld",&a);
    while(a>0)
    {
        b=a%10;
        a=a/10;
        i=i+b;
    }
    printf("%ld\n",i);
    switch(i)
    {
        case 1:printf("January\n");break;
        case 2:printf("February\n");break;
        case 3:printf("March\n");break;
        case 4:printf("April\n");break;
        case 5:printf("May\n");break;
        case 6:printf("June\n");break;
        case 7:printf("July\n");break;
        case 8:printf("August\n");break;
        case 9:printf("September\n");break;
        case 10:printf("October\n");break;
        case 11:printf("November\n");break;
        case 12:printf("December\n");break;
        default: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

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

#include<stdio.h>
int main()
{
    int a,b,c,d,e,f;
    printf("请输入一个不超过6的正整数A;\n");
    scanf("%d",&a);
    if(a<1||a>6)
    {
        printf("输入有误。\n");
    }
    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&&c!=d&&d!=b)
            {              
                e=b*100+c*10+d;
                printf("%d ",e);
                f++;
                if(f%6==0)
                {
                    printf("\n");
                }
            }
        }
    }
    return 0;
} 

技术分享

 

4. 万年历、看商品猜价格、自动出题器、猜拳游戏。(完成个人选定的题目)

#include<stdio.h>
#include<stdlib.h> 
#include<time.h>
int main()
{
    int computer,player,x=0,y=0;
    char a;
    while(1)
    {
        computer=rand()%3+1;
        printf("欢迎来到猜拳小游戏,请输入(1剪刀2石头3布)\n");
        scanf("%d",&player); 
        if(player<=0||player>=4)
        {
            printf("输入错误,请重新输入\n"); 
        } 
        else if(
            (player==1&&computer==3)||(player==2&&computer==1)||(player==3&&computer==2)
            )
        {
            printf("恭喜你,你赢了,电脑输入的是",computer);
            x++;
            if(computer==1)
            {
                printf("剪刀\n");
            }
            if(computer==2)
            {
                printf("石头\n");
            }
            if(computer==3)
            {
                printf("布\n");
            }
        }
        else if(
            (player==1&&computer==2)||(player==2&&computer==3)||(player==3&&computer==1)
            )
        {
                        printf("很不幸,你输了。电脑输入的是",computer);
            y++;

                        if(computer==1)
            {
                printf("剪刀\n");
            }
            if(computer==2)
            {
                printf("石头\n");
            }
            if(computer==3)
            {
                printf("布\n");
            }
        }
        else if(
            (player==1&&computer==1)||(player==2&&computer==2)||(player==3&&computer==3)
            )
        {
                        printf("这一局是平局。电脑输入的是",computer);
                        if(computer==1)
            {
                printf("剪刀\n");
            }
            if(computer==2)
            {
                printf("石头\n");
            }
            if(computer==3)
            {
                printf("布\n");
            }
        }
        else
        {
            printf("输入错误,输入X结束游戏,按任意键重新开始游戏。\n");
        }
        fflush(stdin);
        printf("输入0结束游戏,按任意键继续。\n");
        scanf("%c",&a);
        if(a==0)
        {
            if(x>y)
            {
                printf("你赢了,你的得分是%d,电脑得分是%d。\n",x,y);
                break;
            }
            else if(x=y)
            {
                printf("你和电脑打成了平手,你的得分是%d,电脑的得分是%d。\n",x,y);
                break;
            }
            else
            {
                printf("你输了,你的得分是%d,电脑的得分是%d。\n",x,y);
                break;
            }
        }
    }
        return 0;
}

技术分享

 二、知识点总结:

1.只有在scanf后才有地址符。

2.循环嵌套时要注意限制条件。

三、实验总结:

1.switch语句中要在最后加break。

2.do...while语句后边要加分号,而while、for语句后边不能加分号。

第六次作业