一、PTA實驗作業。
題目1:7-1 計算分段函數[2]
本題目要求計算下列分段函數f(x)的值:
注:可在頭文件中包含math.h,並調用sqrt函數求平方根,調用pow函數求冪。
1.實驗代碼
double x,result;
scanf("%lf",&x);
if(x>=0){
result=pow(x,0.5);
}
else{
result=pow(x+1,2)+2*pow(x,1)+pow(x,-1);
}
printf("f(%.2f) = %.2f",x,result);
2.設計思路
-
(1)定義兩個雙精確浮點型的變量x,result。
-
(2)輸入一個雙精確浮點型變量x。
-
(3)如果x>=0,則'result=pow(x,0.5)';否則,則'result=pow(x+1,2)+2*pow(x,1)+pow(x,-1)'。其中pow()是數學函數。
-
(4)輸出f(x)=result的值,其中x,f(x)均保留兩位小數。
3.本題調試過程碰到問題及解決辦法
-
碰到的問題:
乘號沒用'*'表示,導致編譯錯誤。
空格依舊忘記加,格式錯誤。
定義變量是用了f(x),導致了編譯錯誤。 -
解決辦法:將計算式中的“2x”改為“2*x”,在計算機編程中只寫"2x",計算機不能識別;將題目中的輸出結果復制粘貼,然后改成要輸出的東西。
將其改為result。
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)/2.0;
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");
2.設計思路
-
(1)定義三個整型變量a,b,c,三個雙浮點型變量area,perimeter,s,其中a,b,c,代表邊長,area放面積,perimeter放周長,s放(a+b+c)/2.0的值。
-
(2)輸入整型數據a,b,c。
-
(3)如果 a+b>c且a+c>b且b+c>a,則計算's=(a+b+c)/2.0','area=sqrt(s(s-a)(s-b)*(s-c))','perimeter=a+b+c'。
-
(4)輸出此時的面積area,周長perimeter。且均保留兩位小數。
-
(5)否則,輸出These sides do not correspond to a valid triangle。
3.本題調試過程碰到問題及解決辦法
-
碰到的問題:
未加‘&’使段錯誤,是程序停止運行。
空格未正確添加。
-
解決辦法:在scanf()語法中,在輸入的變量前應加“&”,以后輸出結果直接復制之后再在其基礎上修改。
4.本題PTA實驗結果
題目3:7-6 出租車計價
本題要求根據某城市普通出租車收費標准編寫程序進行車費計算。具體標准如下:
-
起步里程為3公里,起步費10元;
-
超起步里程后10公里內,每公里2元;
-
超過10公里以上的部分加收50%的回空補貼費,即每公里3元;
-
營運過程中,因路阻及乘客要求臨時停車的,按每5分鍾2元計收(不足5分鍾則不收費)。
1.實驗代碼
int time=0;
double money,s;
scanf("%lf%d",&s,&time);
if(s<=3){
money=time/5*2+10;
}
else if(s>3&&s<=10){
money=time/5*2+10+2*(s-3);
}
else{
money=time/5*2+10+14+(s-10)*3;
}
printf("%.0f",money);
2.設計思路
-
(1)定義一個整型變量time,定義兩個雙精確浮點變量money,s。s放路程,money放錢。
-
(2)輸入一個整型變量time,輸入一個雙精確浮點變量s
-
(3)如果s<=3,則'money=time/5*2+10'。
-
(4)如果s>3且s<=10,則'money=time/52+10+2(s-3)'。
-
(5)否則,'money=time/52+10+14+(s-10)3'。
-
(6)輸出money,此時保留整數,且四舍五入。
3.本題調試過程碰到問題及解決辦法
-
碰到的問題:
未加‘&’使段錯誤。
對各個計算式的理解錯誤導致答案錯誤。 -
解決辦法:在輸入的變量前應加“&”。我需要牢記scanf()語法。將計算表達式改正。
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,first_account;
scanf("%d",&account);
first_account=account/100000;
switch(first_account){
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,first_account。account放考生賬號,first_account放考生賬號的第一位數字。
-
(2)輸入一個正六位數account。
-
(3)計算考生賬號第一位'first_account=account/100000'。
-
(4)如果值為1,則輸出Hunan Agricultural University。
-
(5)如果值為2,則輸出Jishou University。
-
(6)如果值為3,則輸出Huaihua University。
-
(7)如果值為4,則輸出Aerospace University。
-
(8)如果值為5,則輸出Ocean University。
-
(9)如果值為其他,則輸出Other University。
3.本題調試過程碰到問題及解決辦法
-
碰到的問題:
沒加空格
最后的其他用了case other:所以錯了。 -
解決辦法:將題目中的輸出結果復制粘貼,然后改成要輸出的東西。看書后知道應該用default。
4.本題PTA實驗結果
二、截圖本周題目集的PTA提交列表及最后排名。
1.PTA提交列表
2.PTA排名
三、本周學習總結
1.你學會了什么?
switch語法的基本運用,if的嵌套和if多分支結構的運用。for語法正在探索中。
2.本周的內容,你還不會什么?
-
for語法和switch語法的結合運用還不怎么會。for語法還不怎么會
-
空格加的地方不怎么會,pta上總是因為空格沒加,或者加的地方不對而導致錯誤。
3.你碰到什么困難,打算如何解決?
-
scanf()語法記憶的不行,老是忘記給變量前加“&”;符號變量有時候總把“%c”寫成“%d”,或是其他的。
-
我想我會先認真再把書本翻一下,然后加深一下自己對模糊的語法(例如,scanf()語句);我會去求那些編程大佬的幫助,問他們是如何記住這些東西的,當然也會去詢問老師的。