輔修C 語言練習實驗報告


 

輔修C 語言練習實驗報告

 

一.題目分析

 

題目一

 

7-25 求冪之和(15 分)

 

本題要求編寫程序,計算sum=2​1​​+2​2​​+2​3​​+⋯+2​n​​。可以調用pow函數求冪。

 

輸入格式:

 

輸入在一行中給出正整數n≤10)。

 

輸出格式:

 

按照格式“result = 計算結果”輸出。

 

  1. 本題pta提交列表:

 

 

 

  1. 設計思路(流程圖)

 

 

 

 

 

 

最終程序如下:

 

#include<stdio.h>

 

#include<math.h>

 

int main(){

 

int i,n,result=0;

 

    scanf("%d",&n);

 

    for(i=1;i<=n;i++)

 

    result+=pow(2,i);

 

    printf("result = %d",result);

 

}

 

  1. 本題調試結果

 

 

 

本題在編程中算是十分簡單的一題了,注意好細節便不會有什么太大的問題。因為使用到pow這個數學函數,所以頭定義要加上 #include<math.h>

 

 

 

 

 

 

 

題目二

 

7-14 特殊a串數列求和(20 分)

 

給定兩個均不超過9的正整數an,要求編寫程序求a+aa+aaa++⋯+aaana)之和。

 

輸入格式:

 

輸入在一行中給出不超過9的正整數an

 

輸出格式:

 

在一行中按照“s = 對應的和”的格式輸出。

 

  1. 本題 pta提交列表:

 

 

 

  1. 設計思路(包括流程圖)

最終程序如下

 

#include<stdio.h>

 

int main()  

 

{  

 

    int a,n;   

 

    int sum=0;  

 

    scanf("%d %d",&a,&n);

 

    int k=a;  

 

    for(int i=1;i<=n-1;i++)  

 

    {  

 

        a*=10;  

 

        a+=k;  

 

        sum+=a;  

 

    }  

 

  sum+=k;

 

  printf("s = %d",sum) ;

 

  

 

    return 0;  

 

}  

 

  1. 本題的調試結果為:

 

 

 

與樣例結果一致

 

  1. 實驗過程中遇到的問題以及解決方法

 

  這題難度較上一題難度稍大一點。但是由於程序寫的較少,還比較生疏,造成了失誤以至於浪費了很多時間來尋找錯誤。

 

在原本的程序中,我把 int k=a;放在了scanf("%d %d",&a,&n);前面,以至於運行結果嚴重出錯,還一直苦思冥想找不到原因。后來兩者順序對調一下便沒有什么問題了。

 

從這題 謹記!!!!數字的輸入應先放在前面,后面的變量再調用這個數,否則程序會錯的很離譜。

 

      

 

題目三:

 

7-3 統計字符(15 分)

 

本題要求編寫程序,輸入10個字符,統計其中英文字母、空格或回車、數字字符和其他字符的個數。

 

輸入格式:

 

輸入為10個字符。最后一個回車表示輸入結束,不算在內。

 

輸出格式:

 

在一行內按照

 

letter = 英文字母個數, blank = 空格或回車個數, digit = 數字字符個數, other = 其他字符個數

 

的格式輸出。

 

  1. 本題pta提交列表

 

 

 

2.設計思路(流程圖)

 

 最終程序為:#include<stdio.h>

 

int main()

 

{

 

char en[10];

 

 

 

    int i,letter=0,blank=0,digit=0,other=0;

 

    for(i=0;i<10;i++)

 

    en[i]=getchar();

 

    for(i=0;i<10;i++){

 

    if((en[i]>='a'&&en[i]<='z')||(en[i]>='A'&&en[i]<='Z'))

 

    letter++;

 

    else if(en[i]== ' '||en[i]== '\n')

 

    blank++;

 

    else if(en[i]>= '0'&&en[i]<= '9')

 

    digit++;

 

    else

 

    other++;

 

 

 

}

 

    printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);

 

}

 

  1. 本題調試結果:

 

 

 

與樣例一致

 

  1. 題目分析

 

   本題難度一般,就是過程較為繁瑣。

 

利用for 語句以及getchar 給字符型數組賦值,判斷一個字符是數字、大寫字母、小寫字母或者其他主要依據於ASCII碼值。只要記清楚每種字符類型對應的ASCII碼值的范圍,在利用if語句判斷。問題不大。

 

 本題除了一些小細節,沒有出現什么需要特別注意以及很難解決的問題。

 

 

 

 

 

 

 

二.同學代碼互評(例7-20 同學:王紀聰)

 

  我的代碼:

 

同學的代碼:

 

 

 

代碼互評:雖然兩個同學的代碼看起來有所差異,但實際上思路差不多一樣。兩個同學都采用了循環,唯一不同的是,我判斷的是命題的真假。兩個人的方法都很方便快捷。

 

 

 

三.總結

 

  1. 我學會了什么?

 

 

 

從以上三題中,我更加熟練的掌握了for 循環語句,if判斷語句的應用 以及了解了數組的使用。更加清晰的記住了數字,大寫字母,小寫字母對應的ASCII值。以及十分值得記住的由第二個題目得知的——實驗要先輸入數,才能對數進行調用。

 

  1. 這些內容,還有那些不會?

 

數組的掌握可能還不夠嫻熟。基本知識都懂,在運用上面可能就存在比較大的問題。實驗中使用到的參數類型大部分為整型,長整型、浮點型之類的接觸較少。我會盡量多花時間,多練習,以便能夠更加熟練的掌握知識點。

 


免責聲明!

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



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