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

第六次作业

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

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

技术分享

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

  样例: 输入123,    输出 6     June

            输入12345,输出 15   ***

#include <stdio.h>
int main()
{
    long x,sum=0,z;
    printf("请输入一串数字");
    scanf("%ld",&x);
    while(x>0)
    {
    z=x%10;
    x=x/10;
    sum+=z;
    }
    switch(sum)
    {
    case 1:printf("1  January");break;
    case 2:printf("2  Feburary");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;
    }
    if(sum>12)
    {
        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 i,j,k,a,b,c=0;
printf("请输入一个不小于6的正整数"); scanf(
"%d",&a); for(i=a;i<a+4;i++) for(j=a;j<a+4;j++) for(k=a;k<a+4;k++) if(i!=j&&j!=k&&k!=i) { b=i*100+j*10+k; printf("%d ",b); c++; if(c%6==0) { printf("\n"); } } return 0; }

技术分享

 

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

附加题

  有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,d,e,f;
    for(a=0;a<=9;a++)
    for(b=0;b<=9;b++)
    {
        if(a==1)
        {
            d=2;
        }
        if(a==2||a==3||a==5)
        {
            d=5;
        }
        if(a==4)
        {
            d=4;
        }
        if(a==0||a==6||a==9)
        {
            d=6;
        }
        if(a==7)
        {
            d=3;
        }
        if(a==8)
        {
            d=7;
        }
        if(b==1)
        {
            e=2;
        }
        if(b==2||b==3||b==5)
        {
            e=5;
        }
        if(b==4)
        {
            e=4;
        }
        if(b==0||b==6||b==9)
        {
            e=6;
        }
        if(b==7)
        {
            e=3;
        }
        if(b==8)
        {
            e=7;
        }
        c=a+b;
        if(c==1)
        {
            f=2;
        }
        if(c==2||c==3||c==5)
        {
            f=5;
        }
        if(c==4)
        {
            f=4;
        }
        if(c==0||c==6||c==9)
        {
            f=6;
        }
        if(c==7)
        {
            f=3;
        }
        if(c==8)
        {
            f=7;
        }
        if(d+e+f==12&&a!=b&&a+b==c)
        {
            printf("%d+%d=%d\n",a,b,c);
        }
    }
     
} 

技术分享

小项目:自动出题器

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int a,b,result,answer,d,i,j=0,x,y,z,f,g=0,h=0;
    char c,choose;
    float accuracy,accuracy1;
    do
    {
    for (i=1;i<=5;i++)
    {
    srand(time(NULL));
    a=rand()%100;
    b=rand()%100;
    d=rand()%4+1;
    switch(d)
    {
        case 1:c=+;result=a+b;break;
        case 2:c=-;result=a-b;break;
        case 3:c=*;result=a*b;break;
        case 4:c=/;x=a/b;y=a%b;
    }
    printf("%d%c%d=?\n",a,c,b);
    printf("请输入答案\n");
    if (c==/)
    {
    printf ("请输入商和余数,中间用空格隔开\n");
    scanf("%d %d",&z,&f);
    h++;
       if (x==z&&y==f)
       {
           j++;
           g++;
       printf("you are right\n");
       continue;
       }
       else
       { 
       printf("you are wrong,the right answer is %d %d\n",x,y);
    
       continue;
       }
    }
    scanf("%d",&answer);
    h++;
    if (answer==result)
    {
        j++;
        g++;
        printf("you are right\n");
    }
    else
    {
        printf("you are wrong,the right answer is %d\n",result);
    }
    }
    accuracy=g/5.0;
    printf("你真棒,你做对了%d道题,正确率为%.2f%%",g,accuracy*100);
    printf("请选择继续游戏或者退出游戏,分别为Y(y),N(n)\n");
    scanf(" %c",&choose);
    if(choose==78||choose==110)
    {
        printf("你选择了退出游戏");
        accuracy1=(float)j/h;
        printf("你一共对了%d道题,正确率为%.2f%%",j,accuracy1*100);
    }
    g=0;
    }while(choose==89||choose==121);
  
    
    return 0;
}

技术分享

技术分享

知识点总结:1 单独用if来做判断,if  else和switch  case都可以用!

                 2 重新开始循环用do   while较容易,用while要重新定义变量!

实验总结:1 等号与赋值要弄清!

              2 注意for循环下面的语句是在for循环里面还是外面!

              3 返回最初循环是可重新定义变量或者用do  while,do  while 较简单!

              4 代码较多就一步一步写,不要着急!

              5 穷举法很好用,就是写出来的代码太多!

 

第六次作业