第八週編程總結

7-1 混合類型數據格式化輸入 (5 分)

本題要求編寫程序,順序讀入浮點數一、整數、字符、浮點數2,再按照字符、整數、浮點數一、浮點數2的順序輸出git

1).實驗代碼函數

#include<stdio.h>spa

 

int main()設計

{調試

  int x,y;orm

  float n,m;排序

  

  scanf("%f %d %c %f",&n,&x,&y,&m);ci

  printf("%c %d %.2f %.2f\n",y,x,n,m);get

  return 0;it

  

}  

2). 設計思路

第一步:定義變量

第二步:輸入變量

第三步:輸出答案

 

 

3).本題調試過程碰到的問題及解決方法

            

 

-

 

 

 

        問題:格式控制符使用錯誤錯誤

       解決方法:將整型變量的格式控制符改爲字符變量的格式控制符

 

       4).運行結果截圖

  

      

 

7-2 計算符號函數的值 (10 分)

對於任一整數n,符號函數sign(n)的定義以下:

 

請編寫程序計算該函數對任一輸入整數的值。

1)實驗代碼

#include<stdio.h>

int main()

{

  int N;

  scanf("%d",&N);

  if(N<0){

    

    printf("sign(%d) = -1\n",N);

  }

  else{

    if(N>0){

      

      printf("sign(%d) = 1\n",N);

      

    }

    

    else{

      printf("sign(%d) = 0\n",N);

      

    }

    return 0;

    

  }

 

  

 

}

2).設計思路

第一步:定義變量

第二步:輸入實數

第三步:調用if語句,判斷三種狀況

第四步:輸出每種狀況的答案.

3).本題調試過程碰到的問題及解決方法

           

    

 

          問題:輸出格式錯誤

          解決方法:輸出時複製輸出樣例更改值

       4).運行結果截圖

 

 

 

 

7-3 計算我的所得稅 (10 分)

假設我的所得稅爲:稅率×(工資−1600)。請編寫程序計算應繳的所得稅,其中稅率定義爲:

· 當工資不超過1600時,稅率爲0;

· 當工資在區間(1600, 2500]時,稅率爲5%;

· 當工資在區間(2500, 3500]時,稅率爲10%;

· 當工資在區間(3500, 4500]時,稅率爲15%;

· 當工資超過4500時,稅率爲20%。

1).實驗代碼

#include<stdio.h>

 

int main()

 

{

  

  int wages;

  float rate,pit;

  

  scanf("%d",&wages);

  if(wages<=1600)

 

      {

      

        pit=0.00;

     

      }

     

      else{

        

        if(wages<=2500){

          

          rate=0.05;

          pit=rate*(wages-1600);

          

        }

        

        else

        

        {

        

          if(wages<=3500)

        

          {

            rate=0.10;

            pit=rate*(wages-1600);

            

          }

          else{

        

            if(wages<=4500){

              

              rate=0.15;

              pit=rate*(wages-1600);

              

            }

            else{

              

              rate=0.20;

              pit=rate*(wages-1600);

              

          

            }

          }

        }

        

      }

        

         printf("%.2f",pit);   

  return 0;

}2).設計思路

第一步:定義變量

第二步:調用if語句,判斷工資的階段

第三步:計算我的所得稅

第四步:輸出答案

3).本題調試過程碰到的問題及解決方法

 

 

 

 

 

問題:範圍判斷錯誤

解決方法:添加等價的條件

4).運行結果截圖

          

 

 

7-4 比較大小 (10 分)

本題要求將輸入的任意3個整數從小到大輸出。

 

1).實驗代碼

#include<stdio.h>

int main()

 

{

  

  int a,b,c,t;

  scanf("%d %d %d",&a,&b,&c);

  

  if(a<b)

  {

  

    t=b;b=a;a=t;

    

  }

  

  if(a<c)

  {

    

    t=c;c=a;a=t;

    

  }

  if(b<c)

  {

    

    t=c;c=b;b=t;

    

  }

  

  printf("%d->%d->%d",c,b,a);

  return 0;

  

}

 

          2).設計思路

第一步:自定義函數聲明,定義變量

第二步:輸入變量

第三步:調用if語句,判斷三個數的大小

第四步:輸出答案

 

3).本題調試過程碰到的問題及解決方法

       

 

 

 

 

          問題:輸出的大小排序錯誤

          解決方法:更改成正確的排序

        4).運行結果截圖

                 

 

 

 

7-5 究竟是不是太胖了 (10 分)

聽說一我的的標準體重應該是其身高(單位:釐米)減去100、再乘以0.9所獲得的公斤數。真實體重與標準體重偏差在10%之內都是完美身材(即 | 真實體重 − 標準體重 | < 標準體重×10%)。已知市斤是公斤的兩倍。現給定一羣人的身高和實際體重,請你告訴他們是否太胖或太瘦了。

1) .實驗代碼

#include<stdio.h>

 

#include<math.h>

int main()

{

  int N,high,weight,x,y,i;

  scanf("%d",&N);

  

  for(i=1;i<=N;i++){

    

    scanf("%d %d\n",&high,&weight);

    

  

  x=(high-100)*0.9*2;

  y=fabs(weight-x);

  

  if(y<x*0.1){

    

    printf("You are wan mei!\n");

  }

  else

  {

    if(y>=x*0.1&&weight<x){

 

    

    printf("You are tai shou le!\n");

  }

  if(y>=x*0.1&&weight>x){

    

    printf("You are tai pang le!\n");

  }

}

}

  return 0;

 

}            2).設計思路

第一步:自定義函數聲明,定義變量

第二步:輸入變量

第三步:調用for語句,進行循環輸入身高和體重

第四步:計算標準體重

第五步:判斷實際體重與標準體重的關係

第六步:輸出結果

 

3).本題調試過程碰到的問題及解決方法

 

 

 

           問題:少執行了一次循環

          解決方法:將for語句中的條件而補充完整      

        4).運行結果截圖

      

 

 

 

 

 

 
7-6 高速公路超速處罰 (15 分)

按照規定,在高速公路上行使的機動車,達到或超出本車道限速的10%則處200元罰款;若達到或超出50%,就要吊銷駕駛證。請編寫程序根據車速和限速自動判別對該機動車的處理。

2).實驗代碼

#include<stdio.h>

int main()

{

  

  double velocity,n,x;

 

  scanf("%lf %lf",&velocity,&n);

  

 x =(velocity - n)*100 / n;

  

      if(x>=50){

     

     printf("Exceed %.0f%%. License Revoked\n",x);

       

     }

     else{

 

    

    if(x>=10){

    

printf("Exceed %.0f%%. Ticket 200", x);

     }

     else{

     

 

       printf("OK\n");

     }

  }

  return 0;

  

}  

2). 設計思路

第一步:定義變量

第二步:輸入變量

第三步:調用if語句判斷是否超速

第四步:輸出答案

 

 

4).本題調試過程碰到的問題及解決方法

            

 

-

 

 

 

        問題:變量類型定義錯誤

       解決方法:將整型變量更換成浮點型變量

       4).運行結果截圖

  

      

 

7-7 統計字符 (15 分)

本題要求編寫程序,輸入10個字符,統計其中英文字母、空格或回車、數字字符和其餘字符的個數

2)實驗代碼

#include<stdio.h>

int main()

{

  

  int letter,blank,digit,other;

  char ch;

  int i;

   letter=blank=digit=other=0;

  for(i=1;i<=10;i++)

  {

    ch=getchar();

    if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))

      letter++;

    

    else if(ch==' '||ch=='\n')

      blank++;

    

    else if(ch>='0'&&ch<='9')

      digit++;

 

    else

      other++;

      

  }

 

  printf("letter = %d, blank = %d, digit = %d, other = %d\n",letter,blank,digit,other);

  return 0;

}

3).設計思路

第一步:定義變量

第二步:輸入變量

第三步:調用if語句,判斷類型

第四步:輸出答案.

3).本題調試過程碰到的問題及解決方法

           

    

 

          問題:變量爲初始化

          解決方法:將變量初始化

       4).運行結果截圖

 

 

 

 

7-8 統計學平生均成績與及格人數 (15 分)

本題要求編寫程序,計算學生們的平均成績,並統計及格(成績不低於60分)的人數。題目保證輸入與輸出均在整型範圍內。

2).實驗代碼

#include<stdio.h>

int main()

{

  

  int i,N,performance,count=0,sum=0;

  

  double average=0;

  

  scanf("%d",&N);

if(N==0){

printf("average = 0.0\ncount = 0",average,count);

 

}

  else{

  

  for(i=1;i<=N;i++)

  {

    scanf("%d",&performance);

    sum+=performance;

    if(performance>=60)

    count++;

   

  }

 

  average=sum*1.0/N;

  printf("average = %.1f\ncount = %d\n",average,count);

  return 0;

  

}

}

2).設計思路

第一步:定義變量

第二步:調用if語句,判斷學生人數是否爲0

第三步:調用for語句輸入成績

第四步:計算平均數與及格的人數

第五步:輸出結果

3).本題調試過程碰到的問題及解決方法

 

 

 

 

 

問題:未考慮到沒有學生的狀況

解決方法:單獨討論沒有學生的狀況

4).運行結果截圖

          

 

 

7-9 輸出閏年 (15 分)

輸出21世紀中截止某個年份以來的全部閏年年份。注意:閏年的判別條件是該年年份能被4整除但不能被100整除、或者能被400整除

 

1).實驗代碼

#include<stdio.h>

int main()

{

  

  int year,i;

  scanf("%d",&year);  

  

  if(year>2000&&year<2004)

          {

            printf("None\n");

          }

  

  if(year>2000&&year<=2100)

           {    

               for(i=2000;i<=year;i++)

                   {

                   

                     if(i%4==0&&i%100!=0)

                         {

                  

            printf("%d\n",i);

                

                         }

                   

   }

              

          

           }

   else

           {

             printf("Invalid year!\n");

           }

 

  return 0;

}

          2).設計思路

第一步:定義變量

第二步:輸入變量

第三步:調用if語句,進行判斷

第四步:輸出答案

 

3).本題調試過程碰到的問題及解決方法

       

 

 

 

 

          問題:未考慮到沒有閏年的狀況

          解決方法:對沒有閏年的狀況進行討論

        4).運行結果截圖

                 

 

相關文章
相關標籤/搜索