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


一、PTA實驗作業

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

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

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

輸入在一行中給出實數x。

輸出格式:

在一行中按“f(x) = result”的格式輸出,其中x與result都保留兩位小數。

1.實驗代碼

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

2 設計思路

  • 第一步:調用數學函數,定義雙精度變量x、fx;
  • 第二步:輸入x的值;
  • 第三步:運用if-else結構,判斷x與0的關系,並根據對應關系輸出相應函數;
  • 第四步:輸出答案,按“f(x) = result”的格式輸出,其中x與result都保留兩位小數;

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

  • (1)多種錯誤,對根號sqrt、平方pow的用法一開始不熟悉,使用錯誤,在不同測試點產生錯誤,自己看書學習並進行多次使用后掌握;

  • (2)編譯錯誤,對符號運用不懂,定義變量時把fx弄成f(x),致使無法完成編譯,老師上課提到f(x)不是一個變量名,且有演示過,就會了;

4.本題PTA提交列表

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

本題要求編寫程序,根據輸入的三角形的三條邊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.實驗代碼

int a,b,c;
	float area,s,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"); 
	} 

2 設計思路

  • 第一步:調用數學函數,定義三角形邊長整型變量,面積周長用浮點型變量;
  • 第二步:輸入三角形各邊長的值;
  • 第三步:進行數學公式運用;
  • 第五步:運用if-else結構,判斷是否滿足三角形條件任意兩邊之和大於第三邊,若滿足,則經數學公式計算后按題目要求格式輸出;
  • 第六步:若不滿足,輸出These sides do not correspond to a valid triangle;

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

  • (1)部分正確,只能輸出不滿足時答案,把三個運算的公式寫進了if的大括號里,因為一開始思路是如果滿足了條件就執行運算,然后就自然寫下去,后來同學指出解決;
  • (2)printf()函數掌握不完全,用的還不是很自然,同學提出改正;

4.本題PTA提交列表

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

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

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

1.實驗代碼

{
	int time;
	float distance,money,money1,money2;
	scanf("%f%d",&distance,&time);
	if(distance<=3){
  		money1= 10;
	}
    else if((distance>3&&distance<=10)){
   		money1=10+2*(distance-3);
	}
	else if(distance>10){
		 money1=24+3*(distance-10);
	}
	if(time<5){
		money2=0; 
	}
    else if(time>=5){
  		 money2=(time/5)*2;
	}
	money=money1+money2;
	printf("%.0f",money);
	return 0;
}

2 設計思路(把時間跟車程分開)

  • 第一步:調用數學函數,定義整型變量time,公里長度distance、費用money用浮點型變量;
  • 第二步:輸入車程和等待時間;
  • 第三步:運用if-else結構,判斷如果滿足車程distance<=3,輸出費用10;
  • 第四步:如果distance>3&&distance<=10,輸出money1=10+2*(distance-3);
  • 第五步:如果distance>10,輸出 money1=24+3*(distance-10);
  • 第六步:重新使用if-else結構,判斷if(time>=5),就只等待的費用money2=0;
  • 第七步: if(time>=5),等待有費用 ,按money2=(time/5)*2計算;
  • 第八步:計算車程、等待費用和money=money1+money2;
  • 第九步:輸出;

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

  • (1)一開始思路是把兩個計費一起合起來計算,沒寫出來,在繼續嘗試,后來分開計算比較清晰;
  • (2)在寫條件的時候寫不清楚,一下子把所有都羅列下來了,結果還不對,還有就是printf()的用法錯誤;
  • (3)對四舍五入不懂,然后答案總不對,后來同學教直接在輸出時保留0位小數,解決;

4.本題PTA提交列表

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

為了便於區分考生,考生賬號的第一位是學校代號。1代表Hunan Agricultural University,2代表Jishou University,3代表Huaihua University,4代表Aerospace University,5代表Ocean University。 請編寫程序根據考生的賬號區分考生的學校。

輸入格式:

在一行中給出1個6位的正整數account。

輸出格式:

在一行中輸出account的學校。注意:如果不清楚學校代號是哪個學校,則輸出"OtherUniversity"。

1.實驗代碼

int account;
	scanf("%d",&account);
	int n;
	n=account/100000;
	switch(n)
	{
	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");
	return 0;

2 設計思路

  • 第一步:定義整型變量account存放六位數字,n存放代號;
  • 第二步:輸入六位數account;
  • 第三步:取六位數的首位表代號,用n=account/100000;
  • 第四步:使用switch()語句,case從1開始到5,並分別對應學校;
  • 第五步:當n>5時,default,printf("Other University");

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

  • (1)一開始的思路就只想到用if結構,六位數取首位的表達不對;
  • (2)老師要求用switch(),改過來后發現自己使用還很陌生,得對照書,多看幾次,多使用幾次就會了,像第9題就有嘗試,或者選簡單的題來訓練;
  • (3)答案錯誤,輸出格式,題目中空格沒有,自己加上;

4.本題PTA提交列表

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

三、本周學習總結

1.你學會了什么?

  • (1)學了判斷語句if的多分支結構,if-else if-else形式;
  • (2)新的字符型變量char的用法,既可以用%c輸入,也可以用函數getchar(),但getchar()只能讀入一個字符,輸出用%c或putchar();
  • (3)學了邏輯運算符,&&表示與,||表示或,!表示非;
  • (4)ASCII字符集,每個字符都有一個唯一的次序值,如:空格對應10;

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

  • (1)PTA中7-5&7-8還不太明白,有些想的不是自己本來思路,特定的用法就不對了;
  • (2)字符型變量char的用法和switch()使用不熟;

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

  • (1)在編碼時候不能自己獨立寫出題目,總要經過査書、問同學才能找出自己思路哪里錯了,語法哪里又不對了,打算在一次次的寫PTA,就是寫程序時慢慢學着自己編,不能一下子就寫出來,但可以一點點進步,否則容易形成一不會就問人的習慣;
  • (2)平常除了代碼還有其他作業,時間上經常是不夠,導致不管是寫代碼還是別的科目平均分到去學習的就少了,代碼一缺少練習,就更糟,所以可能得抓緊別的課堂上的老師講解時間,尤其是高數、線代,這樣不懂的才會少,課外花的時間才會少,才有時間多打點代碼;


免責聲明!

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



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