作业六

作业六

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

#include<stdio.h>
int main()
{    int a,b,c,d;
    float e,f;
     for(a=1;a<=9;a++)
     for(b=0;b<=9;b++)
     for(c=0;c<=9;c++)
     for(d=1;d<=9;d++)
    
    {
    e=a*1000+b*100+c*10+d;
    f=d*1000+c*100+b*10+a;
     if    (e/f==4)
     {
         printf("这两个四位数是%.f和%.f\n",e,f);
     }
    }
        return 0;
    
    
 } 

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

  样例: 输入123,    输出 6     June

            输入12345,输出 15   ***

#include <stdio.h>
int main()
{
     int a,sum=0;
     printf("请输入一个整数:");
      scanf("%d",&a);
    while(a)
     {
      sum = sum+a%10;
      a /= 10;
     }
     printf("%d",sum);
     if(sum>12)
     {
         printf(" ***");
     }
     else
     {
         switch(sum)
         {
          case 1:  printf(" January");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;
        }
     }
     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,e,f,g,h,m;
    printf("输入一个小于6的数字\n");
    scanf("%d",&a);
    if(a>6||a<=0)
    {
        printf("输入错误\n"); 
    }
    else
    { 
    e=a+4;
    for(f=a;f<e;f++)
    for(g=a;g<e;g++)
    for(h=a;h<e;h++)
     {    
        
        if(f!=g&&f!=h&&g!=h)
        {
            b=f*100+g*10+h;    
            printf(" %d",b);
            m++;
            if(m%6==0&&m!=0)
         {
              printf("\n");
         }
        }
      }
    }
    return 0;
 } 

4. 万年历、看商品猜价格、自动出题器、猜拳游戏。(完成个人选定的题目)我忘了选的哪个了....交两个吧~~~~

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{    int a,b,c=0,d=0,e=0,f=1,i,i1,i2;
    char x; 
    srand(time(NULL));
    do{     x='N';
            b=rand()%3+1;
             printf("第%d轮对决,请选择:1.石头,2.剪刀,3.布\n",f);
            scanf("%d",&a);
            if(a<=0||a>3)
            {
                printf("数据错误,重新输入!\n");
            } 
            else if(a==b)
            {
                c++; 
                f++;
                printf("平局\n");
            }
            else if((a==1&&b==3)||(a==2&&b==1)||(a==3&&b==2))
            {
                d++;
                f++;
                printf("你输了\n");
            }
            else if((a==1&&b==2)||(a==2&b==3)||(a==3&b==1))
            {
                e++;
                f++;
                printf("你赢了\n");
            }
                printf("继续下一轮吗?Y (y)or N(n)\n");
                scanf(" %c",&x);
      } while(x=='y'||x=='Y');
      printf("对决次数;%d,平局%d次,电脑得分%d,你得分%d",f-1,c,d,e);
    return 0;
}

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{    int a,b,i;
    char x;
    do
    { 
    printf("请输入价格\n");
    srand(time(NULL));
    scanf("%d",&b);
    a=rand()%100+1;
    for(i=1;i<10;i++)
    {if(b>100||b<0)
        {
        printf("输入错误,请重新输入\n");
        scanf("%d",&b);
        } 
     else
    {if(a==b)
        {
        printf("价格相等,商品是你的,价格就是%d元,你用了%d次。\n",a,i);
        break; 
        }
    else if(a>b)
        {
        printf("价格错误了,你猜的太小了\n");
        scanf("%d",&b);    
        }
    else
        {
        printf("价格错误了,你猜的太大了\n");    
        scanf("%d",&b);
        }
    } 
    }
        if(i==10&&a!=b)
    {
        printf("10次机会用完了,价格是%d元。\n",a);
    }
    printf("继续吗?y or n\n"); 
    scanf(" %c",&x);
    }
    while(x=='y');    
        return 0; 
}     

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main() 
{int a,b,answer,d,result,i,i1=0,i2=0,i4=0,i6=0,m,n;
    float i3,i5;
   
    char x,z;
    srand(time(NULL));
    do{
        i2=0;
        for(i=1;i<=5;i++)
    { 
    a=rand()%100+1;
    b=rand()%100+1;
    d=rand()%4+1;
    switch(d)
    {    case 1:x='+';result=a+b;break;
        case 2:x='-';result=a-b;break;
        case 3:x='*';result=a*b;break;
        case 4:x='/';result=a/b;m=a%b;
        printf("%d %c %d=?\n",a,x,b);
        printf("输入商和余数,用空格隔开:\n");
        scanf("%d %d",&answer,&n); 
        if(answer==result&&m==n)
    {
        printf("你答对了!\n");
        i2++;
        i6++;
        
    }
    else
    {
        printf("你答错了,答案是:%d %c %d=商%d余%d\n",a,x,b,result,m);
    }
        break;
    }
    
    if(d!=4){
        printf("%d %c %d=?\n",a,x,b);
    printf("输入答案:\n");
    scanf("%d",&answer); 
    if(answer==result)
    {
        printf("你答对了!\n");
        i2++;
        i6++;
    }
    else
    {
        printf("你答错了,答案是:%d %c %d= %d\n",a,x,b,result);
    }
            }
    i1++;  
    }
    i3=(i2/(double)5)*100;
    printf("本次做对了%d道题,正确率%.2f%%",i2,i3);
    printf("继续吗?Y (y)or N(n)\n");
    scanf(" %c",&z);
    }while(z=='y'||z=='Y');
    i5=(i6/(double)i1)*100;
    printf("总共做了%d道题,做对了%d道,正确率是%.2f%%",i1,i6,i5);
    
    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根火柴棍必须全部用上。

#include<stdio.h>
int main()
{    int x,y,gen1,gen2,sum,gen3;
    for(x=0;x<=9;x++)
    for(y=0;y<=9;y++)
    {
    switch(x)
          {
           case 0: gen1=6; break;
           case 1: gen1=2; break;
           case 2: gen1=5; break;
           case 3: gen1=5; break;
           case 4: gen1=4; break;
           case 5: gen1=5; break;
           case 6: gen1=6; break;
           case 7: gen1=3; break;
           case 8: gen1=7; break;
           case 9: gen1=6; break;
          }
          switch(y)
          {
           case 0: gen2=6; break;
           case 1: gen2=2; break;
           case 2: gen2=5; break;
           case 3: gen2=5; break;
           case 4: gen2=4; break;
           case 5: gen2=5; break;
           case 6: gen2=6; break;
           case 7: gen2=3; break;
           case 8: gen2=7; break;
           case 9: gen2=6; break;
          }
          sum=x+y;
          switch(sum)
          {
           case 0: gen3=6; break;
           case 1: gen3=2; break;
           case 2: gen3=5; break;
           case 3: gen3=5; break;
           case 4: gen3=4; break;
           case 5: gen3=5; break;
           case 6: gen3=6; break;
           case 7: gen3=3; break;
           case 8: gen3=7; break;
           case 9: gen3=6; break;
          }
          if(gen1+gen2+gen3==12&&x<9&&y<9&&sum<9)
          {
              printf("%d+%d=%d\n",x,y,sum);
          }
    }
    return 0;
}

二、知识点总结:

1:穷举法的应用,利用多个循环,达成条件退出循环。

三、实验总结:

1:在循环中利用switch,可以方便对条件做出选择。

2:注意int double float的区别。

3:在循环中使用sum = sum+a%10;  a /= 10;可以实现对输入整数的各位数字相加。

4:注意够位换行时“某++”的放置位置。

5:附加题要分清数字相加和火柴根数相加的区别以及联系。

6:循环嵌套时要注意限制条件。

 

posted on 2016-11-07 22:19  Mty灬  阅读(249)  评论(1编辑  收藏  举报

导航