C語言程式設計第五次作業

來源:互聯網
上載者:User

標籤:clu   資料   有關   查看   輸入輸出   c語言   dig   學習   區別   

(一)改錯題

1.輸出華氏攝氏溫度轉換表:輸入兩個整數lower和upper,輸出一張華氏攝氏溫度轉換表,華氏溫度的取值範圍是{lower,upper},每次增加2℉。計算公式如下:
c = 5×(f-32)/9
其中,c表示攝氏溫度,f表示華氏溫度。
錯誤資訊1:

錯誤原因1:for語句後不能加分號。

改正方法:將if後的分號去掉

錯誤資訊2:

錯誤原因2:for迴圈內語句大於一句時要加{}

改正方法:將for內語句用{}括起

錯誤資訊3:

錯誤原因3:for內的語句要用;間隔

改正方法3:將for內的逗號改為;

編譯錯誤!

仔細查看程式後,發現變數輸入輸出格式並不匹配

錯誤資訊4:fahr變數定義為整型,但輸出確是以浮點型輸出

改正方法4:將%3.0f改為%d

錯誤資訊5:

錯誤資訊5:celsius為double型,與計算結果不匹配

改正方法5:在5/9前加強制類型轉換(double)

運行正確!

二.學習總結:

1.詳細描述程式的執行過程,即說明程式的每一步是執行的哪條代碼,執行順序如何。迴圈需描述前兩次迴圈和最後一次迴圈的詳細執行過程。最後說明程式實現的功能是什麼。

答:①定義了四個整形常量i num odd even

       ②分別給odd和even賦初值0

       ③進入for迴圈,i=1,條件為真

       ④輸出一個整數num,判斷num的奇偶性,並給相應的統計奇偶的個數的數值加一,此為第一次迴圈

       ⑤執行i++,此時i=2,條件為真,開始第二次迴圈

       ⑥輸入一個整數num,判斷奇偶性並給統計其個數的數值加一,此為第二次迴圈

       ⑦重複執行

       ⑧當i=11時,條件為假,無法執行該迴圈,故迴圈結束

實現功能:輸入任意的10個整型數,分別統計其中奇數的個數和偶數的個數

2.遞增運算子

(1)運行下面程式,結果是什嗎?遞增運算子在單獨使用時,首碼和尾碼形式有區別嗎?

結果為

該遞增運算子本身是有不同的,++i指先讓i自加,而後執行語句,i++指先執行語句,而後i自加,但在本程式中,遞增運算子在單獨使用時,首碼和尾碼並沒有影響。

(2)運行下面的程式,結果是什嗎?兩條輸出語句的執行過程是怎樣的?說明什麼問題?這兩條輸出語句執行完後,i和j的值分別是多少?

結果為

第一條輸出語句printf("%d\n",i++);是先輸入i的值,而後i的值加一;第二條輸出語句printf("%d\n",++j); 是先講j的值加一,而後輸出。說明遞增運算子在語句運行時是有一定區別的。兩條輸出語句執行完後,i和j的值均為3.

3.有些迴圈語句後面有{},有些沒有,有些語句有縮排,運行下面的四個小程式,運行結果有什麼不同?迴圈體的認定與縮格形式是否有關?與{}是否有關?那麼,應該如何正確判斷一個迴圈語句中的迴圈體?下面的程式中,哪幾種格式是正確的縮排格式。

1、

2、

3、

4、

結合1,2來分析,縮排的格式並不相同,但結果是一樣的,因此迴圈體與縮格並無關係。

結合2,3來分析,很明顯3多了{},輸出結果不同;結合3,4都有{},但是裡邊所含的語句個數不同,輸出結果也不同,因此與{}有關。

第二種縮排不正確

4.對其他你認為需要進行總結的內容進行總結。

1、要注意增量符i++與++i的區別,正確使用。

2、for語句中的判斷條件是否成立應用“==”來表示,“=”為賦值不要混淆。

三.實驗總結
1.(1)題目
 求奇數分之一序列前N項和
本題要求編寫程式,計算序列 1 + 1/3 + 1/5 + ... 的前N項之和。
(2)流程圖

   

(3)原始碼

 

  #include<stdio.h>

  int main()
  {
   int i,N,x=1;
   double y,S=0.0;
   scanf("%d",&N);
   for(i=1;i<=N;i++)
   {
       y=(double)1/x;
    S=S+y;
    x=x+2;
   }
   printf("sum = %.6f",S);
   return 0;
  }

 

(4)實驗分析:

問題:把“sum = sum + 1.0 / i”寫成了“sum = sum + 1 / i”

原因:精確度不準確,導致結果錯誤

解決辦法:把“sum = sum + 1 / i”改為“sum = sum + 1.0 / i”

(5)本題PTA提交列表

3. (1)題目:奇偶分家
 給定N個正整數,請統計奇數和偶數各有多少個?

(2)流程圖

(3)原始碼

 

  #include<stdio.h>

  int main()
  {
   int N,i,x,count1=0,count2=0;
   scanf("%d",&N);
   for(i=0;i<N;i++)
   {
    scanf("%d",&x);
    if(x%2==1)
      count1++;
    else
      count2++;
   }
   printf("%d %d",count1,count2);

  }

 

(4)實驗分析

問題:if語句內的判斷唯寫了一個等號

原因:=為賦值,if內==才是判斷

改正方法:改為==

(5)本題PTA提交列表

 

5.(1)題目:統計字元
本題要求編寫程式,輸入10個字元,統計其中英文字母、空格或斷行符號、數字字元和其他字元的個數。
(2)流程圖

(3)原始碼

 

  #include <stdio.h>

  #include <string.h>
  #define N 10
  int main()
  {
      int letter=0,blank=0,digit=0,other=0,i;
      char x;
      for(i=0;i<N;i++)
      {
       scanf("%c",&x);
       if((x>=‘a‘&&x<=‘z‘)||(x>=‘A‘&&x<=‘Z‘))
          {
              letter++;
          }
          else if(x==‘ ‘||x==‘\n‘)
          {
              blank++;
          }
          else if(x>=‘0‘&&x<=‘9‘)
          {
              digit++;
          }
          else
          {
              other++;
          }
  }     
      printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
      return 0;
  }

 

(4)實驗分析

問題:if((a >= "a"&& a <="z")||(a >= "A"&& a <= "Z"))

原因:判斷的是字元,要用‘’

改正方法:if((a >= ‘a‘ && a <= ‘z‘)||(a >= ‘A‘ && a <= ‘Z‘))

(5)本題PTA提交列表

7.(1)題目:求交錯序列前N項和
本題要求編寫程式,計算交錯序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N項之和。
(2)流程圖

 

(3)原始碼

 

  #include<stdio.h>

  int main()
  {
  int i,j=3,N;
  double a=1,b;
  scanf("%d",&N);
  if(N!=1)
  {
  for(i=2;i<=N;i++)
  {
  b=(double)i/j;  
  if(i%2==0)
  {
  b=-b;
  } 
  a=a+b;
  j=j+2;
  }
  }
  printf("%.3f",a);
  return 0;
  }

 

 

(4)實驗分析

發現運行結果i資料不精確時,要仔細檢查,常常是要使用強制類型轉換的!

(5)本題PTA提交列表

 四.部落格互評

         http://www.cnblogs.com/zrx--/p/7814055.html

         http://www.cnblogs.com/ziluo/p/7819483.html

         http://www.cnblogs.com/xiaoqi1/p/7821666.html

 

C語言程式設計第五次作業

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.