第六次作业

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

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

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

  样例: 输入123,    输出 6     June

            输入12345,输出 15   ***

# include <stdio.h>
int main ()
{
   int a,b,c,sum=0;
   printf("输入任意一个多位的数字");
   scanf ("%d",&a);
   while(a!=0)
   {
     sum=sum+a%10;
     a=a/10;
   }
   printf ("%d",sum);
   if(sum>12||sum<1)
   {
      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

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

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

4.完成看商品猜价格小游戏。 要求:1.对输入数据进行合法性验证,每次猜数结果如果不对,则提示猜大了还是猜小了,每件商品最多猜10次,如果猜对了,输出猜了几次,如果10次都没猜对,则输出商品的价格。 一轮游戏结束后,让用户选择是继续下一轮游戏还是退出。

# include <stdio.h>
#include <time.h>
# include <stdlib.h>
int main ()
{
   int magic,guess,i,count=0;
   char reply;
   srand (time(NULL));
   magic=rand()%100+1;
   do
   {
       printf ("请猜一个价格,只有十次机会哟!");
       scanf ("%d",&guess);
       count++;
       for(i=1;i<=10;i++)
       {
           if (guess>magic)
           {
              printf ("太大了,请重新输入!");          
           }
           else  if (guess<magic)
           {
               printf("太小了,请重新输入!");
           }
           else if (guess==magic)
           {
               printf("恭喜你,答对了!");
               break;
           }
           scanf ("%d",&guess);
           
          if (i==10)
          {
            printf("十次都没猜对,正确结果是%d",magic);
          }
       }
          printf ("继续下一轮游戏吗?Y(y)orN(n)");
           scanf (" %c",&reply);
       }
        while(reply=='Y'||reply=='y');
      
       printf ("一共猜了%d 轮",count);
      return 0;
}

 二.知识点总结:

1.求个位数十位数百位数等;

2.不知循环次数可用while语句,switch....case 语句的使用,记得加break

3.第三题这个类型的题用穷举法

4第四题这种类型的题用do ...while 语句循环很方便;

三.实验总结

1.要考虑好每道题的完整性,不能有漏洞。例如让输入一定范围内的数字,如果输入的数字超出范围,要写输入错误等。

2.要熟悉运用循环语句;

3.a=b=c要写成a==b&&b==c&&c==a,别落了c==a

4.尽可能要简化自己的程序

5.switch....case 语句的使用,记得加break

posted @ 2016-11-09 11:16  天亮……  阅读(205)  评论(2编辑  收藏  举报