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


一,PTA實驗作業

題目1.計算分段函數

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

1.實驗代碼

	double x,result;


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


	return 0;

2.設計思路

  • 第一步:定義兩個雙精度浮點型變量x,result。
  • 第二步:輸入x的值。
  • 第三步:用if語句對輸入的x值與0的關系進行判斷。
  • 第四步:如果x<0,對result進行賦值:result=pow(x+1,2)+2*x+1/x。
  • 第五步:否則,對result進行賦值: result=pow(x,0.5)。
  • 第六步:按“f(x) = result”的格式輸出,其中x與result都保留兩位小數。

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

  • (1).編寫錯誤:else后加了限定條件。

4.本題PTA提交列表

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

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

1.實驗代碼

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

	return 0;

2.設計思路

  • 第一步:定義四個雙精度浮點型變量a,b,c放三角形邊長以及s。
  • 第二步:輸入三邊長a,b,c的值。
  • 第三步:賦值s=(a+b+c)/2。
  • 第四步:用if語句對輸入的三邊長的大小關系進行判斷是否可以組成三角形,條件為任意兩邊之和大於第三邊:((a+b>c)&&(b+c>a)&&(c+a>b))。
  • 第五步:如果滿足條件,輸出面積等於sqrt(s(s-a)(s-b)*(s-c)),周長等於a+b+c。
  • 第六步:否則,輸出These sides do not correspond to a valid triangle。

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

  • (1).段錯誤:scanf語句沒加&號。
  • (2).判斷三角形的條件錯誤:有上網查詢最后正確了。

4.本題PTA提交列表

題目2.出租車計價

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

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

1.實驗代碼

	int time,m1,m2;
	double mile;
	scanf("%lf %d",&mile,&time);
	
	if(mile<=3){
		m1=10;
	}
	else if(mile>3&&mile<=10){
		m1=10+2*(mile-3);
	}
	else 
	m1=24+3*(mile-10);

    if(time<5){
    	m2=0;	
	}
	else
	m2=2*time/5;
	printf("%d",m1+m2);

2.設計思路

  • 第一步:定義三個整型變量time放等待時間,m1放正常費用,m2放停車費用。定義一個雙精度浮點型變量mile放行駛里程。
  • 第二步:輸入行駛公里mile和等待時間time的值。
  • 第三步:用if語句將行駛里程分為三類。
  • 第四步:如果行駛里程mile小於等於3,賦值正常費用m1=10。
  • 第五步:如果行駛里程mile大於3小於等於10,賦值正常費用m1=10+2*(mile-3)。
  • 第六步:否則,m1=24+3*(mile-10)。
  • 第七步:用if語句將等待時間分為兩類。
  • 第八步:如果等待時間time小於5,賦值m2=0。
  • 第九步:否則,賦值m2=2*time/5。
  • 第十步:最后輸出m1+m2即為總費用。

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

  • (1).結果四舍五入:題目要求結果輸出需要四舍五入,上網查詢並沒有得到解決,但是我將mile定義為雙精度浮點型,m1是mile經過運算得到的。最后提交答案正確,可是還是不理解四舍五入應該怎么實現。

4.本題PTA提交列表

題目4.程序設計聯考

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

1.實驗代碼

	int account,school;
	
	scanf("%d",&account);
	school=account/100000;

  switch(school){
    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.設計思路

  • 第一步:定義兩個整型變量account放考生賬號,school放考生所在學校。
  • 第二步:輸入account的值。
  • 第三步:用switch語句實現多分支判斷。
  • 第四步:如果school=1,輸出Hunan Agricultural University。
  • 第五步:如果school=2,輸出Jishou University。
  • 第六步:如果school=3,輸出Huaihua University。
  • 第七步:如果school=4,輸出Ocean University。
  • 第八步:否則,輸出Other University。

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

  • (1).編寫錯誤:第一次用if語句來實現多分支,后來又改寫成switch語句。
  • (2).不會編寫:在使用switch語句時,不知道要怎樣用它實現判斷第一個數字。
    解決辦法:在課堂中老師講到了一個同類型的成績分類的例題,聽完后一下子明白了該怎么實現判斷條件。自己做不出的原因是對/號和%號的理解不夠深刻。

4.本題PTA提交列表

二、截圖本周題目集的PTA提交列表及最后排名。

三、本周學習總結

1.你學會了什么?

  • if-else語句: if (x=3) 判斷符號為==else (x==3)else后不能加條件
if (x<3)
  else if(x>5)
else

最后一個else是與第一個if相匹配,再利用if語句的嵌套時,要及時加入{}。

  • switch語句:switch語句只進入滿足條件的分支,比if語句更高效,但是只能判斷某一常量。
    case后有:號,每一個case后要加break.
  • scanf語句:自己總是會忘記加&號,導致在DEV C++里運行時總是出現
    而且在PTA上也是段錯誤,最后認真檢查了一遍才查出了錯誤。
  • %10為取個位,、10為去掉個位。
  • 這次的編程作業有專門設定符合題意的變量名,慢慢向見名知義看齊。

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

  • 經過上一周的基礎訓練,這周接觸到了if語句的嵌套、switch語句的靈活運用以及熟練運用%、/號。
  • 在編碼的過程中發現自己對於多類型混合運算結果還是很迷糊,尤其是出租車計價那道題,要求四舍五入,還是不清楚要怎樣實現四舍五入。
  • 在課堂中的互動過程中,我發現自己對於動手寫下代碼還有很大的缺陷,比如‘’號寫成''''號,;忘記寫這類低級錯誤。這說明僅僅會敲代碼不行,能正確無誤的寫下代碼才是真正的熟練。尤其是像switch語句這種較為復雜的代碼,更需要自己動手寫一寫,所以在以后的做作業過程中,我會先自己將代碼寫下來,再放到DEV C++里運行,最后再放到PTA里提交。
  • 我還發現自己對於安排時間以及對作業的規划上有所欠缺,在面對課堂派預習作業,PTA,博客園,看慕課都未完成的情況下,自己忙得團團轉,不僅降低了效率,而且還增加了一些抵觸情緒與焦躁感。后來想想還是因為自己沒有合理的安排好每天的任務,才導致作業都堆積在一起。因此在以后的每一周中,我會將作業安排細化,要在不緊不慢的節奏中將每份作業做到最好。


免責聲明!

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



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