一,PTA實驗作業
題目1.計算分段函數
本題目要求計算下列分段函數f(x)的值:
1.實驗代碼
double x,result;
scanf("%lf",&x);
if(x<0)
{
result=pow(x+1,2)+2*x+1/x;
}
else
{
result=pow(x,0.5);
}
printf("f(%.2f) = %.2f",x,result);
return 0;
2.設計思路
- 第一步:定義兩個雙精度浮點型變量x,result。
- 第二步:輸入x的值。
- 第三步:用if語句對輸入的x值與0的關系進行判斷。
- 第四步:如果x<0,對result進行賦值:result=pow(x+1,2)+2*x+1/x。
- 第五步:否則,對result進行賦值: result=pow(x,0.5)。
- 第六步:按“f(x) = result”的格式輸出,其中x與result都保留兩位小數。
3.本題調試過程碰到問題及解決辦法
- (1).編寫錯誤:else后加了限定條件。
4.本題PTA提交列表
題目2.輸出三角形面積和周長
本題要求編寫程序,根據輸入的三角形的三條邊a、b、c,計算並輸出面積和周長。注意:在一個三角形中, 任意兩邊之和大於第三邊。三角形面積計算公式:
1.實驗代碼
double a,b,c,s;
scanf("%lf%lf%lf",&a,&b,&c);
s=(a+b+c)/2;
if((a+b>c)&&(b+c>a)&&(c+a>b)){
printf("area = %.2f; perimeter = %.2f",sqrt(s*(s-a)*(s-b)*(s-c)),a+b+c);
}
else
printf("These sides do not correspond to a valid triangle");
return 0;
2.設計思路
- 第一步:定義四個雙精度浮點型變量a,b,c放三角形邊長以及s。
- 第二步:輸入三邊長a,b,c的值。
- 第三步:賦值s=(a+b+c)/2。
- 第四步:用if語句對輸入的三邊長的大小關系進行判斷是否可以組成三角形,條件為任意兩邊之和大於第三邊:((a+b>c)&&(b+c>a)&&(c+a>b))。
- 第五步:如果滿足條件,輸出面積等於sqrt(s(s-a)(s-b)*(s-c)),周長等於a+b+c。
- 第六步:否則,輸出These sides do not correspond to a valid triangle。
3.本題調試過程碰到問題及解決辦法
- (1).段錯誤:scanf語句沒加&號。
- (2).判斷三角形的條件錯誤:有上網查詢最后正確了。
4.本題PTA提交列表
題目2.出租車計價
本題要求根據某城市普通出租車收費標准編寫程序進行車費計算。具體標准如下:
起步里程為3公里,起步費10元;
超起步里程后10公里內,每公里2元;
超過10公里以上的部分加收50%的回空補貼費,即每公里3元;
營運過程中,因路阻及乘客要求臨時停車的,按每5分鍾2元計收(不足5分鍾則不收費)。
1.實驗代碼
int time,m1,m2;
double mile;
scanf("%lf %d",&mile,&time);
if(mile<=3){
m1=10;
}
else if(mile>3&&mile<=10){
m1=10+2*(mile-3);
}
else
m1=24+3*(mile-10);
if(time<5){
m2=0;
}
else
m2=2*time/5;
printf("%d",m1+m2);
2.設計思路
- 第一步:定義三個整型變量time放等待時間,m1放正常費用,m2放停車費用。定義一個雙精度浮點型變量mile放行駛里程。
- 第二步:輸入行駛公里mile和等待時間time的值。
- 第三步:用if語句將行駛里程分為三類。
- 第四步:如果行駛里程mile小於等於3,賦值正常費用m1=10。
- 第五步:如果行駛里程mile大於3小於等於10,賦值正常費用m1=10+2*(mile-3)。
- 第六步:否則,m1=24+3*(mile-10)。
- 第七步:用if語句將等待時間分為兩類。
- 第八步:如果等待時間time小於5,賦值m2=0。
- 第九步:否則,賦值m2=2*time/5。
- 第十步:最后輸出m1+m2即為總費用。
3.本題調試過程碰到問題及解決辦法
- (1).結果四舍五入:題目要求結果輸出需要四舍五入,上網查詢並沒有得到解決,但是我將mile定義為雙精度浮點型,m1是mile經過運算得到的。最后提交答案正確,可是還是不理解四舍五入應該怎么實現。
4.本題PTA提交列表
題目4.程序設計聯考
自從湖南農業大學、吉首大學和懷化學院組織程序設計課程聯考以后,舉辦聯考的經驗越來豐富。尤其是在使用PTA系統作為考試平台之后,聯考工作得到了很多學校的認可和支持。所以,現在參與聯考的學校比較多。為了便於區分考生,考生賬號的第一位是學校代號。1代表Hunan Agricultural University,2代表Jishou University,3代表Huaihua University,4代表Aerospace University,5代表Ocean University。 請編寫程序根據考生的賬號區分考生的學校。
1.實驗代碼
int account,school;
scanf("%d",&account);
school=account/100000;
switch(school){
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.設計思路
- 第一步:定義兩個整型變量account放考生賬號,school放考生所在學校。
- 第二步:輸入account的值。
- 第三步:用switch語句實現多分支判斷。
- 第四步:如果school=1,輸出Hunan Agricultural University。
- 第五步:如果school=2,輸出Jishou University。
- 第六步:如果school=3,輸出Huaihua University。
- 第七步:如果school=4,輸出Ocean University。
- 第八步:否則,輸出Other University。
3.本題調試過程碰到問題及解決辦法
- (1).編寫錯誤:第一次用if語句來實現多分支,后來又改寫成switch語句。
- (2).不會編寫:在使用switch語句時,不知道要怎樣用它實現判斷第一個數字。
解決辦法:在課堂中老師講到了一個同類型的成績分類的例題,聽完后一下子明白了該怎么實現判斷條件。自己做不出的原因是對/號和%號的理解不夠深刻。
4.本題PTA提交列表
二、截圖本周題目集的PTA提交列表及最后排名。
三、本周學習總結
1.你學會了什么?
- if-else語句:
if (x=3)
判斷符號為==else (x==3)
else后不能加條件
if (x<3)
else if(x>5)
else
最后一個else是與第一個if相匹配,再利用if語句的嵌套時,要及時加入{}。
- switch語句:switch語句只進入滿足條件的分支,比if語句更高效,但是只能判斷某一常量。
case后有:號,每一個case后要加break. - scanf語句:自己總是會忘記加&號,導致在DEV C++里運行時總是出現
而且在PTA上也是段錯誤,最后認真檢查了一遍才查出了錯誤。 - %10為取個位,、10為去掉個位。
- 這次的編程作業有專門設定符合題意的變量名,慢慢向見名知義看齊。
3.你碰到什么困難,打算如何解決?
- 經過上一周的基礎訓練,這周接觸到了if語句的嵌套、switch語句的靈活運用以及熟練運用%、/號。
- 在編碼的過程中發現自己對於多類型混合運算結果還是很迷糊,尤其是出租車計價那道題,要求四舍五入,還是不清楚要怎樣實現四舍五入。
- 在課堂中的互動過程中,我發現自己對於動手寫下代碼還有很大的缺陷,比如‘’號寫成''''號,;忘記寫這類低級錯誤。這說明僅僅會敲代碼不行,能正確無誤的寫下代碼才是真正的熟練。尤其是像switch語句這種較為復雜的代碼,更需要自己動手寫一寫,所以在以后的做作業過程中,我會先自己將代碼寫下來,再放到DEV C++里運行,最后再放到PTA里提交。
- 我還發現自己對於安排時間以及對作業的規划上有所欠缺,在面對課堂派預習作業,PTA,博客園,看慕課都未完成的情況下,自己忙得團團轉,不僅降低了效率,而且還增加了一些抵觸情緒與焦躁感。后來想想還是因為自己沒有合理的安排好每天的任務,才導致作業都堆積在一起。因此在以后的每一周中,我會將作業安排細化,要在不緊不慢的節奏中將每份作業做到最好。