一、PTA實驗作業
題目1:計算分段函數[2]
本題目要求計算下列分段函數f(x)的值:
1.實驗代碼
double x,result;scanf("%lf",&x);if(x>=0){result=sqrt(x);}else{result=pow(x+1,2)+2*x+1/x;}printf("f(%.2f) = %.2f",x,result);
2 設計思路
- (1)定義兩個浮點型變量x,result。
- (2)輸入x的值。
- (3)若x>=0,result=x開平方。
- (4)若想x<=0,result=pow(x+1,2)+2*x+1/x。
(5)最后以保留兩位小數的形式輸出result的值。
3.本題調試過程碰到問題及解決辦法
在做本題時,沒有什么思路和語法上的錯誤,主要是格式上,輸出中存在空格的遺漏,導致格式錯誤。
4.本題PTA提交列表
題目2: 輸出三角形面積和周長
1.實驗代碼
double a,b,c,s,area,perimeter;scanf("%lf%lf%lf",&a,&b,&c);perimeter=a+b+c;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));if(a+b>c && a+c>b && b+c>a){printf("area = %.2f; perimeter = %.2f",area,perimeter);}else{printf("These sides do not correspond to a valid triangle");}
2 設計思路
- (1)定義3個整形變量a,b,c,來代表三角形的三個邊長。
- (2)再定義三個浮點型變量s,area,perimeter,s=(a+b+c)/2,area代表面積,perimeter代表周長。
- (3)輸入三角形的三邊邊長a,b,c,
- (4)如果a+b>c 并且 a+c>b 再加上 b+c>a,說明這三條邊能構成一個三角形。
- (5)則perimeter=a+b+c,s=(a+b+c)/2,area=sqrt(s(s-a)(s-b)*(s-c)),計算出周長和面積的值,并輸出。
(6)若這三條邊不能構成三角形則輸出These sides do not correspond to a valid triangle。
3.本題調試過程碰到問題及解決辦法
(1)首先第一次在定義變量時沒有考慮到s和area,應該為浮點型,導致結果不正確。
(2)再者調用數學函數時沒有在前面開頭輸入編譯預處理命令,#include<math.h>
(3)再者就是沒有看清題目要求保留幾位小數導致結果錯誤。4.本題PTA提交列表
題目3: 出租車計價
1.實驗代碼
int minute;double mileage,fee,extra;scanf("%lf%d",&mileage,&minute);if(mileage<=3){fee=10;}else if(mileage>3 && mileage<=10){fee=10+(mileage-3)*2;}else{fee=10+14+(mileage-10)*3;}if(minute<5){extra=0;}else{extra=minute/5*2;}fee=fee+extra;printf("%.0f",fee);
2 設計思路
- (1)定義一個整形變量minute,三個浮點型變量mileage,fee,extra(extra代表停車時所多需要交的錢,mileage代表里程。
- (2)輸入mileage,minute的值。
- (3)如果里程數小于三公里,則fee=10,如果里程數在3公里到10公里之間,則fee=10+(mileage-3)2,如果里程高于十公里,則fee=10+14+(mileage-10)3
- (4)如果停車的時間mnute<5,則extra=0,否則extra=minute/5*2。
(5)最后將fee和extra的值相加放到fee上,最后輸出fee的值。
3.本題調試過程碰到問題及解決辦法
(1)第一點就是對題目的含義沒有理解透徹,導致結果一直錯誤,我還一直很納悶,感覺自己思路沒有錯可是就是不會對,后來看了同學的代碼,與自己對照下,再次去看題目,才理解透徹。
(2)再者就是剛開始對于時間這個額外的前不知道要怎樣加到總錢數上,最后是由助教教我在定義一個extra的變量,使得思路更加清晰。
4.本題PTA提交列表
題目4: 程序設計聯考
1.實驗代碼
int account,x;scanf("%d",&account); x=account/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;}
2 設計思路
- (1)首先定義account,x,這兩個整形變量。
- (2)在輸入一個大于六位數的account。
- (3)x=account/100000,得出x的值。
(4)進行條件判斷
switch (x){
當x= 1:輸出("Hunan Agricultural University");break;
當x= 2:輸出("Jishou University");break;
當x= 3:輸出("Huaihua University");break;
當x= 4:輸出("Aerospace University");break;
當x= 5:輸出("Ocean University");break;
否則 :輸出("Other University");break;
進行以上操作。最后輸出相應的答案。3.本題調試過程碰到問題及解決辦法
這題相對比較簡單,就只有因為剛開始接觸switch語句是有點不熟悉,在最后漏了個defoult導致結果錯誤。
4.本題PTA提交列表
二、本周題目集的PTA最后排名。
三、本周學習總結
1.你學會了什么?
本周學習了條件語句的使用,懂得了簡單的對于if,if lse,和else if,還有if的嵌套語句的使用,還有switch語句的使用,還學會了如何對自己的代碼進行調試。
還接觸了for循環語句
2.本周的內容,你還不會什么?
對于本周的內容都有大致的掌握,可是對于if嵌套語句,和沒有else的if語句還不太會用,不是很理解其用法。
3.你碰到什么困難,打算如何解決?
我覺得遇到問題先自己思考,不懂的話我會去于同學探討,或則問助教。