一 實驗題目,設計思路,實驗方法
4-2-4 三天打魚兩天曬網(15 分)
中國有句俗語叫“三天打魚兩天曬網”。假設某人從某天起,開始“三天打魚兩天曬網”,問這個人在以后的第N天中是“打魚”還是“曬網”?
輸入格式:
輸入在一行中給出一個不超過1000的正整數N。
輸出格式:
在一行中輸出此人在第N天中是“Fishing”(即“打魚”)還是“Drying”(即“曬網”),並且輸出“in day N”。
輸入樣例1:
103
輸出樣例1:
Fishing in day 103
輸入樣例2:
34
輸出樣例2:
Drying in day 34
設計思路:列舉出1,2,3,6,7,8..為打魚,4,5,9,10..為曬網
解決方法:a>=1&&a<=3,並利用if-else語句。
二 源程序
#include<stdio.h>
int main(void)
{
int N,a;
scanf("%d",&N);
a=N%5;
if(a>=1&&a<=3){
printf("Fishing in day %d\n",N);
}
else{
printf("Drying in day %d\n",N);
}
return 0;
}
三 遇到的問題和解決方法:將打魚的條件表示為(a=1||a=2||a=3),解決方法:a>=1&&a<=3
一 實驗題目,設計思路,解決方法
4-2-3 輸出三角形面積和周長(15 分)
本題要求編寫程序,根據輸入的三角形的三條邊a、b、c,計算並輸出面積和周長。注意:在一個三角形中, 任意兩邊之和大於第三邊。三角形面積計算公式:area=√s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。
輸入格式:
輸入為3個正整數,分別代表三角形的3條邊a、b、c。
輸出格式:
如果輸入的邊能構成一個三角形,則在一行內,按照
area = 面積; perimeter = 周長
的格式輸出,保留兩位小數。否則,輸出
These sides do not correspond to a valid triangle
輸入樣例1:
5 5 3
輸出樣例1:
area = 7.15; perimeter = 13.00
輸入樣例2:
1 4 1
輸出樣例2:
These sides do not correspond to a valid triangle
設計思路:三角形兩邊之和大於第三遍,有是三角形的也有不是三角形的情況;
解決辦法:a<b+c&&b<a+c&&c<a+b,並利用if-else語句。
二 源程序
#include<stdio.h>
#include<math.h>
int main(void)
{
int a,b,c;
double area,perimeter,d;
scanf("%d %d %d",&a,&b,&c);
if(a<b+c&&b<a+c&&c<a+b){
d=(a+b+c)/2;
area=sqrt(d*(d-a)*(d-b)*(d-c));
perimeter=a+b+c;
printf("area = %.2f; perimeter = %.2f\n",area,perimeter);
}
else{
printf("These sides do not correspond to a valid triangle");
}
return 0;
}
三 遇到的問題和解決方法:不明白怎么表示與的邏輯關系和根號的表示方法,看書得知。
一 實驗題目,設計思路,解決方案
4-2-2 計算個人所得稅(10 分)
假設個人所得稅為:稅率×(工資−1600)。請編寫程序計算應繳的所得稅,其中稅率定義為:
- 當工資不超過1600時,稅率為0;
- 當工資在區間(1600, 2500]時,稅率為5%;
- 當工資在區間(2500, 3500]時,稅率為10%;
- 當工資在區間(3500, 4500]時,稅率為15%;
- 當工資超過4500時,稅率為20%。
輸入格式:
輸入在一行中給出非負工資。
輸出格式:
在一行輸出個人所得稅,精確到小數點后2位。
輸入樣例1:
1600
輸出樣例1:
0.00
輸入樣例2:
1601
輸出樣例2:
0.05
輸入樣例3:
3000
輸出樣例3:
140.00
輸入樣例4:
4000
輸出樣例4:
360.00
輸入樣例5:
5000
輸出樣例5:
680.00
設計思路:用多分支語句將不同情況分開,解決方案:用else-if語句
二 源程序
#include<stdio.h>
int main(void)
{
double a,b;
scanf("%lf",&a);
if (a>=0&&a<=1600){
b=0;
}
else if (a>1600&&a<=2500){
b=0.05*(a-1600);
}
else if (a>2500&&a<=3500){
b=0.1*(a-1600);
}
else if (a>3500&&a<=4500){
b=0.15*(a-1600);
}
else{
b=0.2*(a-1600);
}
printf("%.2lf\n",b);
return 0;
}
三 遇到的問題和解決方法
if,else,else if語句中的關系不正確,沒有用到與的邏輯關系符,沒有考慮收入為0的情況;
例a>=0&&a<=1600
心得體會:1遇到不會的要學會利用課本和網上資源;
2注意空格,格式,還有變量的類型,做除法時要注意分母不為零,且注意題目要求輸出的格式。