分支結構中題目7-8計算個人所得稅:
1.實驗代碼:
# include <stdio.h> # include <math.h> int main() { float s,y; scanf("%f",&s); if (s <= 1600) { y = 0; } else if ((s > 1600)&&(s<=2500)){ y = (s - 1600) * 0.05; } else if ((s > 2500)&&(s<=3500)){ y = (s - 1600) * 0.1; } else if ((s > 3500)&&(s<=4500)){ y = (s - 1600) * 0.15; } else{ y =(s - 1600) * 0.2; } printf("%.2f",y); return 0; }
2 設計思路:用else-if語句將多種情況分開,需調用數學函數<math.h>
第一步:取兩個浮點數s(薪水)y(個人所得稅),輸入s。
第二步:利用if 語句判斷是否滿足 s<=1600的情況,若滿足執行該語句輸出為0,若不滿足則進入下列語句判斷條件是否滿足,以此類推。最終輸出結果保留兩位小數“%.2f"。
流程圖:
3.本題調試過程碰到問題及解決辦法:
1)沒有用到與的邏輯關系符。
2)忘記打&。
3)else-if語句不熟練。
解決方案,尋找並修改錯誤,將代碼重復寫了幾遍,找了幾道類似的else-if語句的題進行解決。
循環結構1 7-1 統計學生平均成績與及格人數
1.實驗代碼:
#include<stdio.h> #include<math.h> int main() { int n,i,a,count=0,sum = 0; float d; scanf("%d", &n); if ( n == 0) { printf("average = 0.0\n"); printf("count = 0"); }else { for (i = 0; i < n; i++) { scanf("%d", &a); sum = sum + a; if (a >= 60) count++; } d = (float)sum /(float) n; printf("average = %.1f\n", d); printf("count = %d", count); } }
2 設計思路:利用循環結構輸入一批學生的成績,計算平均成績,並統計不及格人數。
1)定義n為輸入數據數,i為循環變量,a輸入的學生成績,count計數初始值為0,sum成績和值,平均值d。
2)判斷輸入人數是否為0,若為0輸出count=0,d=0。只有當輸入人數不為0時才有d=sum/n。
3)添加一個for循環,若輸入人數不為0,進入該循環,計算成績和值(sum=sum+a)如果成績大於60即為及格成績,count+1。
4)計算平均值,輸出平均值保留1位小數,輸出及格人數。
流程圖:
3.本題調試過程碰到問題及解決辦法:
結構錯誤:在判斷成績是否及格后計算sum值。
解決方法將"sum=sum+a;"輸入a值的語句之后,先對sum進行計算后判斷成績是否及格,並進行統計。
循環2 7-7 尋找250:
1.實驗代碼:
#include <stdio.h> int main() { int n,count=0; while(n!=250){ scanf("%d",&n); count++; } printf("%d",count); return 0; }
2 設計思路:
1)定義一個n,利用循環尋找n=250,當n=250時停止輸入,count初始值為0,用來記錄輸入的第幾個數是250。
2) 沒輸入一個值count=count+1直到n=250時。
3)輸出count值。
流程圖:
3.本題調試過程碰到問題及解決辦法:語句的不熟練出現的一些小錯誤和題目中給出的是計數從1開始,就將count定義為0。
解決方案將count=0。
總結學習進度條:
1、總結這幾周所學內容、遇到的問題以及解決方法:
這幾周主要重新復習了之前講過的知識,和一些作業題目。把while for do while語句的一些使用
例如:
(1)循環次數已知使用for循環語句實現比較好
(2)循環次數未知,但循環條件在進入循環時明確使用while循環語句實現比較好
(3)循環次數未知,且循環條件在進入循環時未知,需要在循環體中明確使用do while循環語句實現比較好
遇到的問題還是對一些作業中的題目不理解,知道可以這么做,但不知道為什么這么做,暫且的解決方法還是將題目多次拿出來看。
我點評的三名同學:
1)李銳同學:
2)楊士奇同學:
3)李睿淇同學: