一、PTA實驗作業
題目1:7-1 計算分段函數[2]
本題目要求計算下列分段函數f(x)的值
1.代碼
double x,fx;
scanf("%lf",&x);
if (x>=0)
{
fx=pow(x,0.5);
}
else
{
fx=(x+1)*(x+1)+2*x+1/x;
}
printf("f(%.2f) = %.2f",x,fx);
2.設計思路
第一步:定義雙精度浮點變量x,fx
第二步:利用if else分支結構分別計算不同情況下fx的值
第三步:若x>=0則輸出fx=pow(x,0.5)
第四步:否則輸出fx=(x+1)(x+1)+2x+1/x;
第五步:按題目要求輸出結果
3.本題調試過程碰到問題及解決辦法
(1)誤用中文符號,經devc檢查后改正錯誤
(2)未使用數學函數#include<math.h>導致輸出錯誤,檢查后發現錯誤
(3)使用pow函數時應該添加#include<math.h>
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 s,area,length;
scanf("%d%d%d",&a,&b,&c);
if (a+b>c&&a+c>b&&b+c>a)
{
s=(a+b+c)*1.00/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
length=a+b+c;
printf("area = %.2f; perimeter = %.2f",area,length);
}
else
{
printf("These sides do not correspond to a valid triangle");
}
2.設計思路
第一步:定義整型變量a,b,c以及雙精度浮點變量area,length
第二步:利用if-else分支結構,若輸入的兩邊之和小於第三邊,則輸出錯誤提示
第三步:否則根據題目公式計算三角形周長以及面積
第四步:按照題目格式輸出答案
3.本題調試過程碰到問題及解決辦法
(1)變量定義錯誤,沒有根據要求定義雙精度浮點型變量,導致輸出錯誤,認真閱讀課本得到解決
(2)變量相乘沒有用*導致錯誤,經檢查發現錯誤
4.本題PTA提交列表
題目3:7-6 出租車計價
題要求根據某城市普通出租車收費標准編寫程序進行車費計算。具體標准如下:
起步里程為3公里,起步費10元;
超起步里程后10公里內,每公里2元;
超過10公里以上的部分加收50%的回空補貼費,即每公里3元;
營運過程中,因路阻及乘客要求臨時停車的,按每5分鍾2元計收(不足5分鍾則不收費)。
1.代碼
int minute,money,k;
double l;
scanf("%lf%d",&l,&minute);
if(minute>=5)
{
k=minute/5*2;
}
else
{
k=0;
}
if(l<=3)
{
printf("%d",10+k);
}
else if(l<=10)
{
money=((10+(l-3)*2+k)+0.5)*10/10;
printf("%d",money);
}
else if(l>10)
{
money=((24+(l-10)*3+k)+0.5)*10/10;
printf("%d",money);
2.設計思路
第一步:根據題目要求,定義變量
第二步:利用if-else分支結構,分別計算題目中當起步里程為3公里,超起步里程后10公里,以及超過10公里的時所花費的費用
第三步:用另一個分支計算當停車時長大於分鍾時的額外費用
第四步:計算總費用,按要求輸出答案
3.本題調試過程碰到問題及解決辦法
(1)公式錯誤,利用devc檢查公式那一段,觀測變量發現了。公式的錯誤
(2)語法錯誤,將%lf輸入成%d,多次檢查后改正
(3)設計程序時沒有思路,在同學引導下逐漸得出結果
4.本題PTA提交列表
題目4:7-8 程序設計聯考
自從湖南農業大學、吉首大學和懷化學院組織程序設計課程聯考以后,舉辦聯考的經驗越來豐富。尤其是在使用PTA系統作為考試平台之后,聯考工作得到了很多學校的認可和支持。所以,現在參與聯考的學校比較多。為了便於區分考生,考生賬號的第一位是學校代號。1代表Hunan Agricultural University,2代表Jishou University,3代表Huaihua University,4代表Aerospace University,5代表Ocean University。 請編寫程序根據考生的賬號區分考生的學校
1.代碼
int account,number;
scanf("%d",&account);
number=account/100000;
if(number==1)
{
printf("Hunan Agricultural University");
}
else if(number==2)
{
printf("Jishou University");
}
else if(number==3)
{
printf("Huaihua University");
}
else if(number==4)
{
printf("Aerospace University");
}
else if(number==5)
{
printf("Ocean University");
}
else
{
printf("Other University");
}
2.設計思路
第一步:根據題目要求定義變量account和number
第二步:利用公式求出第一位數
第三步:利用分支結構按照題目要求輸出答案
3.本題調試過程碰到問題及解決辦法
(1)題目不清楚,沒有說明"Other University“需要空格導致多次答案錯誤,嘗試后得到正確結果
4.本題PTA提交列表
二、截圖本周題目集的PTA排名。
PTA排名
1.你學會了什么?
(1)分支結構的應用
(2)利用c語言解決實際問題
(3)學會了如何使用devc的調試功能
(4)變量定義應該用單詞而不是單個字母
2.你還不會什么
(1)switch語法運用的不夠熟練
(2)無法快速找出程序的錯誤
3.你碰到什么困難,打算如何解決?
(1)編程時容易出現語法錯誤,需要檢查很久才能發現,應該多用編程軟件,提升查錯速度
(2)還需要多做題目提升自己的能力與速度
(3)對switch語法掌握不熟練,還需多加訓練,從課本,慕課,pta上進行學習