輸入格式:算法
輸入在一行中給出實數x。ide
輸出格式:函數
在一行中按「f(x) = result」的格式輸出,其中x與result都保留兩位小數。學習
輸入樣例1:spa
10
輸出樣例1:設計
f(10.00) = 3.16
輸入樣例2:3d
-0.5
輸出樣例2:調試
f(-0.50) = -2.75code
double x,y;
scanf("%lf",&x);
if(x>=0){
y=sqrt(x);
}
else{
y=pow(x+1,2)+2*x+pow(x,-1);
}
printf("f(%.2f) = %.2f",x,y);blog
問題:格式錯誤
解決辦法:再次讀題後增添等號左右的空格,提交後答案正確
本題要求編寫程序,根據輸入的三角形的三條邊a、b、c,計算並輸出面積和周長。注意:在一個三角形中, 任意兩邊之和大於第三邊。三角形面積計算公式:area=√
s(s−a)(s−b)(s−c)
,其中s=(a+b+c)/2。
輸入格式:
輸入爲3個正整數,分別表明三角形的3條邊a、b、c。
輸出格式:
若是輸入的邊能構成一個三角形,則在一行內,按照
area = 面積; perimeter = 周長
的格式輸出,保留兩位小數。不然,輸出
These sides do not correspond to a valid triangle
輸入樣例1:
5 5 3
輸出樣例1:
area = 7.15; perimeter = 13.00
輸入樣例2:
1 4 1
輸出樣例2:
These sides do not correspond to a valid triangle
int a,b,c;
double s,area,perimeter;
scanf("%d%d%d",&a,&b,&c);
s=(a+b+c)/2.0;
area=sqrt(s(s-a)(s-b)*(s-c));
perimeter=a+b+c;
if(a+b>c&&a+c>b&&b+c>a){
printf("area = %.2f; perimeter = %.2f",area,perimeter);
}
else{
printf("These sides do not correspond to a valid triangle");
}
問題:(1)s=(a+b+c)/2.0 除數必定要用浮點數2.0,不然整型除整型獲得的結果是整型,可能會改變s的值,致使後面結果錯誤
(2)又忘記空格了致使格式錯誤
解決辦法:(1)將2改成2.0
(2)增長等號左右空格
出租車計價
本題要求根據某城市普通出租車收費標準編寫程序進行車費計算。具體標準以下:
起步里程爲3千米,起步費10元;
超起步里程後10千米內,每千米2元;
超過10千米以上的部分加收50%的回空補貼費,即每千米3元;
營運過程當中,因路阻及乘客要求臨時停車的,按每5分鐘2元計收(不足5分鐘則不收費)。
輸入格式:
輸入在一行中給出輸入行駛里程(單位爲千米,精確到小數點後1位)與等待時間(整數,單位爲分鐘),其間以空格分隔。
輸出格式:
在一行中輸出乘客應支付的車費(單位爲元),結果四捨五入,保留到元。
輸入樣例1:
2.6 2
輸出樣例1:
10
輸入樣例2:
5.1 4
輸出樣例2:
14
輸入樣例3:
12.5 9
輸出樣例3:
double kilometre,price1,price; int time,price2; scanf("%lf%d",&kilometre,&time); if(kilometre<=3){ price1=10; } else { if(kilometre<=10){ price1=10+(kilometre-3)*2; } else{price1=24+(kilometre-10)*3; } } price2=(time/5)*2; price=price1+price2; printf("%.0f",price);
(1)題目中有:輸入行駛里程(單位爲千米,精確到小數點後1位)因此我在輸入時將%lf改爲了%.1f
結果:
運行時不能進入正確的if語句,price1計算結果不對,解決方法:%.nf是輸出時用來控制輸出位數的,用於printf語句中而不是scanf語句,因此我將%.0f改回%lf,再次運行就能正確執行相應if語句了
(2)我開始的算法是打算計算出小數部分,而後用if語句判斷與0.5的大小,大於0.5,price整數部分就加一,而後輸出,並且在計算price2時再次使用了if-else語句,算法看上去很麻煩,並且運行結果不對
如圖:
解決辦法:經過對price1,price2的輸出發現,由於我定義的變量都是浮點型,price2獲得的結果就不是整型的了,致使price數值可能變大,最終影響輸出結果。另外發現price2的計算不須要if結構,並且%.0f有四捨五入的做用,因此對代碼進行了刪減,最終運行獲得正確結果
自從湖南農業大學、吉首大學和懷化學院組織程序設計課程聯考之後,舉辦聯考的經驗越來豐富。尤爲是在使用PTA系統做爲考試平臺以後,聯考工做獲得了不少學校的承認和支持。因此,如今參與聯考的學校比較多。爲了便於區分考生,考生帳號的第一位是學校代號。1表明Hunan Agricultural University,2表明Jishou University,3表明Huaihua University,4表明Aerospace University,5表明Ocean University。 請編寫程序根據考生的帳號區分考生的學校。
輸入格式:
在一行中給出1個6位的正整數account。
輸出格式:
在一行中輸出account的學校。注意:若是不清楚學校代號是哪一個學校,則輸出"OtherUniversity"。
輸入樣例:
123456
輸出樣例:
Hunan Agricultural University
int account,number; scanf("%d",&account); number=account/100000; switch(number){ 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; }
這題沒有遇到什麼問題,以爲如何計算number是一個思考的地方,其餘都很簡單了,另外break是一個注意點,別漏了
(4)嵌套的if語句,通常形式:
if(表達式1)
if(表達式2)語句1;
else 語句2;
else
if(表達式3)語句3;
else 語句4;
重點:else和if的匹配原則:else與最靠近它的,沒有與其餘else語句匹配的if匹配
字符型數據的輸入和輸出還不熟練,沒有遇到涉及到的題目
寫的代碼太繁瑣了,慣性思惟,像車費那題不須要用if判斷的時候,我也用了,調試的時候找錯誤就很麻煩了。多練練,調試的時候修改代碼,對了,先寫算法很重要。