一.PTA實驗作業
題目1. 計算分段函數
本題目要求計算下列分段函數f(x)的值:
1.本題代碼
#include<stdio.h>
#include<math.h>
int main (void)
{
double x,y;
scanf("%lf",&x);
if(x>=0){
y=sqrt(x);
}
else{
y=(x+1)*(x+1)+2*x+1/x;
}
printf("f(%.2f) = %.2f\n",x,y);
return 0;
}
2.設計思路
- 第一步:定義兩個浮點型分別代表x,y
- 第二步:利用if語句判斷x所屬於的范圍,從而判斷接下來進行的語句
- 第三步:利用數學函數進行運算
- 第四步:根據題目要求,輸出保留兩位小數的結果
3.本題調試過程中碰到的問題以及解決方案
- 無
4.本題PTA實驗結果展示
題目2.7-4 輸出三角形面積和周長
本題要求編寫程序,根據輸入的三角形的三條邊a、b、c,計算並輸出面積和周長。注意:在一個三角形中, 任意兩邊之和大於第三邊。
三角形面積計算公式:area=√s(s−a)(s−b)(s−c) ,其中s=(a+b+c)/2。
1.本題代碼
#include<stdio.h>
#include<math.h>
int main (void)
{
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)/2.00;
area=sqrt(s*(s-a)*(s-b)*(s-c));
perimeter=a+b+c;
printf("area = %.2f; perimeter = %.2f",area,perimeter);
}
else {
printf("These sides do not correspond to a valid triangle");
}
return 0;
}
2.設計思路
- 第一步:定義三個整型變量代表三角形的三條邊,定義兩個浮點型變量代表三角形的面積和周長
- 第二步:判斷三條邊是否可以構成三角形,從而判斷接下來進行的語句
- 第三步:利用公式計算出周長和面積
- 第四步:按照題目要求保留兩位小數輸出結果
3.本題調試過程中碰到的問題以及解決方案
(1)答案錯誤
- 錯誤:題目要求保留兩位小數,在計算面積時語句“s=(a+b+c)/2.00”,中的2沒有增加小數位數導致結果輸出為整數不符合題目輸出答案要求。
- 解決方案:通過問同學,以及自己的多次調試,翻閱課本,找到錯誤點
4.本題PTA實驗結果展示
題目3.7-6 出租車計價
本題要求根據某城市普通出租車收費標准編寫程序進行車費計算。具體標准如下:
起步里程為3公里,起步費10元;
超起步里程后10公里內,每公里2元;
超過10公里以上的部分加收50%的回空補貼費,即每公里3元;
營運過程中,因路阻及乘客要求臨時停車的,按每5分鍾2元計收(不足5分鍾則不收費)。
1.本題代碼
#include<stdio.h>
int main(void)
{
int time,C;
double mil,cost1,cost2,cost;
scanf("%lf%d",&mil,&time);
if(0 <= mil&&mil <= 3){
cost1=10;
}
else if (3<mil&&mil<=10){
cost1 = (mil-3) * 2+10;
}
else if(10<mil){
cost1=24+(mil-10)*3;
}
if(0<=time&&time<5){
cost2=0;
}
else {
cost2=(time/5)*2;
}
cost=cost1+cost2;
C=(int)(cost+0.5) ;
printf("%d",C);
return 0;
}
2.設計思路
- 第一步:定義六個變量 mil,cost1,cost2,cost; time,C分別用於存放路程,行駛時的費用,停車時的費用,總費用,四舍五入后的總費用
- 第二步:輸入里程數和停留的時間
- 第三步:利用if else if語句對mil 和 time的范圍進行判斷接下來進行的語句,
如果mil小於3,則cost1=10,
如果mil大於3小於10,則cost1= (mil-3) * 2+10
如果mil大於10,則cost1=24+(mil-10)*3
如果time小於5,則cost2=0
如果time大於5,則cost2=(time/5)*2
- 第四步:cost=cost1+cost2
- 第五步:對cost進行四舍五入得到C
- 第六步:輸出C
3.本題調試過程中碰到的問題以及解決方案
(1)部分正確
- 錯誤:對題目理解有誤,以為“超起步里程后10公里內,每公里2元”是指行駛13公里后
- 解決方案:請教同學,理解題意
(2)答案錯誤
- 錯誤:沒有使用四舍五入語句,不會使用四舍五入語句
- 解決方案:上網百度
4.本題PTA實驗結果展示
題目2.7-8 程序設計聯考
自從湖南農業大學、吉首大學和懷化學院組織程序設計課程聯考以后,舉辦聯考的經驗越來豐富。尤其是在使用PTA系統作為考試平台之后,聯考工作得到了很多學校的認可和支持。所以,現在參與聯考的學校比較多。為了便於區分考生,考生賬號的第一位是學校代號。1代表Hunan Agricultural University,2代表Jishou University,3代表Huaihua University,4代表Aerospace University,5代表Ocean University。 請編寫程序根據考生的賬號區分考生的學校。
1.本題代碼
#include<stdio.h>
int main (void)
{
int F,N;
scanf("%d",&N);
F=N/100000;
switch(F) {
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.設計思路
- 第一步:定義兩個整型變量N,F分別用於儲存學號和學號的首位數
- 第二步:利用整型數除以整型得到整型的原理,用N/100000得到學號的首位數即F
- 第三步:使用用switch語句,當F=1輸出“Hunan Agricultural University”,
當F=2時輸出“Jishou University
當F=3時輸出“Huaihua University
當F=4時輸出Aerospace University
當F=5時輸出Ocean University - 第四步:如果都沒有,就輸出Other University
3.本題調試過程中碰到的問題以及解決方案
(1)switch語句使用錯誤
4.本題PTA實驗結果展示
二.截圖本周題目集的PTA提交列表及最后排名
三,本周的學習總結
1.你學會了什么?
- 1,整型的輸出格式控制說明%md,指定了數據的輸出寬度為m(包括符號位),若輸入的實際位數小於m,則左端補空格,若大於m,則按實際位數輸出,實型數據的輸出格式控制說明%m.nf,指定了輸出浮點型數據保留n位小數。
- 2.for循環語句:for(表達式1;表達式2;表達式3)。
- 3.多分支結構else-if語句。
- 4.字符型變量在定義時用類型名char。
- 5.switch語句中如果不使用break,當表達式的值與之相匹配時,不但執行相應的語句段,還按序執行后面的所有語句段。
2.本周的內容你還不會什么?
- 1.switch語句和其他語句的配合使用,如與if語句。
- 2.不會使用dev的調試,或者說還不習慣自我調適尋找到問題。
3.你碰到什么困難,打算如何解決?
-
1.習慣性得漏掉&符號,直到程序運行顯示無法運行時才反應過來
-
解決方法:在程序運行前再檢查一下
-
2.在做到一些熟悉的題目時會找課本里的例題進行改變,如果沒有看書,會漏掉一些細節導致編程錯誤
-
解決方案:增加相應題目的練習量,逐漸擺脫課本