天天看點

【頭歌C語言程式與設計】循環結構程式設計2寫在前面正文寫在最後

目錄

寫在前面

正文

第1關:C循環-求平均成績

第2關:C循環-求各位數字之積

第3關:C循環-求階乘之和

第4關:C循環-水仙花數

第5關:C循環-尋找完數

第6關:分數求和

寫在最後

寫在前面

本文代碼是我自己所作,本人水準有限,可能部分代碼看着不夠簡練,運作效率不高,但都能運作成功。另外,如果想了解更多,請訂閱專欄頭歌C語言程式與設計

正文

第1關:C循環-求平均成績

本關任務:編寫一個程式,輸入學生人數和每個人的成績,計算平均成績。

注意:當輸入的學生人數小于等于0時,輸出平均成績為0分!

輸入:

3 90 70 80

輸出:

the number of students:the scores:average=80.00

輸入:

-1

輸出:

the number of students:the scores:average=0.00

輸入:

4 78.5 26 73.6 90.1

輸出:

the number of students:the scores:average=67.0

#include<stdio.h>
	int main(void)
	{  
	  /*********Begin*********/
	  int num,i;
      float score,average,sum;
      printf("the number of students:");
      scanf("%d",&num);
      
      if(num>0)
      {
          for(i=0;i<num;i++)
          {
              scanf("%f",&score);
              sum+=score;
          }
          average=sum/num;
      }
      else
         average=0;
      printf("the scores:average=%.2f",average);
	  /*********End**********/ 
       return 0;
	}
           

第2關:C循環-求各位數字之積

本關任務:計算正整數

num

的各位上的數字之積。 

例如:

  • 輸入:

    2583

    經過----(2*5*8*3) 輸出:

    240

  • 輸入:

    102

    經過----(1*0*2) 輸出:
  • 輸入:

    136

    經過----(1*3*6) 輸出:

    18

輸入:

120

輸出:
輸入:

314

輸出:

12

輸入:

1952

輸出:

90

#include<stdio.h>
	int main(void)
	{  
	  /*********Begin*********/
	  int num=0,t=1;
      scanf("%d",&num);
      while(num!=0)
      {
          t*=num%10;
          num/=10;
      }
	  printf("%d",t);
	  /*********End**********/ 
       return 0;
	}
           

第3關:C循環-求階乘之和

本關任務:編寫一個程式,任意輸入

n

,求

S=1!+2!+...+n!

。 

注意:

n!

表示

n

的階乘。 的階乘等于

1

,負數的階乘等于 。
輸入:

10

輸出:

4037913

輸入:

1

輸出:

1

輸入:

-5

輸出:
#include<stdio.h>
	int main(void)
	{  
	  /*********Begin*********/
	  int n;
      int i,j,num=1,sum=0;
      scanf("%d",&n);
      if(n<=0)
      {
          printf("0");
      }
      else
      {
          for(i=1;i<=n;i++)
          {
             num=1;
             for(j=1;j<=i;j++)
             {
                 num*=j;
             }
             sum+=num;
           }
      printf("%d",sum);
      }
	  /*********End**********/ 
       return 0;
	}
           

第4關:C循環-水仙花數

本關任務:求出所有的水仙花數。

提示:所謂水仙花數是指一個三位數,其各位數字的立方和等于該數字本身。比如

153

是一個水仙花數,因為

153=1^3+5^3+3^3

注意:本題不需要輸入語句,由于網站限制要求一定要有輸入輸出示例,但同學們可以對輸入部分忽略不計。

輸入:

1

輸出:

153 370 371 407

#include<stdio.h>
	int main(void)
	{  
	  /*********Begin*********/
      int i=0,a,b,c;
      for(i=100;i<1000;i++)
      {
          a=i/100;
          b=(i-a*100)/10;
          c=i%10;
          if(i==a*a*a+b*b*b+c*c*c)
            printf("%d ",i);
      }
	  /*********End**********/ 
       return 0;
	}
           

第5關:C循環-尋找完數

本關任務:一個數如果恰好等于它的因子之和,這個數就稱為"完數"。 例如,

6

的因子為

1、2、3

,而

6=1+2+3

,是以

6

是"完數"。 程式設計式找出

1000

之内的所有完數。

輸入:

1000

輸出: 程式設計式找出

1000

之内的所有完數,每個完數占一行。

輸入:

1000

輸出:

6

28

496

#include<stdio.h>
	int main(void)
	{  
	  /*********Begin*********/
      int i=0;
      int j=0;
      int sum=0;
      int n=0;
      scanf("%d",&n);
     for(i=1;i<n;i++)
     {
         sum=0;
         for(j=1;j<i;j++)
         {
             if(i%j==0)
                sum+=j;
         }
         if(sum==i)
         {
             printf("%d\n",i);
         }
     }
	  /*********End**********/ 
       return 0;
	}
           

第6關:分數求和

本關任務:編寫程式計算

1 - 1/2 + 1/3 - 1/4 + ..... +1/99 - 1/100

的值,并顯示出來(保留結果為小數點後三位)。
#include<stdio.h>
	int main(void)
	{  
	  /*********Begin*********/
	  float sum,t,j=1.0;
    int i,n=1;
    for(i=0;i<100;i++)
    {
       t=j/n;
       j=-j;
       n++;
       sum+=t;
    }
    printf("%.3f",sum);
	  /*********End**********/ 
       return 0;
	}
           

寫在最後

👍🏻點贊,你的認可是我創作的動力!

⭐收藏,你的青睐是我努力的方向!

✏️評論,你的意見是我進步的财富!

繼續閱讀