C語言課程設計實習報告

2021-04-11 15:56:54 字數 3632 閱讀 6401

班級:83121

姓名:張弛

學號:20121000491

2014-1

題目一、

題目描述: 已知銀行整存整取存款不同期限的月息利率(採用複利方式,即利滾利)分別為

0.63% 期限一年

0.66% 期限二年

月息利率= 0.69% 期限三年

0.75% 期限五年

0.85% 期限八年

要求輸入存錢的本金和期限(以整數年為單位),求到期時能從銀行得到的利息與本金的合計。

提示:可以用巢狀的if-else結構或switch結構實現,核心函式pow(1+月利率,月份)。

請思考年份是

四、六、七或八年以上的情況。

設計思路:

(一)使用switch 選擇語句對應年份

(二)明確核心函式pow是計算複利的(例如:x的n次方 );由於是以年為計算期限的,而所給的利率是月利率,所以計算時應該在年的基礎上乘以12;

(三)複利計算就是一種冪運算,i=p*(1+i)^n,本金和利率都是變動的

(四)在除了1、2、3、5和8年之外的其他年份中,要注意「就低不就高」的原則,尤其是在8年之後,也是套用期限八年的利率。

執行效果截圖:

附源程式如下:

#include

#include

void main()

printf("%f",sum);}題目

二、題目描述:

簡單計算器。用switch語句編寫乙個程式計算表示式:data1 op data2的值。其中op為運算子+、-、*、/。

設計思路:

(一)明確計算器是怎樣進行計算的;

(二)細節,比如很多地方需要分號,在遇到字元時,我們應該用『』,而不是「」;

(三switch語句主要用於多分支選擇,此題有+、-、*、/,這就是選擇。使用switch 每個case對應+ - * /符號程式涉及到至少三個量,運算子op和兩個數字;先讓使用者輸入兩個數字和運算子,兩個數字的計算在後面的程式中用swith結構執行。

執行效果截圖:

附源程式如下:#include

int main()

這個是個選擇結構如果 op = stick 則執行這一句如果沒有則執行 default 後面的語句

printf("%f",c);

return 0;

}題目三

題目描述:編寫程式,用二分法求方程2x3-4x2+3x-6=0在(-10,10)之間的根。

提示:1 用do-while語句實現。

2 二分法的計算步驟:

(1) 準備計算f(x)在有根區間[a,b]端點處的值f(a),f(b)

(2) 二分計算f(x)在區間中點(a+b)/2處的值f[(a+b)/2]

(3) 判斷若f[(a+b)/2]=0,則即是根,計算過程結束。

否則,檢測:

a. 若f[(a+b)/2]與f(a)異號,則根位於區間[a,(a+b)/2]內,這時以(a+b)/2代替b;

b. 若f[(a+b)/2]與f(a)同號,則根位於區間[(a+b)/2,b]內,這時以(a+b)/2代替a;

反覆執行步驟2和3,直到區間[a,b]長度縮小到允許的誤差範圍之內,此時中點(a+b)/2即為所求的根

設計思路:

(一)二分法是指在整個演算法中,讓計算值無限趨近於根的值,利用數學知識可知,當了兩個點的結果異號時,函式的根就在這兩個數之間,利用二分法可以無限的把根的範圍縮小,直到可以確定為止;

(二)do-while是迴圈語句,先執行一次指定的迴圈體語句,然後判別表示式,當表示式的值為非零(真)時,返回重新執行迴圈語句,如此反覆,直到表示式的值等於0(假)為止才結束。

(三)void main()是宣告函式,並且是對主函式的宣告。題目所給的範圍是(-10,10),因此在宣告函式中定義乙個a和b來代替區間的範圍,而用c來代指中間指也是最後的結果,在這個程式中a、b、c都是隨著範圍不斷變化的變數。如果(-10,10)的範圍過大,就需要迴圈語句來縮小區間範圍,即a=c或b=c。

當函式值在(-10,10)中任意一點取得0時,就正是我們所要的結果。迴圈條件是當區間a和b的函式值小於精度0.01。

執行效果截圖:

附源程式如下:

#include "stdio.h"

float f(float x)

void main()

while(f(b)*f(a)<0.01); /*解的精度為0.01*/

printf("方程的解是:%f",c);

}題目四

題目描述:編寫程式,給定乙個整數i,請求出另乙個整數j,使i和j在用8位二進位制表示時互為逆序。例如:

給定i=3時,應得到j=192(3的二進位制為:00000011,192的二進位制為11000000)。

提示:1 十進位制整數轉換為二進位制整數用「除2求餘」法。

2 二進位制整數轉換為十進位制整數用「按權相加」法。

設計思路:

(一)二進位制整數轉化為十進位制整數用「按權相加」法

(二)二十進位制整數轉化為二進位制整數用「除2求餘」,用&轉化。

(三)運算子:《是指左移一位,>>是指右移一位,<<=結合時從右到左運算,其中a<>a是指b向右移a位,左移一位相當於乘2 右移1位相當於除2

(四)在交換時,用的是中間法

執行效果截圖:

附源程式如下:#include "stdio.h"

void main()

printf("所得到的j為:\n");

printf("%d\n",(a[0]<<7) | (a[1]<<5) | (a[2]<<3) | (a[3]<<1) | (a[4]>>1) | (a[5]>>3) | (a[6]>>5) | (a[7]>>7));

}題目五

題目描述:編寫程式,抓交通肇事犯。

一輛卡車違反交通規則,撞人後逃跑。現場有三人目擊事件,但都沒有記住車號,只記落車號的一些特徵。甲說:

牌照的前兩位數字是相同的;乙說:牌照的後兩位數字是相同的,但與前兩位不同;丙是位數學家,他說:四位的車號剛好是乙個整數的平方。

根據以上線索求出車號。

提示:1 按照題目的要求,造出乙個前兩位數相同、後兩位數相同且相互間又不同的整數,然後判斷該整數是否是另乙個整數的平方。

2 用窮舉法解此題。窮舉法是最簡單、最常見的一種程式設計方法,它充分利用了計算機處理的高速特徵。窮舉法的關鍵是要確定窮舉的範圍,既不能過分擴大窮舉的範圍,也不能過分縮小窮舉的範圍,否則程式的執行效率會很低,或有可能遺漏正確的結果而產生錯誤。

設計思路:

(一)11 11 到11 99 在 99 11 這樣窮舉判斷是否乙個數的平方則是將這個數開方取整再取平方是否還是原來的數

(二)此題需要滿足三個條件:①前兩個數相同,後兩個數相同;②前後兩數分別不相同;③這個數是乙個整數的平方。需要每個條件都滿足,if才為真。

(三)主要思路是窮舉。窮舉是指在適當的範圍內舉出乙個數。

執行效果截圖:

附源程式如下:

#include

void main()

} 題目六

題目描述:從終端輸入實數x,用遞推法求ex=1+x+x2/2!+x3/3!+…+xn/n!的值。

設計思路:先輸入乙個x的值;再設計乙個子函式,計算1!,2!

,3!…n!的值;之後用sum函式,和pow函式處理分子,用累加的方式進行分子計算,並形成等式;最後輸出結果。

C語言課程設計報告

課程名稱計算機高階語言課程設計 c 教師姓名 本科生姓名 本科生學號 本科生專業機械設計製造及其自動化 所在院系機電學院 類別c.本科生 日期2013.7.11 注 1 無評閱人簽名成績無效 2 必須用鋼筆或原子筆批閱,用鉛筆閱卷無效 3 如有平時成績,必須在上面評分表中標出,並計算入總成績。模擬手...

C語言課程設計報告

1.本頁為設計報告要求頁,製作好報告後輸出時將本頁刪除 2.本模板的各種字型及頁面設定請同學們 3.本設計報告左側裝訂。在虛線處裝訂。4.在課程設計封皮一頁上用已經設定好的宋體四號來填寫各個專案。5.在課程設計評定表一頁上用宋體小四填寫班級 學號 姓名 專案組 專案組長 專案組組員 本人工作簡介。組...

C語言課程設計報告

電氣與資訊工程學院 c語言程式設計 課程設計報告 課程設計題目 酒店房間登記與計費管理 專業自動化 班級t1023 6 姓名師曉義 1 需求分析 1 問題 根據需求,該系統所應包含的資訊有以下一些 酒店房間登記與計費管理的基本資訊 客戶姓名 身份證號 開始入住時間 退房時間 入住房間號 房間 入住費...