c語言第二次作業


一、PTA實驗作業

題目1. 計算分段函數

注:可在頭文件中包含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);

2.設計思路

  • (1)定義兩個浮點型變量x,y。
  • (2)當x>0時,輸出y=sqrt(x),不滿足時輸出y=pow(x+1,2)+2*x+1/x。
  • (3)輸出y的值。

3.本題調試過程中碰到的問題及解決方法

第一次提交時出現了格式錯誤,后來通過檢查發現等號間沒取間距。

4.PTA提交列表

題目2.輸出三角形面積和周長(15 分)

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

1.代碼

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

2.設計思路

  • (1)定義三個整形變量a,b,c代表三條邊,定義兩個浮點型變量 area,perimeters代表面積和周長。
  • (2)輸入a,b,c三個變量。
  • (3)如果這三條邊能組成三角形,則 perimeter = (a+b+c)1.0, s = (a+b+c)/2.0,area = sqrt(s(s-a)(s-b)(s-c))。
  • (4)滿足時輸出面積和周長,不滿足時輸出These sides do not correspond to a valid triangle的語句。

3本題調試過程中碰到的問題及解決方法

在判斷是否滿足三角形時的那三個表達式之間的&號寫少了一個,后來經過檢查改正了。

4.PTA提交列表

題目3.出租車計價(15 分)

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

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

1.代碼

int minute;
  double kilometre,money;
  scanf("%lf %d",&kilometre,&minute);
  if(kilometre<=3){
    money=10+minute/5*2;
    }

  else if(kilometre>3&&kilometre<=10){
      money=10+(kilometre-3)*2+minute/5*2;
    }
  else{
      money=24+(kilometre-10)*3+minute/5*2;
    }
  printf("%.0f",money);

2.設計思路

  • (1)定義一個整形變量minute表示時間,定義兩個浮點型變量kilometre,money分別表示里程和價錢。
  • (2)輸入kilometre與minute。
  • (3)當kilometre<=3時, money=10+minute/52;當3<kilometre<=10時, money=10+(kilometre-3)2+minute/52;其他情況時, money=24+(kilometre-10)3+minute/5*2。
  • (4)輸出money的值。

3.本題調試過程中碰到的問題及解決方法

輸入里程大於10的數據檢查時發現得不到理論值,調試時總是執行第2種情況,后經過多次檢查發現我把第2種情況的取值寫成了3<kilometre<=10的錯誤形式。

4.PTA提交列表

題目4.程序設計聯考(5 分)

自從湖南農業大學、吉首大學和懷化學院組織程序設計課程聯考以后,舉辦聯考的經驗越來豐富。尤其是在使用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\n");
            break;
        case 2:
            printf("Jishou University\n");
            break;
        case 3:
            printf("Huaihua University\n");
            break;
        case 4:
            printf("Aerospace University\n");
            break;
        case 5:
            printf("Ocean University\n");
            break;
        default:
            printf("Other University\n");
            break;

2.設計思路

  • (1)定義一個整形變量 account代表學生賬號。
  • (2)把account/100000,當它取值為1時,輸出學校Hunan Agricultural University;當它取值為2時,輸出學校Jishou University;當它取值為3時,輸出學校Huaihua University;當它取值為4時,輸出學校Aerospace University;當它取值為5時,輸出Ocean University。

3.本題調試過程中碰到的問題及解決方法

調試過程中Other University這個語句間忘了取間隔。

4.PTA提交列表

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

三、本周學習總結

1.你學會了什么?

  • 學會了用else-if、swich這兩種語句來實現多分支結構,並了解了這兩種語句的異同。
  • 學到了一種新的數據類型--字符型數據,它定義時要用類型名char。
  • 學會了用for語句來設計循環類的編程。
  • 了解到了幾種邏輯運算符,之前一直以為一個不等式如1<x<2可以直接表達,通過PTA的作業才發現計算機無法識別,要用&&這個運算符才可以。
  • 兩種分支結構中swich含break語句,break可以提前結束程序,而不加時就會按順序執行到結束。

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

  • 對swich語句還不夠熟練,有點陌生,不會區分一些多分支題目用哪種比較方便,感覺兩者沒什么區別。
  • 對書本上提到的輸入函數getchar()、輸出函數putchar()不太了解,不知道它們和scanf()、printf()有什么區別。

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

  • 沒碰到太大困難,就是經常犯格式上的錯誤。爭取以后細心點。


免責聲明!

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



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