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