一、PTA實驗作業.
題目1.7-1 計算分段函數[2]
本題目要求計算下列分段函數f(x)的值:
注:可在頭文件中包含math.h,並調用sqrt函數求平方根,調用pow函數求冪。
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);
return 0;
2.設計思路
-(1)調用函數。定義兩個雙精度變量x和result。
-(2)輸入x。
-(3)如果x>=0,result=sqrt(x)。否則,result=pow((x+1),2)+2*x+1/x。
-(4)輸出f(x)=result的值。x和result保留兩位小數。
3.本題調試過程碰到問題及解決辦法
無問題。
4.本題PTA實驗結果
題目2.7-4 輸出三角形面積和周長
本題要求編寫程序,根據輸入的三角形的三條邊a、b、c,計算並輸出面積和周長。注意:在一個三角形中, 任意兩邊之和大於第三邊。三角形面積計算公式:area=√s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。
1.代碼
int a,b,c;
double area,perimeter,s;
scanf("%d%d%d",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a) {
s=(a+b+c)*1.0/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
perimeter=1.0*(a+b+c);
printf("area = %.2f; perimeter = %.2f",area,perimeter);
}
else printf("These sides do not correspond to a valid triangle");
return 0;
2.設計思路
-(1)定義3個a,b,c代表邊,定義3個整型變量area,perimeters丶s代表面積丶周長和s.
-(2)輸入邊長a,b,c.
-(3)如果這三邊能組成三角形,計算s=(a+b+c)1.0/2; 面積area=sqrt(s(s-a)(s-b)(s-c)); 周長perimeter=1.0*(a+b+c);. 然后輸出面積和周長,保留兩位小數.
-(4)如果這三邊不能組成三角形,輸出"These sides do not correspond to a valid triangle"
3.本題調試過程碰到問題及解決辦法
一開始將s定義為整型變量導致答案錯誤,后來想到s可能為小數於是改成定義為浮點型變量.
4.本題PTA實驗結果
題目3.出租車計價
本題要求根據某城市普通出租車收費標准編寫程序進行車費計算。具體標准如下:
起步里程為3公里,起步費10元;
超起步里程后10公里內,每公里2元;
超過10公里以上的部分加收50%的回空補貼費,即每公里3元;
營運過程中,因路阻及乘客要求臨時停車的,按每5分鍾2元計收(不足5分鍾則不收費)。
1.代碼
#include<stdio.h>
int main()
{
int time;
double mileage,fee;
scanf("%lf %d",&mileage,&time);
if(mileage<=3) fee=10;
else if(mileage>3&&mileage<=10) fee=10+(mileage-3)*2;
else fee=24+(mileage-10)*3;
fee=fee+(time/5)*2;
printf("%.0f",fee);
return 0;
}
2.設計思路
-(1)定義整型變量time表示等待時間.定義浮點型變量mileage和fee表示路程和費用.
-(2)輸入路程和時間.
-(3)先判斷路程:如果路程mileage<=3(km),費用fee=10; 如果路程>3且<=10,費用fee=10+(mileage-3)2; 如果路程>10,費用fee=24+(mileage-10)3.
-(4)在路程產生的費用上加上停車產生的費用fee=fee+(time/5)*2.
-(5)輸出費用fee.
3.本題調試過程碰到問題及解決辦法
無問題.
4.本題PTA實驗結果
題目4.程序設計聯考
自從湖南農業大學、吉首大學和懷化學院組織程序設計課程聯考以后,舉辦聯考的經驗越來豐富。尤其是在使用PTA系統作為考試平台之后,聯考工作得到了很多學校的認可和支持。所以,現在參與聯考的學校比較多。為了便於區分考生,考生賬號的第一位是學校代號。1代表Hunan Agricultural University,2代表Jishou University,3代表Huaihua University,4代表Aerospace University,5代表Ocean University。 請編寫程序根據考生的賬號區分考生的學校。
1.代碼
#include<stdio.h>
int main()
{
int account;
scanf("%d",&account);
switch(account/100000){
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.設計思路
-(1)定義整型變量account表示學生賬號.
-(2)輸入學生賬號.
-(3)用switch語法判斷account/1000000的值,即判斷學生賬號的首位.值為1,輸出"Hunan Agricultural University"(並用break結束語句);值為2,輸出"Jishou University";值為3,輸出"Huaihua University";值為4,輸出"Aerospace University";值為5,輸出"Ocean University";值為其他數,輸出"Other University".
3.本題調試過程碰到問題及解決辦法
無問題.
4.本題PTA實驗結果
二、截圖本周題目集的PTA最后排名。
三、本周學習總結
1.你學會了什么?
-學會了條件語句的用法,知道了switch語法和if-else語法的異同點及各自的優點;知道了什么是字符型還有字符型變量的輸入輸出,知道了判斷字符要加' ';
2.本周的內容,你還不會什么?
-基本理解.
3.你碰到什么困難,打算如何解決?
-不從題目上復制輸出格式不時會出現答案錯誤.寫代碼還不夠快,需要多練習.