C語言第二次博客作業---分支結構


一、PTA實驗作業

題目1:計算分段函數[2]

本題目要求計算下列分段函數f(x)的值:

注:可在頭文件中包含math.h,並調用sqrt函數求平方根,調用pow函數求冪。

1.實驗代碼

	double x,y;
	scanf("%lf",&x);
	if(x>=0)
	{
		y=pow(x,0.5);
	}
	else
	{
		y=pow((x+1),2)+2*x+1/x;
	}
	printf("f(%.2f) = %.2f",x,y);

2 設計思路

  • 第一步:定義兩個雙精度浮點型變量x,y
  • 第二步:輸入x
  • 第三步:判斷x是否大於等於0;如果是,執行第四步,否則執行第五步
  • 第四步:運算表達式y=pow(x,0.5)得出y
  • 第五步:運算表達式y=pow((x+1),2)+2*x+1/x得出y
  • 第六步:按題目要求格式輸出x,y

3.本題調試過程碰到問題及解決辦法

  • 1.在打y=pow((x+1),2)+2*x+1/x這個表達式時沒有在2與x之間打乘號;解決方法:編譯時出錯,重新瀏覽代碼發現沒打乘號,在兩者之間加上乘號
  • 2.格式錯誤,沒有在輸出時按照題目要求打上空格;解決方法:提交時提示格式錯誤,根據經驗很快發現沒有加空格,加上空格

4.本題PTA提交列表

題目2: 輸出三角形面積和周長

本題要求編寫程序,根據輸入的三角形的三條邊a、b、c,計算並輸出面積和周長。注意:在一個三角形中, 任意兩邊之和大於第三邊。三角形面積計算公式:area=√
​s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。

1.實驗代碼

    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(a+b>c&&a+c>b&&b+c>a)
    {
        double s,area,perimeter;
        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 設計思路

  • 第一步:定義三個整型變量a,b,c
  • 第二步:輸入三角形的三條邊a,b,c
  • 第三步:判斷任意兩邊是否大於第三邊,通過表達式a+b>c&&a+c>b&&b+c>a來判斷,如果條件成立,則執行第四,五,六步,否則執行第七步
  • 第四步:定義三個雙精度浮點型變量s,area,perimerte
  • 第五步:通過表達式s=(a+b+c)/2.0;area=sqrt(s(s-a)(s-b)*(s-c));perimeter=a+b+c;來計算出面積和周長
  • 第六步:輸出面積和周長並保留兩位小數
  • 第七步:輸出“These sides do not correspond to a valid triangle”

3.本題調試過程碰到問題及解決辦法

  • 1.在s=(a+b+c)/2.0中的2.0打成2,導致答案錯誤;解決方法:反復調試,發現s的值一直為整數,找到問題所在,把2換成2.0
  • 2.a+b>c&&a+c>b&&b+c>a中的&&用成了逗號;解決方法:調試后發現當連不成三角形時,答案錯誤,推測可能是條件出錯,瀏覽代碼后發現問題,把逗號改成&&

4.本題PTA提交列表

題目3:出租車計價

本題要求根據某城市普通出租車收費標准編寫程序進行車費計算。具體標准如下:
•起步里程為3公里,起步費10元;
•超起步里程后10公里內,每公里2元;
•超過10公里以上的部分加收50%的回空補貼費,即每公里3元;
•營運過程中,因路阻及乘客要求臨時停車的,按每5分鍾2元計收(不足5分鍾則不收費)。

1.實驗代碼

	double mileage,money;
	int time,a;
	scanf("%lf %d",&mileage,&time);
	a=time/5;
	if(mileage<=3)
	{
		money=10+2*a;
	}
	else if(mileage>3&&mileage<=10)
	{
		money=10+(mileage-3)*2+2*a;
	}
	else
	{
		money=10+14+(mileage-10)*3+2*a;
	}
	printf("%.0f",money);

2 設計思路

  • 第一步:定義兩個雙精度浮點型變量mileage,money,定義兩個整型變量time,a
  • 第二步:輸入mileage,money的值
  • 第三步:a=time/5
  • 第四步:判斷mileage是否小於等於3,如果條件成立,執行第五步,否則執行第六步
  • 第五步:money=10+2*a
  • 第六步:判斷mileage是否既大於3又小於等於10,如果條件成立,則執行第七步,否則執行第八步
  • 第七步:money=10+(mileage-3)2+2a
  • 第八步:money=10+14+(mileage-10)3+2a
  • 第九步:輸出money的值

3.本題調試過程碰到問題及解決辦法

  • 1.題目沒弄清楚導致答案錯誤;解決方法:認真讀懂題目
  • 2.在計算停車收費的公式a=time/5時,誤用了%號,導致答案錯誤;解決方法:反復調試后發現自己把%號給打成了/號,把%換成/

4.本題PTA提交列表

題目4:程序設計聯考

自從湖南農業大學、吉首大學和懷化學院組織程序設計課程聯考以后,舉辦聯考的經驗越來豐富。尤其是在使用PTA系統作為考試平台之后,聯考工作得到了很多學校的認可和支持。所以,現在參與聯考的學校比較多。為了便於區分考生,考生賬號的第一位是學校代號。1代表Hunan Agricultural University,2代表Jishou University,3代表Huaihua University,4代表Aerospace University,5代表Ocean University。 請編寫程序根據考生的賬號區分考生的學校。

1.實驗代碼

	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;
}

2 設計思路

  • 第一步:定義一個整型變量account
  • 第二步:輸入account的值
  • 第三步:計算account/100000的值
  • 第四步:當計算結果為1時,輸出Hunan Agricultural University
  • 第五步:當結果為2時,輸出Jishou University
  • 第六步:當結果為3時,輸出Huaihua University
  • 第七步:當結果為4時,輸出Aerospace University
  • 第八步:當結果為5時,輸出Ocean University
  • 第九步:為其他結果時,輸出Other University

3.本題調試過程碰到問題及解決辦法

  • 1.在default后忘了加:,導致編譯錯誤;解決方法:編譯器提示這條語句出錯,瀏覽后發現問題,在default后加上:

4.本題PTA提交列表

二、截圖本周題目集的PTA最后排名

PTA排名

三、本周學習總結

1.你學會了什么?

本周我學會了分支結構,學會了if語句和switch語句,它們都可以用來處理多分支問題,也了解了它們之間的不同點,還學會了else和if的匹配原則以及switch語句中沒有用break的情況;學會了字符型變量的定義,用char來定義,輸入輸出分別可以用getchar()和putchar(),在字符的兩邊要打單引號,而實型常量不需要;還學會了一些關於循環結構的知識,比如for語句的使用。

2.本周的內容,你還不會什么?

本周的內容基本上都學會了,可能還會有點不會靈活應用,還需加強練習。

3.你碰到什么困難,打算如何解決?

經過PTA的練習,我感覺我的數學能力還有欠缺,編程是和數學密切相關的,我需要去加強數學能力,平常多做些數學題目以及編程題來訓練自己的邏輯思維能力。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM