作业(六)

1.

实验要求:

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

实验代码:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int x,y,z;
    for(x=1000;x<=9999;x++)
    {
        y=0;
        z=x;
        while(z>0)
        {
            y=10*y+z%10;
            z=z/10;
        }
        if(x==4*y)
        {
            printf("%d",x);
        }
    }
    return 0;
}

 

实验截图:

 

2.

实验要求:

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

样例: 输入123,    输出 6     June

          输入12345,输出 15   ***

实验代码:

#include<stdio.h>
int main()
{
    int x,m,sum=0;
    printf("请您输入一个多位数\n");
    scanf("%d",&x);
    while(1)
    {
        m=x%10;
        x=x/10;
        sum=sum+m;
        if(x==0)
        {
            break;
        }
    }
    switch(sum)
    {
        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");break;
    }
    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>
#include<stdlib.h>
int main()
  {
  int x1,x2,x3,x4,a,b,c,i=0,sum;
  printf("输入样例: ");
  scanf("%d",&x1);
  if(x1<=0||x1>6)
  {
    printf("您输入有错。\n");
    exit(0);
  }
  printf("输入样例:");
  x2=x1+1;
  x3=x2+1;
  x4=x3+1;
  for(a=x1;a<=x4;a++)
    for(b=x1;b<=x4;b++)
      for(c=x1;c<=x4;c++)
      {
        if(a!=b&&b!=c&&c!=a)
        {
          sum=100*a+10*b+c;
          printf(" %d",sum);
          i++;
          if(i%6==0&&i!=0)
          {
            printf("\n ");
          }
        }  
      }
   return 0;
}

 

实验截图:

 

 

4

实验要求:

看商品猜价格

实验代码:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{    
    int x,y,i;
    while(1) 
    { 
        printf("请输入您竞猜的价格\n");
        srand(time(NULL));
        scanf("%d",&y);
        x=rand()%100+1;
        for(i=1;i<10;i++)
        {
            if(y>100||y<0)
                {
                printf("输入错误,请重新输入。(提示:此次已计入次数。)\n");
                scanf("%d",&y);
            } 
             else
            {
                if(x==y)
                {
                    printf("您猜对了,商品是你的,价格就是%d元,你用了%d次。\n",x,i);
                    break; 
                }
                else if(x>y)
                {
                    printf("你猜的太小了,请您再次竞猜。\n");
                    scanf("%d",&y);    
                }
                else
                {
                    printf("你猜的太大了,请您再次竞猜。\n");    
                    scanf("%d",&y);
                }
            } 
        }
        if(i==10&&x!=y)
        {
            printf("您的10次机会已经全部用完,价格是%d元。很遗憾您没有猜对\n",x);
            break;
        }
    }    
    return 0; 
} 

 

实验截图:

 

附加.

实验要求:

有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 x,y,sum,a,b,c;
    printf("有16根火柴,可以拼出多少个形如“A+B=C”的等式.\n");
     for(x=0;x<=9;x++)
    {
        for(y=0;y<=9;y++)
        {
            switch(x)
            {
                case 0:a=6;    break;
                case 1:a=2;    break;
                case 2:a=5;    break;
                case 3:a=5;    break;
                case 4:a=4;    break;
                case 5:a=5;    break;
                case 6:a=6;    break;
                case 7:a=3;    break;
                case 8:a=7;    break;
                case 9:a=6;    break;
            }  
             switch(y)
            {
                case 0:b=6;    break;
                case 1:b=2;    break;
                case 2:b=5;    break;
                case 3:b=5;    break;
                case 4:b=4;    break;
                case 5:b=5;    break;
                case 6:b=6;    break;
                case 7:b=3;    break;
                case 8:b=7;    break;
                case 9:b=6;    break;
            }
            sum=x+y;
            switch(sum)
            {
                case 0:c=6;    break;
                case 1:c=2;    break;
                case 2:c=5;    break;
                case 3:c=5;    break;
                case 4:c=4;    break;
                case 5:c=5;    break;
                case 6:c=6;    break;
                case 7:c=3;    break;
                case 8:c=7;    break;
                case 9:c=6;    break;
            }
            if(x<10&&y<10&&sum<10)
            {
                if((a+b+c)==12)
                   {
                    printf("%d+%d=%d\n",x,y,sum);
                }
            }
        }
    }
    return 0;
}

 

实验截图:

 

 

 知识点总结:

1.利用循环编程菲薄那数列。

2.利用穷举法计算鸡兔同笼问题。

3.利用循环进行整数的分解,计算整数的位数以及如何利用循环将一个数逆序输出。

4.分别利用枚举法和辗转相除法计算最大公因数。

5.学习程序的调试,bug以及debug,调试的基本步骤,以及调试工具。

实验总结:

1.在循环的过程中,换行回车的位置要注意。

2.忘记了switch的其余选项利用default字符。

3.循环变量的赋值以及赋值位置。

4.“=”的优先级较低,注意运用“()”。

5.等于用“==”符号,不是“=”。

6.忘记验证实验的合法性。

7.在做实验前,最好做出程序框图

posted on 2016-11-09 01:19  王国宇  阅读(352)  评论(3)    收藏  举报