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


一、PTA實驗作業

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

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

f2-11

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

1.實驗代碼

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

2 設計思路

第一步:定義兩個雙精度浮點型變量x,y
第二步:從鍵盤輸入一個數存入x中
第三步:若x大於等於0則y等於根號x
第四步:否則y= pow(x+1,2) + 2*x + 1/x
第五步:輸出y

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

1.要開根號跟求平方時只輸入了sqrt以及pow導致答案不准確。解決方法:在代碼開頭輸入#include<math.h>

4.本題PTA提交列表

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

1.實驗代碼

int a,b,c;
	double s,area,primeter;
	scanf("%d%d%d",&a,&b,&c);
	s=(1.0*a+1.0*b+1.0*c)/2;
	area=sqrt(s*(s-1.0*a)*(s-1.0*b)*(s-1.0*c));
	primeter=a+b+c;
	if(a+b>c&&a+c>b&&b+c>a){
		printf("area = %.2f; ",area);
		printf("perimeter = %.2f",primeter);
	}
	else{
		printf("These sides do not correspond to a valid triangle");
	}

2 設計思路

第一步:定義三個整形變量a,b,c
第二步:輸入三個整形變量分別存入啊a,b,c中
第三步:定義三個雙精度浮點型變量s,area,primeter
第四步:計算s=(1.0a+1.0b+1.0c)/2;
第五步:計算area=sqrt(s
(s-1.0a)(s-1.0b)(s-1.0*c));
第六步:計算primeter=a+b+c
第七步:判斷a,b,c是否滿足兩邊之和大於第三邊,若滿足則輸出area和perimeter若不滿足則輸出These sides do not correspond to a valid triangle

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

1.對分支結構掌握不熟練導致程序判斷錯誤輸出錯誤的答案。解決方法:通過調試,修改if條件句中的條件。

4.本題PTA提交列表

題目3:7-6 出租車計價

本題要求根據某城市普通出租車收費標准編寫程序進行車費計算。具體標准如下:

起步里程為3公里,起步費10元;
超起步里程后10公里內,每公里2元;
超過10公里以上的部分加收50%的回空補貼費,即每公里3元;
營運過程中,因路阻及乘客要求臨時停車的,按每5分鍾2元計收(不足5分鍾則不收費)。

1.實驗代碼

int fee,minute;
	double mile;
	scanf("%lf %d",&mile,&minute);
	if(mile<=3.0&&minute<5){
		fee=10;
	}
	if(mile<=3.0&&minute>=5){
		fee=10+minute/5*2;
	}
	if(mile>3.0&&minute<5){
		fee=10+(mile-3)*2; 
	}
	if(mile>3&&minute>=5){
		fee=10+(mile-3)*2+minute/5*2;
	}
	if(mile>=10&&minute<5){
		fee=10+7*2+(mile-10)*3;
	}
	if(mile>=10&&minute>=5){
		fee=10+7*2+3*(mile-10)+2*minute/5;
	}
	printf("%d",fee);
	return 0;

2 設計思路

第一步:定義兩個整形變量fee與minute
第二步:定義一個雙精度浮點型變量mile
第三步:輸入兩個數分別存於mile與minute中
第四步:判定mile與minute與題目所給條件的關系
第五步:根據判定結果算出不同的fee的值
第六步:輸出符合條件的fee值

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

1.判定條件打的不准確導致結果錯誤。解決辦法:通過Dev c的調試找出問題並修改
2.將mile定義為整形變量導致答案錯誤。解決辦法:調試並更深一步了解整形變量與浮點型變量的定義並修改

4.本題PTA提交列表

題目4:7-8 程序設計聯考

1.實驗代碼

int number,x;
	scanf("%d",&number);
	x=number/100000;
	switch(x){
	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 設計思路

第一步:定義兩個整形變量number,x
第二步:輸入一個數存於number中
第三步:求出數number的第一位數字x
第四步:用switch語句對x進行判定
第五步:根據不同判定結果輸出不同大學

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

1.對於switch語句掌握程度不夠,case語句后忘記加break導致結果錯誤。解決辦法:通過看書上代碼找出錯誤。

4.本題PTA提交列表

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

三、本周學習總結

1.你學會了什么?

學會了用分支結構去編寫c語言程序,並能通過分支結構去解決一些簡單的問題。

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

對於if else語句跟switch語句的具體區別還不是太清楚,比如步知道什么時候用switch語句更方便。

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

課后認真復習,勤思考,勤打代碼,不會的問題多問同學跟老師。


免責聲明!

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



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