C語言的第一次實驗報告


一 實驗題目,設計思路,實驗方法

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(sa)(sb)(sc)​​,其中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注意空格,格式,還有變量的類型,做除法時要注意分母不為零,且注意題目要求輸出的格式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM