第六次做業

1.有一個四位正整數,組成這個四位數的四個數字各不相同,若是把它們的首尾互換,第二位與第三位互換,組成一個新的四位數。原四位數爲新四位數的4倍,請找出一個這樣的四位數。c++

# 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   ***spa

# 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位數。code

   輸入格式:輸入在一行中給出A。blog

   輸出格式:輸出知足條件的的3位數,要求從小到大,每行6個整數。整數間以空格分隔,但行末不能有多餘空格。遊戲

   輸入樣例:2it

   輸出樣例:234  235  243  245  253  254io

                  324  325  342  345  352  354class

                  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

相關文章
相關標籤/搜索