c语言程序设计实验报告2,C语言程序设计实验报告2.docx
C語言程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告2.docx
下載提示(請(qǐng)認(rèn)真閱讀)1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
文檔包含非法信息?點(diǎn)此舉報(bào)后獲取現(xiàn)金獎(jiǎng)勵(lì)!
下載文檔到電腦,查找使用更方便
14.9
積分
還剩頁未讀,繼續(xù)閱讀
關(guān)?鍵?詞:C語言程序設(shè)計(jì)
C語言程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告
程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告
設(shè)計(jì)實(shí)驗(yàn)報(bào)告
2.docx
C語言程序設(shè)計(jì)實(shí)驗(yàn)
資源描述:
實(shí)驗(yàn)2 流程控制實(shí)驗(yàn)
2.1 實(shí)驗(yàn)?zāi)康?/p>
(1)掌握復(fù)合語句、if語句、switch語句的使用,熟練掌握for、while、do-while三種基本的循環(huán)控制語句的使用,掌握重復(fù)循環(huán)技術(shù),了解轉(zhuǎn)移語句與標(biāo)號(hào)語句。
(2)熟練運(yùn)用for、while、do-while語句來編寫程序。
(3)練習(xí)轉(zhuǎn)移語句和標(biāo)號(hào)語句的使用。
(4)使用集成開發(fā)環(huán)境中的調(diào)試功能:單步執(zhí)行、設(shè)置斷點(diǎn)、觀察變量值。
2.2 實(shí)驗(yàn)內(nèi)容及要求
2.2.1.源程序改錯(cuò)
下面是計(jì)算s=n! 的源程序,在這個(gè)源程序中存在若干語法和邏輯錯(cuò)誤。要求在計(jì)算機(jī)上對(duì)這個(gè)例子程序進(jìn)行調(diào)試修改,使之能夠正確完成指定任務(wù)。例如,8!=40320。
1 #include 2 int main()
3 { int i,n,s=1;
4 printf("Please enter n:");
5 scanf("%d",n);
6 for(i=1,i<=n,i++)
7 s=s*i;
8 printf("%d! = %d",n,s);
9 }
10 return 0;
解答:
(1) 錯(cuò)誤修改:
1) 輸入字符格式錯(cuò)誤,正確形式為:
scanf(“%d”,&n);
2) return 0;與}的相對(duì)位置錯(cuò)誤,正確形式為:
return0;
}
(2) 錯(cuò)誤修改后的程序:
#include int main()
{ int i,n,s=1;
printf("Please enter n:");
scanf("%d",n);
for(i=1,i<=n,i++)
s=s*i;
printf("%d! = %d",n,s);
return 0;
}
(3) 運(yùn)行結(jié)果:
圖1 2.2.1源程序改錯(cuò)測(cè)試圖
2.2.2.源程序修改替換
(1)修改第1題,分別用while和do-while語句替換for語句。
替換為While語句
1)在判斷while語句前,要先定義i=1,再執(zhí)行while語句。替換后的程序如下所示:
#include int main()
{
int i,n,s=1;
printf("please enter n:");
scanf("%d",&n);
i=1;
while (i<=n)
{
s=s*i;
i++;
}
printf("%d!=%d",n,s);
return 0;
}
2)運(yùn)行截圖及說明
圖2 2.2.2(1)while語句測(cè)試圖
替換為do-while語句
1) 要先定義i=1,再執(zhí)行while語句。替換后的程序如下所示:
#include int main()
{
int i,n,s=1;
printf("please enter n:");
scanf("%d",&n);
i=1;
do{
s=s*i;
i++;
}while(i<=n);
printf("%d!=%d",n,s);
return 0;
}
2) 運(yùn)行截圖及說明
圖3 2.2.2(2)do-while語句測(cè)試圖
(2)修改第1題,輸入改為“整數(shù)S”,輸出改為“滿足n!≥S的最小整數(shù)n”。例如輸入整數(shù)40310,輸出結(jié)果為n=8。
1)解題思路:先定義S,x=1,i=1,輸入S,判斷x<=S,如果為真,則有x=x*i,i=i+1,再返回判斷x<=s,直至值為假,輸出i-1的值。源程序?yàn)?#xff1a;
#include int main()
{
int S;
int x=1,i=1;
printf("請(qǐng)輸入整數(shù)S:");
scanf("%d",&S);
while(x<=S)
{
x=x*i;
i=i+1;
}
printf("滿足n!>=S的最小整數(shù)n是%d",i-1);
return 0;
}
2)運(yùn)行截圖及說明
圖4 2.2.2(3)程序測(cè)試圖
2.2.3.程序設(shè)計(jì)
(1) 假設(shè)工資稅金按以下方法計(jì)算:x < 1000元,不收取稅金;1000 ≤ x < 2000,收取5%的稅金;2000 ≤ x < 3000,收取10%的稅金;3000 ≤ x < 4000,收取15%的稅金;4000 ≤ x < 5000,收取20%的稅金;x>5000,收取25%的稅金。輸入工資金額,輸出應(yīng)收取稅金額度,要求分別用if語句和switch語句來實(shí)現(xiàn)。
解答:
if語句:
1) 解題思路:
1. 定義浮點(diǎn)數(shù)工資金額x,應(yīng)收取稅金額為y。
2. 輸入工資金額x,判斷x屬于哪一個(gè)收入范圍。
3. 如果x<1000,則y=0。
4. 如果x>=1000且x<2000,則y=5%*(x-1000)=0.05*x-50。
5. 如果x>=2000且x<3000,則y=5%*1000+10%*(x-2000)=0.1x-150。
6. 如果x>=3000且x<4000,則y=5%*1000+10%*1000+15%*(x-3000)=0.15x-300。
7. 如果x>=4000且x<5000,則y=5%*1000+10%*1000+15%*1000+20%*(x-4000)=0.2x-500。
8. 如果x>=5000,y=5%*1000+10%*1000+15%*1000+20%*1000+25%*(x-5000)=0.25x-750。
9. 輸出y,結(jié)束。
2) 程序清單
#include int main()
{
float x,y;
printf("請(qǐng)輸入工資金額x:");
scanf("%f",&x);
if(x<1000) y=0;
else if(x>=1000&&x<2000) y=0.05*x-50;
else if(x>=2000&&x<3000) y=0.10*x-150;
else if(x>=3000&&x<4000) y=0.15*x-300;
else if(x>=4000&&x<5000) y=0.20*x-500;
else y=0.25*x-750;
printf("應(yīng)收取稅金額度為%f元",s);
}
3) 測(cè)試
測(cè)試用例
輸入的工資金額x
理論輸出結(jié)果
用例1
500
0
用例2
1500
25
用例3
2500
100
用例4
3500
225
用例5
4500
400
用例6
5500
625
圖5 2.2.3(1)用例1測(cè)試圖
圖6 2.2.3(1)用例2測(cè)試圖
圖7 2.2.3(1)用例3測(cè)試圖
圖8 2.2.3(1)用例3測(cè)試圖
圖9 2.2.3(1)用例4測(cè)試圖
圖10 2.2.3(1)用例5測(cè)試圖
Switch語句:
1)解題思路;
1. 定義浮點(diǎn)數(shù)工資金額x,應(yīng)收取稅金額為y。
2. 輸入工資金額x。
3.計(jì)算x/1000,強(qiáng)制轉(zhuǎn)化數(shù)的類型為int。
4. 當(dāng)結(jié)果為0時(shí),輸出y=0。
5. 當(dāng)結(jié)果為1時(shí),輸出y=0.05*x-50。
6. 當(dāng)結(jié)果為2時(shí),輸出y=0.10*x-150。
7. 當(dāng)結(jié)果為3時(shí),輸出y=0.15*x-300。
8. 當(dāng)結(jié)果為4時(shí),輸出y=0.20*x-500。
9. 當(dāng)結(jié)果為其他值時(shí),輸出y=0.25*x-750。
10.結(jié)束。
2)程序清單
#include int main()
{
float x,y;
printf("請(qǐng)輸入工資金額x:");
scanf("%f",&x);
switch((int) (x/1000))
{
case 0:y=0;printf("應(yīng)收取稅金額度為 %f",y);break;
case 1:y=0.05*x-50;printf("應(yīng)收取稅金額度為 %f",y);break;
case 2:y=0.10*x-150;printf("應(yīng)收取稅金額度為 %f",y);break;
case 3:y=0.15*x-300;printf("應(yīng)收取稅金額度為 %f",y);break;
case 4:y=0.20*x-500;printf("應(yīng)收取稅金額度為 %f",y);break;
default:y=0.25*x-750;printf("應(yīng)收取稅金額度為 %f",y);break;
}
return 0;
}
3)測(cè)試
測(cè)試用例
輸入的工資金額x
理論輸出結(jié)果
用例1
200
0
用例2
1200
10
用例3
2200
70
用例4
3200
180
用例5
4200
340
用例6
5200
550
圖11 2.2.3(1)用例1測(cè)試圖
圖12 2.2.3(1)用例2測(cè)試圖
圖13 2.2.3(1)用例3測(cè)試圖
圖14 2.2.3(1)用例4測(cè)試圖
圖15 2.2.3(1)用例5測(cè)試圖
圖16 2.2.3(1)用例6測(cè)試圖
(2)將輸入的一行字符復(fù)制到輸出,復(fù)制過程中將一個(gè)以上的空格字符用一個(gè)空格代替。
1)解題思路:
1.輸入一行字符。
2.判斷字符是否為空格。
3.如果字符是空格,判斷上一位是否輸出過空格。
4.如果輸出過,不輸出空格。否則,輸出空格。
5.如果字符不是空格,輸出字符。
6.結(jié)束。
2)程序清單
#include int main()
{
int flag=1;
char c;
printf("請(qǐng)輸入一行字符:\n");
while((c=getchar())!='\0')
{
switch(c)
{
case' ':if(flag){putchar(c);flag=0;
}
break;
default:putchar(c);flag=1;}
}
if((c=getchar())=='\0')
{
printf("%c",c);
}
return 0;
}
3)測(cè)試
圖17 2.2.3(2)測(cè)試圖
(3)打印如下楊輝三角形。
1 /*第0行 */
1 1 /*第1行 */
1 2 1 /*第2行 */
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
每個(gè)數(shù)據(jù)值可以由組合計(jì)算(表示第i行第j列位置的值),而的計(jì)算如下:
(i=0,1,2,…)
(j=0,1,2,3,…,i)
本程序中為了打印出金字塔效果,要注意空格的數(shù)目。一位數(shù)之間是3個(gè)空格,兩位數(shù)之間有2個(gè)空格,3位數(shù)之間只有一個(gè)空格,程序編制過程中要注意區(qū)分。
1) 解題思路:
1. 定義楊輝三角行數(shù)為10。
2. 輸出每行最一個(gè)和最后一個(gè)數(shù)字為1。
3. 每行除掉第一個(gè)和最后一個(gè)數(shù)字,在該行第j位的數(shù)字為它的上一行的j-1位與j為之和。
4. 結(jié)束。
2)程序清單
#include#define N 10
int main()
{
printf("楊輝三角行圖形如下:\n\n");
int a[10][10],i,j;
for(i=0;i=i;j--)
printf(" ");
for(j=0;j<=i;j++)
{
if(i==j||j==0)
a[i][j]=1;
else
a[i][j]=a[i-1][j]+a[i-1][j-1];
printf("%3d ",a[i][j]);
}
printf("\n");
}
return 0;
}
3)測(cè)試
圖18 2.2.3(3)程序測(cè)試圖
(4)編寫一個(gè)程序,將用戶輸入的任意正整數(shù)逆轉(zhuǎn),例如,輸入1234,輸出4321。
1)解題思路:
1.輸入正整數(shù)x。
2.x除以10取余,取出個(gè)位數(shù)字。
3.去掉個(gè)位數(shù)字,再除以10取余,取出十位數(shù)字。
4.再去掉個(gè)位數(shù)字,再除以10取余,取出百位數(shù)字。
5.直到取出最高位時(shí)x/10=0。
6.結(jié)束
2)程序清單
#include int main(void)
{
int x;
printf("請(qǐng)輸入正整數(shù)x:\n");
scanf("%d",&x);
do
putchar(x%10+'0');
while((x/=10)!=0);
return 0;
}
3)測(cè)試
圖19 2.2.3(4)程序測(cè)試圖
2.2.4. 選做題
編寫一個(gè)程序,用牛頓迭代法求方程滿足精度e=10-6的一個(gè)近似根,并在屏幕上輸出所求近似根。
牛頓迭代法:求方程近似根的迭代公式為,其中是函數(shù)f(x)的導(dǎo)函數(shù)。牛頓迭代法首先任意設(shè)定的一個(gè)實(shí)數(shù)來作為近似根的迭代初值x0,然后用迭代公式計(jì)算下一個(gè)近似根x1。如此繼續(xù)迭代計(jì)算x2, x3, …, xn, 直到,此時(shí)值xn即為所求的近似根。
1) 解題思路:
1. 輸入迭代初值x。
2. 計(jì)算增量d=-((((3*x-4)*x)-5)*x+13)/((9*x-8)*x-5)。
3. 計(jì)算下一個(gè)x,x=x+d。
4. 判斷d,如果|d|>e,繼續(xù)第二步。
5. 如果|d|#include#define EPS 1e-6
Int main()
{
double x,d;
printf(“請(qǐng)輸入迭代初值x:”);
scanf(“%lf”,&x);
do
d=-((((3*x-4)*x)-5)*x+13)/((9*x-8)*x-5);
x=x+d;
while(fabs(d)>EPS);
printf(“所求近似跟為%lf”,x);
return 0;
}
3)測(cè)試
圖20 2.2.4程序測(cè)試圖
3.3 實(shí)驗(yàn)小結(jié)
在實(shí)驗(yàn)中最重要的是如何設(shè)計(jì)算法去解決問題,看到題目,根本不知道如何去解決問題,更不要說設(shè)計(jì)算法了。學(xué)習(xí)時(shí)不仔細(xì),函數(shù)調(diào)用的形式不熟練,需要查書,浪費(fèi)時(shí)間。而且當(dāng)程序設(shè)計(jì)好了,絕不是已經(jīng)完成任務(wù)了,要仔細(xì)檢查審核,看看程序是否有錯(cuò)誤,如果有錯(cuò)誤,就要仔細(xì)地分析。錯(cuò)誤初步解決后,還要經(jīng)過多次調(diào)試,要驗(yàn)證多種輸入值下,輸出的結(jié)果是否都是正確的。通過實(shí)驗(yàn),我找到了自己的不足,同樣也增加了對(duì)書本的理解。在今后的學(xué)習(xí)中我要改正自己在學(xué)習(xí)中的不足之處。
展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
?
人人文庫(kù)網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書面授權(quán),請(qǐng)勿作他用。
關(guān)于本文
本文標(biāo)題:C語言程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告2.docx
鏈接地址:https://www.renrendoc.com/p-17914196.html
總結(jié)
以上是生活随笔為你收集整理的c语言程序设计实验报告2,C语言程序设计实验报告2.docx的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华师大c语言作业答案,2018华东师范大
- 下一篇: c语言计算机二级资料,2016年计算机二