一、PTA實驗作業
題目1:計算分段函數[2]
本題目要求計算下列分段函數f(x)的值:
f2-11
注:可在頭文件中包含math.h,並調用sqrt函數求平方根,調用pow函數求冪。
1.實驗代碼
double x,y;
scanf("%lf",&x);
if (x>=0){
y = sqrt(x);
}
else{
y = pow(x+1,2) + 2*x + 1/x;
}
printf("f(%.2f) = %.2f",x,y);
return 0;
2 設計思路
第一步:定義兩個雙精度浮點型變量x,y
第二步:從鍵盤輸入一個數存入x中
第三步:若x大於等於0則y等於根號x
第四步:否則y= pow(x+1,2) + 2*x + 1/x
第五步:輸出y
3.本題調試過程碰到問題及解決辦法
1.要開根號跟求平方時只輸入了sqrt以及pow導致答案不准確。解決方法:在代碼開頭輸入#include<math.h>
4.本題PTA提交列表

題目2:7-4 輸出三角形面積和周長
1.實驗代碼
int a,b,c;
double s,area,primeter;
scanf("%d%d%d",&a,&b,&c);
s=(1.0*a+1.0*b+1.0*c)/2;
area=sqrt(s*(s-1.0*a)*(s-1.0*b)*(s-1.0*c));
primeter=a+b+c;
if(a+b>c&&a+c>b&&b+c>a){
printf("area = %.2f; ",area);
printf("perimeter = %.2f",primeter);
}
else{
printf("These sides do not correspond to a valid triangle");
}
2 設計思路
第一步:定義三個整形變量a,b,c
第二步:輸入三個整形變量分別存入啊a,b,c中
第三步:定義三個雙精度浮點型變量s,area,primeter
第四步:計算s=(1.0a+1.0b+1.0c)/2;
第五步:計算area=sqrt(s(s-1.0a)(s-1.0b)(s-1.0*c));
第六步:計算primeter=a+b+c
第七步:判斷a,b,c是否滿足兩邊之和大於第三邊,若滿足則輸出area和perimeter若不滿足則輸出These sides do not correspond to a valid triangle
3.本題調試過程碰到問題及解決辦法
1.對分支結構掌握不熟練導致程序判斷錯誤輸出錯誤的答案。解決方法:通過調試,修改if條件句中的條件。
4.本題PTA提交列表

題目3:7-6 出租車計價
本題要求根據某城市普通出租車收費標准編寫程序進行車費計算。具體標准如下:
起步里程為3公里,起步費10元;
超起步里程后10公里內,每公里2元;
超過10公里以上的部分加收50%的回空補貼費,即每公里3元;
營運過程中,因路阻及乘客要求臨時停車的,按每5分鍾2元計收(不足5分鍾則不收費)。
1.實驗代碼
int fee,minute;
double mile;
scanf("%lf %d",&mile,&minute);
if(mile<=3.0&&minute<5){
fee=10;
}
if(mile<=3.0&&minute>=5){
fee=10+minute/5*2;
}
if(mile>3.0&&minute<5){
fee=10+(mile-3)*2;
}
if(mile>3&&minute>=5){
fee=10+(mile-3)*2+minute/5*2;
}
if(mile>=10&&minute<5){
fee=10+7*2+(mile-10)*3;
}
if(mile>=10&&minute>=5){
fee=10+7*2+3*(mile-10)+2*minute/5;
}
printf("%d",fee);
return 0;
2 設計思路
第一步:定義兩個整形變量fee與minute
第二步:定義一個雙精度浮點型變量mile
第三步:輸入兩個數分別存於mile與minute中
第四步:判定mile與minute與題目所給條件的關系
第五步:根據判定結果算出不同的fee的值
第六步:輸出符合條件的fee值
3.本題調試過程碰到問題及解決辦法
1.判定條件打的不准確導致結果錯誤。解決辦法:通過Dev c的調試找出問題並修改
2.將mile定義為整形變量導致答案錯誤。解決辦法:調試並更深一步了解整形變量與浮點型變量的定義並修改
4.本題PTA提交列表

題目4:7-8 程序設計聯考
1.實驗代碼
int number,x;
scanf("%d",&number);
x=number/100000;
switch(x){
case 1 :
printf("Hunan Agricultural University");
break;
case 2 :
printf("Jishou University");
break;
case 3 :
printf("Huaihua University");
break;
case 4 :
printf("Aerospace University");
break;
case 5 :
printf("Ocean University");
break;
default:
printf("Other University");
break;
}
return 0;
2 設計思路
第一步:定義兩個整形變量number,x
第二步:輸入一個數存於number中
第三步:求出數number的第一位數字x
第四步:用switch語句對x進行判定
第五步:根據不同判定結果輸出不同大學
3.本題調試過程碰到問題及解決辦法
1.對於switch語句掌握程度不夠,case語句后忘記加break導致結果錯誤。解決辦法:通過看書上代碼找出錯誤。
4.本題PTA提交列表

二、截圖本周題目集的PTA最后排名。

三、本周學習總結
1.你學會了什么?
學會了用分支結構去編寫c語言程序,並能通過分支結構去解決一些簡單的問題。
2.本周的內容,你還不會什么?
對於if else語句跟switch語句的具體區別還不是太清楚,比如步知道什么時候用switch語句更方便。
3.你碰到什么困難,打算如何解決?
課后認真復習,勤思考,勤打代碼,不會的問題多問同學跟老師。
