1. 程式人生 > >第八週程式設計總結

第八週程式設計總結

第八週程式設計總結

題目1:8-1 混合型別資料格式化輸入 (5 分)

本題要求編寫程式,順序讀入浮點數1、整數、字元、浮點數2,再按照字元、整數、浮點數1、浮點數2的順序輸出。

1).實驗程式碼

#include<stdio.h>

int main()

{

  int n;

  float number1,number2;

  char op;

  scanf("%f %d %c %f",&number1,&n,&op,&number2);

  printf("%c %d %.2f %.2f",op,n,number1,number2);

  return 0;

}

2).設計思路

第一步 輸入並定義變數

第二步 輸出並定義變數

3)本題除錯中遇到的問題及解決方案

沒有遇到問題

4).執行結果截圖

題目2:8-2 計算符號函式的值 (10 分)

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

說明: https://images.ptausercontent.com/3

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

 

1).實驗程式碼

#include<stdio.h>

int main()

{

  int n,result;

  scanf("%d",&n);

  if(n == 0){

    result = 0;

  }

  else if(n<0){

    result = -1;

  }

  else{

    result = 1;

  }

  printf("sign(%d) = %d",n,result);

  return 0;

}

2).設計思路

第一步 整形輸入變數n

第二步 使用if-else語句進行判斷

第三步 輸出結果

3)本題除錯中遇到的問題及解決方案

If語句中的等號出現錯誤,==為等號,=為賦值語句

4).執行結果截圖

題目3:8-3 計算個人所得稅 (10 分)

假設個人所得稅為:稅率×(工資1600)。請編寫程式計算應繳的所得稅,其中稅率定義為:

  • 當工資不超過1600時,稅率為0;
  • 當工資在區間(1600, 2500]時,稅率為5%;
  • 當工資在區間(2500, 3500]時,稅率為10%;
  • 當工資在區間(3500, 4500]時,稅率為15%;
  • 當工資超過4500時,稅率為20%。

1).實驗程式碼

#include<stdio.h>

int main()

{

  double wage,rate;

  scanf("%lf",&wage);

  if(wage>=0){

    if(wage<=1600){

      rate = 0.00;

    }

    else if(wage>1600&&wage<=2500){

      rate = 0.05*(wage-1600);

    }

    else if(wage>2500&&wage<=3500){

      rate = 0.10*(wage-1600);

    }

    else if(wage>3500&&wage<=4500){

      rate = 0.15*(wage-1600);

    }

    else if(wage>4500){

      rate = 0.20*(wage-1600);

    }

  }

  printf("%.2lf",rate);

  return 0;

}

2).設計思路

第一步 使用雙精度浮點型進行定義

第二步使用if-else語句進行對不同工資的判斷

第三步進行個人稅的輸出

3)本題除錯中遇到的問題及解決方案

無問題

4).執行結果截圖

題目4:8-4 比較大小 (10 分)

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

 

1).實驗程式碼

#include<stdio.h>

int main()

{

  int a,b,c;

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

  int e = 0;

  if(a>b){

    e = a;

    a = b;

    b = e;

  }

  if(a>c){

    e = a;

    a = c;

    c = e;

  }

  if(b>c){

    e = b;

    b = c;

    c = e;

  }

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

  return 0;

}

2).設計思路

第一步 使用4個盒子,其中一個空盒子用來儲存2者之間較大的

第二步使用if-else語句進行大小的比較,

第三步按順序輸出

3)本題除錯中遇到的問題及解決方案

4).執行結果截圖

題目5:8-5 到底是不是太胖了 (10 分)

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

1).實驗程式碼

#include<stdio.h>

int main()

{

    int n;

    double s,x,a,b;

    scanf("%d",&n);

    while(n--)

    {

        scanf("%lf%lf",&a,&b);

        s=(a-100.0)*0.9;

        x=b/2.0;

        if(x>(s-s*0.1)&&x<(s+s*0.1))

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

        if(x>=(s+s*0.1))

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

        if(x<=(s-s*0.1))

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

    }

}

2).設計思路

第一步 進行輸入並定義變數

第二步有3種情況使用if-else語句進行不同的輸出。

3)本題除錯中遇到的問題及解決方案

If條件語句使用數學函式進行判斷,導致部分正確

4).執行結果截圖

題目6:8-6 高速公路超速處罰 (15 分)

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

1).實驗程式碼

#include <stdio.h>

int main()

{

    int speed,limit;

    double a;

    scanf("%d %d",&speed,&limit);

    a=(double)(speed-limit)*100/(double)limit;

    if(a<10||speed<limit)

        printf("OK");

    else if(a<50)

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

    else

        printf("Exceed %.0f%%. License Revoked",a);

    return 0;

}

2).設計思路

第一步 輸入並定義速度和限制速度

第二步求出罰款200元的條件

第三步使用if-else語句進行判斷是否需要罰款

第四步 格式化輸出

3)本題除錯中遇到的問題及解決方案

滿足一個速度小於10%是僅僅不夠的,速度必須小於限制速度才是沒有超速

4).執行結果截圖

題目7:8-7 統計字元 (15 分)

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

1).實驗程式碼

#include<stdio.h>

int main()

{

    int letter=0,digit=0,blank=0,other=0;

    int i;

    char ch;

 

    for(i=0;i<=9;i++){

        scanf("%c",&ch);

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

               letter++;

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

               digit++;

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

               blank++;

        else

               other++;

    }

      scanf("%c",&ch);

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

     return 0;

}

2).設計思路

第一步 進行格式化輸入並定義儲存變數的字元

第二步判斷是否為字元,數字等,如果是並進行累加

第三步格式化輸出

3)本題除錯中遇到的問題及解決方案

空格和回車的判斷不熟悉,查閱書籍可知

4).執行結果截圖

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

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

1).實驗程式碼

#include<stdio.h>

#include<math.h>

int main(void)

{

       int n,grade;

    int count;

    double sum,ave;

    scanf("%d",&n);

    count=0;

    sum=0.0;

    for(int i=0;i<n;i++){

        scanf("%d",&grade);

        sum+=grade;

        if(grade>=60) count+=1;

    }

    ave = n!=0? sum/n : 0;

    printf("average = %.1lf\n",ave);

    printf("count = %d",count);

       return 0;

}

2).設計思路

第一步 呼叫數學函式使用標頭檔案

第二步 輸入並定義變數

第三步使用if-else語句進行判斷是否及格,是,則進行累加

第四步 求出平均數,並進行格式化輸出

3)本題除錯中遇到的問題及解決方案

需注意當n=0時不能進行平均值的運算

4).執行結果截圖

題目:8-9 輸出閏年 (15 分)

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

程式碼:

#include<stdio.h>

int main()

{

       int year, i, count=0;

       scanf("%d", &year);

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

              printf("Invalid year!\n");

              else{

              for(i=2001; i<=year; i++){

                     if(i%4 == 0&&i%100!=0||i%400 == 0){

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

                            count++;

                     }

              }

              if(count == 0)

                     printf("None\n");

                     }     

       return 0;

}

2).設計思路

第一步 格式化輸入年份

第二步 判斷是否滿足閏年的條件,使用if-elae語句

第三步 格式化輸出變數

3)本題除錯中遇到的問題及解決方案

If條件句的邏輯關係不明確,邏輯或和邏輯與的符號混淆

查詢書籍

4).執行結果截圖