97超级碰碰碰久久久_精品成年人在线观看_精品国内女人视频免费观_福利一区二区久久

c++課程設計實踐報告

時間:2022-07-02 22:32:31 報告范文 我要投稿
  • 相關推薦

c++課程設計實踐報告

班級:83121

c++課程設計實踐報告

姓名:張弛

學號:20121000491

題目一、 題目描述: 已知銀行整存整取存款不同期限的月息利率(采用復利 方式,即利滾利)分別為 0.63% 期限一年 0.66% 期限二年 月息利率= 0.69% 期限三年

0.75% 期限五年 0.85% 期限八年 要求輸入存錢的本金和期限(以整數(shù)年為單位) ,求到期時能從銀行 得到的利息與本金的合計。 提示:可以用嵌套的 if-else 結(jié)構(gòu)或 switch 結(jié)構(gòu)實現(xiàn),核心函數(shù) pow(1+月利率,月份)。 請思考年份是四、六、七或八年以上的情況。

設計思路: (一)使用 switch 選擇語句 對應年份

(二)明確核心函數(shù) pow 是計算復利的(例如:x 的 n 次方 ) ;由于 是以年為計算期限的,而所給的利率是月利率,所以計算時 應該在年的基礎上乘以 12; (三)復利計算就是一種冪運算,I=p*(1+i)^n,本金和利率都是變

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

附源程序如下: #include #include void main() { int years; float capital,sum;

scanf("%f %d",&capital,&years); switch(years) { case 1:sum=capital*pow(1+0.63*0.01,12);break; case 2:sum=capital*pow(1+0.66*0.01,24);break; case 3:sum=capital*pow(1+0.69*0.01,36);break;

case 4:sum=capital*pow(1+0.69*0.01,48);break;

case 5:sum=capital*pow(1+0.75*0.01,60);break; case 6:sum=capital*pow(1+0.75*0.01,72);break; case 7:sum=capital*pow(1+0.75*0.01,84);break; case 8:sum=capital*pow(1+0.85*0.01,96);break; default:sum=capital*pow(1+0.85*0.01,12*years); } printf("%f",sum); }

題目二、 題目描述: 簡單計算器。用 switch 語句編寫一個程序計算表達式: data1 op data2 的值。其中 op 為運算符+、-、*、/。

設計思路: (一)明確計算器是怎樣進行計算的; (二) 細節(jié), 比如很多地方需要分號, 在遇到字符時, 我們應該用 ‘’ , 而不是“” ; (三 Switch 語句主要用于多分支選擇,此題有+、-、*、/,這就是 選擇。使用 switch 每個 case 對應+ - * /符號 程序涉及到至

少三個量,運算符 op 和兩個數(shù)字;先讓用戶輸入兩個數(shù)字和運算符, 兩個數(shù)字的計算在后面的程序中用 swith 結(jié)構(gòu)運行。 運 行 效 果 截 圖 :

附源程序如下:#include int main() { float data1,data2,c;

char op; printf("請輸入表達式中兩個數(shù)字 data1 和 data2 "); //打印 scanf("%f%c%f",&data1,&op,&data2); //輸入

printf("請輸入運算符+、-、*、/ ");// 打印 switch(op) //switch (){case stick:break;} 這個是個選擇結(jié)構(gòu)

如果 OP = stick 則執(zhí)行這一句 如果沒有 則執(zhí)行 default 后面 的語句 { case '+':c=data1+data2;break; case '-':c=data1-data2;break; case '*':c=data1*data2;break; case '/':c=data1/data2;break; default:printf("輸入錯誤");break; } printf("%f",c); return 0; } 題目三 題目描述:編寫程序,用二分法求方程 2x3-4x2+3x-6=0 在(-10,10) 之間的根。 提示: ① 用 do-while 語句實現(xiàn)。

② 二分法的計算步驟: (1) 準備 計算 f(x)在有根區(qū)間[a,b]端點處的值 f(a),f(b) (2) 二分 計算 f(x)在區(qū)間中點(a+b)/2 處的值 f[(a+b)/2] (3) 判斷若 f[(a+b)/2]=0,則即是根,計算過程結(jié)束。 否則,檢測: A. 若 f[(a+b)/2]與 f(a)異號, 則根位于區(qū)間[a,(a+b)/2]內(nèi), 這時以(a+b)/2 代替 b; B. 若 f[(a+b)/2]與 f(a)同號, 則根位于區(qū)間[(a+b)/2,b]內(nèi), 這時以(a+b)/2 代替 a; 反復執(zhí)行步驟 2 和 3,直到區(qū)間[a,b]長度縮小到允許的誤差范圍之 內(nèi),此時中點(a+b)/2 即為所求的根 設計思路: (一)二分法是指在整個算法中,讓計算值無限趨近于根的值,利用 數(shù)學知識可知,當了兩個點的結(jié)果異號時,函數(shù)的根就在這兩個數(shù)之 間,利用二分法可以無限的把根的范圍縮小,直到可以確定為止; (二)do-while 是循環(huán)語句,先執(zhí)行一次指定的循環(huán)體語句,然后 判別表達式, 當表達式的值為非零 (真) 時, 返回重新執(zhí)行循環(huán)語句, 如此反復,直到表達式的值等于 0(假)為止才結(jié)束。 (三)Void main()是聲明函數(shù),并且是對主函數(shù)的聲明。題目所 給的范圍是(-10,10) ,因此在聲明函數(shù)中定義一個 a 和 b 來代替區(qū) 間的范圍,而用 c 來代指中間指也是最后的結(jié)果,在這個程序中 a、 b、c 都是隨著范圍不斷變化的變量。如果(-10,10)的范圍過大,

就需要循環(huán)語句來縮小區(qū)間范圍, 即 a=c 或 b=c。 當函數(shù)值在 (-10,10) 中任意一點取得 0 時,就正是我們所要的結(jié)果。循環(huán)條件是當區(qū)間 a 和 b 的函數(shù)值小于精度 0.01。 運行效果截圖:

附源程序如下: #include "stdio.h" float f(float x) { float y; y=2*x*x*x-4*x*x+3*x-6; return y; } void main() { float a=-10,b=10,c;

do{c=f((a+b)/2); if(c==0) break; if(c*f(a)>0) a=c; else b=c; } while(f(b)*f(a)<0.01); /*解的精度為 0.01*/ printf("方程的解是:%f",c); }

題目四 題目描述:編寫程序,給定一個整數(shù) i,請求出另一個整數(shù) j,使 i 和 j 在用 8 位二進制表示時互為逆序。例如:給定 i=3 時,應得到 j=192(3 的二進制為:00000011,192 的二進制為 11000000) 。 提示: ① 十進制整數(shù)轉(zhuǎn)換為二進制整數(shù)用“除 2 求余”法。 ② 二進制整數(shù)轉(zhuǎn)換為十進制整數(shù)用“按權(quán)相加”法。

設計思路: (一)二進制整數(shù)轉(zhuǎn)化為十進制整數(shù)用“按權(quán)相加”法 (二)二十進制整數(shù)轉(zhuǎn)化為二進制整數(shù)用“除 2 求余” ,用&轉(zhuǎn)化。

(三)運算符:<<是指左移一位,>>是指右移一位,<<=結(jié)合時從右 到左運算, 其中 a<>a 是指 b 向右移 a 位, 左移一位相當于乘 2 右移 1 位相當于除 2 (四)在交換時,用的是中間法

運行效果截圖: 附源程序如下:#include "stdio.h" void main() { int i,j,s=1,a[8]; printf("請輸入一個整數(shù) i: "); scanf("%d",&i); for(j=0;j<8;j++,s<<=1) { a[j]=i & s; } printf("所得到的 j 為: ");

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

題目五 題目描述:編寫程序,抓交通肇事犯。 一輛卡車違反交通規(guī)則,撞人后逃跑。現(xiàn)場有三人目擊事件,但都沒 有記住車號,只記下車號的一些特征。甲說:牌照的前兩位數(shù)字是相 同的;乙說:牌照的后兩位數(shù)字是相同的,但與前兩位不同;丙是位 數(shù)學家,他說:四位的車號剛好是一個整數(shù)的平方。根據(jù)以上線索求 出車號。 提示: ① 按照題目的要求,造出一個前兩位數(shù)相同、后兩位數(shù)相同且相互 間又不同的整數(shù),然后判斷該整數(shù)是否是另一個整數(shù)的平方。 ② 用窮舉法解此題。窮舉法是最簡單、最常見的一種程序設計方法, 它充分利用了計算機處理的高速特征。窮舉法的關鍵是要確定窮 舉的范圍,既不能過分擴大窮舉的范圍,也不能過分縮小窮舉的 范圍,否則程序的運行效率會很低,或有可能遺漏正確的結(jié)果而 產(chǎn)生錯誤。

設計思路:

(一)11 11

到 11

99

99 11 這樣 窮舉

判斷是否一個

數(shù)的平方 則是 將這個數(shù)開方

取整 再取平方 是否還是原來的數(shù)

(二)此題需要滿足三個條件:①前兩個數(shù)相同,后兩個數(shù)相同;② 前后兩數(shù)分別不相同;③這個數(shù)是一個整數(shù)的平方。需要每個條件都 滿足,if 才為真。 (三)主要思路是窮舉。窮舉是指在適當?shù)姆秶鷥?nèi)舉出一個數(shù)。 運 行 效 果 截 圖 :

附源程序如下: #include void main() { int a,b; for(a=32;a<=99;a++)

{ b=a*a; if(b/1000==b%1000/100 b%100!=(b/1000)*10+b%1000/100) printf("The license plate is:%d ",b); } } && b%100/10==b%10 &&

題目六 題 目 描 述 : 從 終 端 輸 入 實 數(shù) ex=1+x+x2/2!+x3/3!+?+xn/n!的值。 設計思路: 先輸入一個 x 的值; 再設計一個子函數(shù), 計算 1! , 2! , 3! ?n! 的值;之后用 sum 函數(shù),和 pow 函數(shù)處理分子,用累加的方式進行分 子計算,并形成等式;最后輸出結(jié)果。 x , 用 遞 推 法 求

附源程序如下:#include "stdio.h" int f(int x,int n) { int i,m=0; for(i=0;i

for(i=0,s=0;f(x,i)<0.001;i++) s+=f(x,i); printf("其結(jié)果為:%d ",s); }

題目七 題目描述:打印出以下的楊輝三角形(要求打印出 10 行) 。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ?? ?? ??

設計思路: (一)二維數(shù)組主要用于處理多行的問題,而且第一行在數(shù)組之中是 第 0 行。 (二)楊輝三角有一個明顯的特點:每一行的最后一個數(shù)字與第一個 數(shù)是相同的,此外,下 (三)一行的第二個數(shù)是由上一行的第一個數(shù)和第二個數(shù)相加之和, 以此類推。

定義指針是為了讓整個程序不那么復雜。 運行效果截圖:

附源程序如下: #include int main(void) { int a[10][10],(*p)[10]=a,i,j; for(i=0;i<10;i++) {

*(*(p+i)+0)=1; *(*(p+i)+i)=1; } for(i=2;i<10;i++) for(j=1;j

題目八 題目描述:找出一個二維數(shù)組的“鞍點” ,即該位置上的元素在該行 上最大,在該列上最小。 提示: ① 一個二維數(shù)組可能有鞍點也可能沒有鞍點,若有鞍點,則只有一 個。

② 準備兩組測試數(shù)據(jù): (1) 二維數(shù)組有鞍點: 9 80 205 90 -60 210 40

96 1 89

-3 101

(2) 二維數(shù)組沒有鞍點: 9 80 205 90 -60 210 40 1 89

196

-3 101 7

45 54 156

③用 scanf 函數(shù)從鍵盤輸入數(shù)組各元素的值,檢查結(jié)果是否正確。如 果已指定了數(shù)組的行數(shù)和列數(shù),可以在程序中對數(shù)組元素賦初值,而 不必用 scanf 函數(shù)。請同學們修改程序以實現(xiàn)之。

設計思路: (一) 先找出一行中值最大的元素,然后看它是不是該列中的最小值,由于 一個二維數(shù)組最多有一個鞍點,所以如果是則鞍點存在且它就是鞍 點,輸出該鞍點;如果不是,則再找下一行的最 大數(shù),以此類推。如果每一行的最大數(shù)都不是鞍點,則此數(shù)組無鞍點 (二) 在程序中,先令 a[i][0]最大賦值給 maxi,在 for 循環(huán)的比較中,把

符合條件的行的最大值賦給 maxi,將每一次比較后的最大的列數(shù)賦 值給 maxj,從而找出 i 行最大的那個。 再假設那個數(shù)就是鞍點,將最大數(shù)和同列的數(shù)值相比,如果 maxj 不 是最小的,則不是鞍點,繼續(xù)找。 (三)引入一個參數(shù) flag=1,若不存在鞍點則 flag 為 0,若存在鞍 點則 flag 依舊為 1

運行效果截圖:

附源程序如下:#include "stdio.h" #define S 80 #define T 80 void main() { int m,n,i,j,t,maxh,maxl,flag,a[S][T]; printf("請輸入二維數(shù)組的行數(shù) m 和列數(shù) n: "); scanf("%d %d",&m,&n); printf("請輸入二維數(shù)組的各個元素: ");

for(i=0;ia[i][0]) t=a[i][j];maxh=i;maxl=j; } for(i=0;i

a[%d][%d]=%d ",maxh,maxl,a[maxh][maxl]); }

題目九 題目描述:某班期終考試科目為高數(shù) MT、英語 EN 和物理 PH,有 30

個人參加考試。為評定獎學金,要求統(tǒng)計并輸出一個表格,表格內(nèi)容 包括學好、各科分屬、總分和平均分,并標出 3 門課均在 90 分以上 者(該欄標志輸出為 Y,否則為 N) ,表格形式如下: NO MT EN PH SUM V >90 1 2 3 97 87 92 276 92 92 91 90 273 91 90 81 82 253 84 ...... N Y N

#include "stdio.h" void main()

設計思路:由于是對 30 個學生的數(shù)據(jù)進行輸入與統(tǒng)計,所以建立二 維數(shù)組, 根據(jù)各位置的條件來定義其內(nèi)容, 第 8 個數(shù)據(jù)是字符型數(shù)據(jù), 所以另設一數(shù)組進行存儲,最后在將數(shù)據(jù)整合輸出。

附源程序如下:#include "stdio.h" void main() { int i,j,sum,flag,a[30][7]; printf("請輸入 30 個考生的三科成績: ");

for(i=0;i<30;i++) { a[i][0]=i+1; for(sum=0,j=1;j<4;j++) {scanf("%d",&a[i][j]); sum+=a[i][j]; if(a[i][j]>90) flag=1; else flag=0; } a[i][4]=sum; a[i][5]=sum/3; if(flag=1) a[i][6]='Y'; else a[i][6]='N';

} printf("NO MT EN PH SUM V >90 "); for(i=0;i<30;i++) for(j=0;j<6;j++) { printf("%5d",a[i][j]); printf(" %c ",a[i][6]); }

}

題目十 題目描述下面是一個 5*5 階的螺旋方陣,試編程打印出此形式的 n*n (n<10)階的方陣(順時針旋進) 。 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 提示:用二維數(shù)組實現(xiàn)。

設計思路:定義一個 n*n 維數(shù)組存放該方陣,m 為該方陣的圈數(shù),一個大循環(huán)中嵌套了

四個小循環(huán),每一圈為一個大循環(huán),第一個小循環(huán)按順序?qū)懗龅谝恍械臄?shù),第二個小循環(huán)按 順序?qū)懗鲎詈笠涣械臄?shù), 第三個小循環(huán)按順序?qū)懗鲎詈笠恍械臄?shù), 第四個小循環(huán)按順序?qū)懗?第一列的數(shù),再進行第二次大循環(huán),循環(huán)完畢后再進行循環(huán)輸出數(shù)組中的 n*n 個數(shù),該螺旋 方陣就出來了。

附源程序如下: #include "stdio.h" void main() { int i, j, k = 0, m, n,a[10][10]; printf("請輸入方陣行列數(shù) n(n<10): "); scanf("%d",&n); if(n%2==0) m = n / 2; else m = n / 2 + 1; for(i=0;i

k++; a[i][j]=k; } for (j=i+1;j=i;j--) { k++; a[n-i-1][j] =k; } for (j=n-i-2;j>=i+1;j--) { k++; a[j][i]=k; } } for (i=0;i

printf("%5d", a[i][j]); printf(" "); } } 附:

實習總結(jié)與心得體會

經(jīng)過 C 語言實習,讓我加深了對 C 語言的了解,而不只是單單 的在課本中學到的那些理論,平時乏味的課程,通過自己動手親自編 寫,變的生動有趣,而在自己動手的過程中,出現(xiàn)的問題很多,比理 論要難的多,當一個程序?qū)懲暌院螅?jīng)常會有很多錯誤而沒法解決。 不過,通過幾天的實習,逐漸積攢了一些經(jīng)驗,有些錯誤可以很快就 看出來。 這次實習有很大的收獲,讓我對 C 語言有了更深的認識,平時 在課堂上學到的東西可以自己動手編寫,將其轉(zhuǎn)化成一些實用的技 能。如果是一個程序?qū)懲暌惶庡e誤也沒有,會有種成就感,于是興趣 就來了,興趣來了,自然學的東西也就多了,能把理論變成實際的技 能,讓我對 C 語言有了濃厚的興趣和更深層的認識。 C 語言是一個有序的學習, 學了最基本的替換, 然后擴展到循環(huán), 嵌套, 條理很清楚, 不是一個零散的知識, 實際上所有的課程都如此, 不過通過實習我也知道了自己的不足,存在的很多問題。比如自己寫 的寫的小程序出了問題,不會解決了就叫老師幫忙,但是會養(yǎng)成一種 依賴的心理,碰到問題了個想到的是求助而不是自己獨立解決,所以

以后要多多鍛煉自己的信心和增加自己的能力, 爭取做到老師不在身 邊的時候也可以完成一些簡單的程序編寫與錯誤排除。 還有自己的基礎知識不扎實, 遇到的問題, 沒有很好的邏輯思維, 親自編寫一個陌生的程序的時候會有種無法下手的感覺, 找不到突破 口。通過實習,逐漸理清了順序,對于簡單的程序和一些相對比較繁 瑣的嵌套,循環(huán),不在是看著一頭霧水。其實只要理清了思路,把基 礎知識掌握了,然后有條不紊的分析,一步一步理解,C 語言還是很 有意思的課程。 自己親自動手編寫程序讓我增加了對 C 語言程序開發(fā)環(huán)境的了 解,在上課的時候老師就講,學習 C 語言最重要的是學習 C 語言的 邏輯思維,不管以后從事什么行業(yè),學習 C 語言都對自己的職業(yè)很 有幫助,如果是從事編程工程工作的話,就更有幫助了,即使以后的 編程工作可能不用 C 語言,但是擁有扎實的 C 語言基礎是對工作很 有用的。 當初在初步接觸 C 語言的時候,看著一堆“奇形怪狀”的符號, 覺得甚是無聊,通過這次實訓,擺脫了那種似懂非懂的狀態(tài)! 感謝學校安排這次實習和老師的耐心講解,讓我學到了很多知 識,在實習過程中,同學之間的相互探討,老師的循循善誘,最終讓 我們達到了舉一反三的效果,在學知識的同時,也增加了同學老師之 間的感情。希望以后還會有更多類似的實習課程,在有限的大學時間 內(nèi)學到更多的實用技能,為以后的生活和工作打下一個良好的基礎。


【c++課程設計實踐報告】相關文章:

課程設計報告07-23

課程設計報告09-11

經(jīng)典C/C++面試題07-11

C++基礎面試題07-13

華為C/C++筆試題07-11

關于系統(tǒng)的課程設計報告08-05

課程設計報告15篇03-25

課程設計報告(15篇)03-28

華為C++/MFC面試題07-11

課程設計總結(jié)報告范文07-03