第一篇:2009-2010-2《C語言程序設(shè)計(jì)》實(shí)驗(yàn)報(bào)告
武漢大學(xué)東湖分校創(chuàng)建時(shí)間:2010-5-2 21:21:00
《C語言程序設(shè)計(jì)》實(shí)驗(yàn)報(bào)告
年級(jí):2009級(jí)(必修)
學(xué)號(hào):姓名:專業(yè):
實(shí)驗(yàn)題目:
輸入一個(gè)班N個(gè)學(xué)生(N為符號(hào)常量,自定人數(shù))的學(xué)號(hào)和每個(gè)學(xué)生考試三門功課(數(shù)學(xué)、英語、計(jì)算機(jī)基礎(chǔ))的成績。編程計(jì)算出每個(gè)學(xué)生的總分和平均分,并按學(xué)生成績優(yōu)劣排序,最后打印一張按高分到低分名次排序的成績單。要求:
1)排序用一個(gè)函數(shù)實(shí)現(xiàn)。
2)打印的成績單表項(xiàng)包括:序號(hào),學(xué)號(hào)、數(shù)學(xué)、英語、計(jì)算機(jī)、總分、平均分。
3)按實(shí)驗(yàn)報(bào)告電子模板格式填寫實(shí)驗(yàn)內(nèi)容。
可用多個(gè)函數(shù)或多個(gè)源文件實(shí)現(xiàn)
可以用數(shù)組法、指針法、結(jié)構(gòu)體法編寫程序。
源程序清單:
主要標(biāo)識(shí)符說明:(說明變量、函數(shù)、指針、結(jié)構(gòu)體等)
實(shí)驗(yàn)結(jié)果貼圖:
實(shí)驗(yàn)環(huán)境:
intel Pentium 4 計(jì)算機(jī),windowsXP操作系統(tǒng),Microsoft Visual C++ 6編譯環(huán)境。
教師評(píng)語:
成績:教師簽名:簽名日期:年月日
第二篇:《C語言程序設(shè)計(jì)》實(shí)驗(yàn)報(bào)告
指導(dǎo)教師學(xué)院專業(yè)班級(jí)學(xué)號(hào)姓名實(shí)驗(yàn)室
實(shí)驗(yàn)題目:
實(shí)驗(yàn)要求:
實(shí)驗(yàn)內(nèi)容及步驟:
運(yùn)行結(jié)果
心得體會(huì):
第三篇:C語言程序設(shè)計(jì) 實(shí)驗(yàn)報(bào)告2.3
C語言程序設(shè)計(jì)
實(shí)驗(yàn)報(bào)告
專業(yè)
班級(jí)
日期
11月26日
成績
實(shí)驗(yàn)組別
第 2(2.3)次實(shí)驗(yàn)
指導(dǎo)教師
李開
學(xué)生姓名
學(xué)號(hào)
同組人姓名
實(shí)驗(yàn)名稱 流程控制實(shí)驗(yàn)
一、實(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)、觀察變量值。
二、實(shí)驗(yàn)任務(wù)
3.2 實(shí)驗(yàn)內(nèi)容及要求 1.源程序改錯(cuò)
下面是計(jì)算s=n!的源程序,在這個(gè)源程序中存在若干語法和邏輯錯(cuò)誤。要求在計(jì)算機(jī)上對(duì)這個(gè)例子程序進(jìn)行調(diào)試修改,使之能夠正確完成指定任務(wù)。例如,8!=40320。#include
2.源程序修改替換
(1)修改第1題,分別用while和do-while語句替換for語句。
(2)修改第1題,輸入改為“整數(shù)S”,輸出改為“滿足n!≥S的最小整數(shù)n”。例如輸入整數(shù)40310,輸出結(jié)果為n=8。
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)。
(2)將輸入的一行字符復(fù)制到輸出,復(fù)制過程中將一個(gè)以上的空格字符用一個(gè)空格代替。
(3)打印如下楊輝三角形。
/*第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
jjCCii每個(gè)數(shù)據(jù)值可以由組合計(jì)算(表示第i行第j列位置的值),而的計(jì)算如下:
Ci0?(i=0,1,2,?)Cij?Cij?1*(i-j?1)/ j(j=0,1,2,3,?,i)本程序中為了打印出金字塔效果,要注意空格的數(shù)目。一位數(shù)之間是3個(gè)空格,兩位數(shù)之間有2個(gè)空格,3位數(shù)之間只有一個(gè)空格,程序編制過程中要注意區(qū)分。
(4)編寫一個(gè)程序,將用戶輸入的任意正整數(shù)逆轉(zhuǎn),例如,輸入1234,輸出4321。
4.選做題
32f(x)?3x?4x?5x?13?0滿足精度e=10-6 編寫一個(gè)程序,用牛頓迭代法求方程的一個(gè)近似根,并在屏幕上輸出所求近似根。
?x0?a?x?xk?f(xk)/f'(xk),其中f'(x)是牛頓迭代法:求方程近似根的迭代公式為?k?1函數(shù)f(x)的導(dǎo)函數(shù)。牛頓迭代法首先任意設(shè)定的一個(gè)實(shí)數(shù)a來作為近似根的迭代初值x0,然后用迭代公式計(jì)算下一個(gè)近似根x1。如此繼續(xù)迭代計(jì)算x2, x3, ?, xn, 直到xn?xn?1?精度e
,此時(shí)值xn即為所求的近似根。
2.3:
1.源程序改錯(cuò):(源程序)
#include
(修改后程序)#include
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;}
2.源程序修改替換
(1)修改第1題,分別用while和do-while語句替換for語句。(while)
#include
(do-while)#include
(2)修改第1題,輸入改為“整數(shù)S”,輸出改為“滿足n!≥S的最小整數(shù)n”。例如輸入整數(shù)40310,輸出結(jié)果為n=8。
#include = %d”,i-1,s);return 0;}
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)。
(switch語句)#include
printf(“輸入你的工資 ”);
int t;
float x;
scanf(“%f”,&x);
t =(int)(x/1000.0);
switch(t){
case 0:
printf(“no tax!n”);
break;
case 1:
printf(“%fn”,0.05*x);
break;
case 2:
printf(“%fn”,0.10*x);
break;
case 3:
printf(“%fn”,0.15*x);
break;
case 4:
printf(“%fn”,0.20*x);
break;
case 5:
printf(“%fn”,0.25*x);
break;
default:
printf(“%fn”,0.25*x);
break;
}
return 0;}
(if語句)
#include “stdio.h” int main(int argc, char *argv[]){
float x, tax;
scanf(“%f”, &x);
if(x<0)
{
printf(“Wrong input.n”);
return 1;
}
if(x<1000)
{
tax = 0.00;
}
else if(x>=1000&&x<2000)
{
tax = 0.05 * x;
}
else if(x>=2000&&x<3000)
{
tax = 0.10 * x;
}
else if(x>=3000&&x<4000)
{
tax = 0.15 * x;
}
else if(x>=4000&&x<5000)
{
tax = 0.20 * x;
}
else
{
tax = 0.25 * x;
} printf(“Tax of salary %.2f YUAN is %.2f YUAN.n”, x, tax);}
(2)將輸入的一行字符復(fù)制到輸出,復(fù)制過程中將一個(gè)以上的空格字符用一個(gè)空格代替。
#include
if(c==' '){
if(flag==0){
putchar(c);
flag=1;
}
}
else{
putchar(c);
flag=0;
}
}
return 0;}
(3)打印如下楊輝三角形。
/*第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
jjCCii每個(gè)數(shù)據(jù)值可以由組合計(jì)算(表示第i行第j列位置的值),而的計(jì)算如下:
Ci0?1
(i=0,1,2,?)Cij?Cij?1*(i-j?1)/ j(j=0,1,2,3,?,i)本程序中為了打印出金字塔效果,要注意空格的數(shù)目。一位數(shù)之間是3個(gè)空格,兩位數(shù)之間有2個(gè)空格,3位數(shù)之間只有一個(gè)空格,程序編制過程中要注意區(qū)分。
#include
(4)編寫一個(gè)程序,將用戶輸入的任意正整數(shù)逆轉(zhuǎn),例如,輸入1234,輸出4321。#include
4.選做題
-6 編寫一個(gè)程序,用牛頓迭代法求方程f(x)?3x?4x?5x?13?0滿足精度e=10的一個(gè)近似根,并在屏幕上輸出所求近似根。
32?x0?a?x?xk?f(xk)/f'(xk),其中f'(x)是牛頓迭代法:求方程近似根的迭代公式為?k?1函數(shù)f(x)的導(dǎo)函數(shù)。牛頓迭代法首先任意設(shè)定的一個(gè)實(shí)數(shù)a來作為近似根的迭代初值x0,然后用迭代公式計(jì)算下一個(gè)近似根x1。如此繼續(xù)迭代計(jì)算x2, x3, ?, xn, 直到xn?xn?1?精度e,此時(shí)值xn即為所求的近似根。
#include
double f(double x){ return(3*x*x*x-4*x*x-5*x+13);} double f_(double x){ return(9*x*x-8*x-5);} double root(double m){ double n;n=m-f(m)/f_(m);if(fabs(m-n)<=0.000001){ return n;} else{ return root(n);} }
四、實(shí)驗(yàn)體會(huì)
了解更多有關(guān)C語言的語法知識(shí)和循環(huán)結(jié)構(gòu)以及熟練了調(diào)試過程。
第四篇:C語言程序設(shè)計(jì)—函數(shù)—實(shí)驗(yàn)報(bào)告
實(shí) 驗(yàn) 報(bào) 告
專業(yè)
軟 件 工 程
班級(jí)
X
班
學(xué)號(hào)_ XXXXXXXXXXX_
姓名
實(shí)驗(yàn)日期:201X年X月X日
報(bào)告退發(fā)(訂正、重做)
課程
C程序設(shè)計(jì)實(shí)驗(yàn)
實(shí)驗(yàn)名稱
函
數(shù)
一、實(shí)驗(yàn)?zāi)康?/p>
① 熟練掌握C程序中函數(shù)的定義; ② 掌握函數(shù)的調(diào)用,函數(shù)參數(shù)的傳遞; ③ 熟練掌握函數(shù)的嵌套調(diào)用和遞歸調(diào)用;
二、實(shí)驗(yàn)環(huán)境(描述實(shí)驗(yàn)的軟件、硬件環(huán)境)
① 軟件環(huán)境:windows xp/win7等操作系統(tǒng),Microsoft Visual C++ 6.0編譯器; ② 硬件環(huán)境:PC機(jī)一臺(tái)
三、實(shí)驗(yàn)內(nèi)容、步驟和結(jié)果分析
題目一:編寫一個(gè)用來判斷質(zhì)數(shù)(素?cái)?shù))的函數(shù)。
要求:
(1)在main函數(shù)中調(diào)用該函數(shù)對(duì)輸入的數(shù)值進(jìn)行判斷,并輸出判斷結(jié)果;(2)當(dāng)輸入數(shù)值<=1時(shí),停止輸入和判斷。
#include
} /*=======判斷質(zhì)數(shù)(素?cái)?shù))的函數(shù)=======*/ int main(){
printf(“n提示:輸入一個(gè)數(shù)字來判斷是否是質(zhì)數(shù)(素?cái)?shù)),當(dāng)輸入數(shù)值<=1時(shí),停止輸入和判斷。nn”);for(int num=2,temp;num>1;){ printf(“Please enter a number:”);for(int i=2;i<=sqrt(n);i++)//一個(gè)數(shù)n如果是合數(shù),那么它的所有的因子不超過n的開方 {
} return 1;if(n%i==0)return 0;else continue;
}
} scanf(“%d”,&num);if(num<=1)break;//當(dāng)輸入數(shù)值<=1時(shí),停止輸入和判斷 temp=judgePrime(num);if(temp==0)printf(“%d is not a prime numner!nn”,num);else printf(“%d is a prime numner!nn”,num);return 0;
題目二:使用習(xí)題1中所編寫的判斷質(zhì)數(shù)的函數(shù)驗(yàn)證哥德巴赫(Goldbach)的1+1猜想-----任何一個(gè)>=6的偶數(shù)都可以表示成兩個(gè)素?cái)?shù)之和
要求:
① 屏幕提示用戶一個(gè)>=6的偶數(shù);
② 輸出這個(gè)偶數(shù)等于2個(gè)素?cái)?shù)之和的表達(dá)式; ③ 當(dāng)輸入數(shù)據(jù)<6或者不是偶數(shù)時(shí),停止輸入和驗(yàn)證。
#include
for(int i=2;i<=sqrt(n);i++)//一個(gè)數(shù)n如果是合數(shù),那么它的所有的因子不超過n的開方 {
if(n%i==0)return 0;else continue;
} } return 1;//true-->1,false-->0 /*=======驗(yàn)證哥德巴赫猜想的函數(shù)(調(diào)用judgePrime)=======*/ int proveGoldbach(int m){
} int main(){
}
printf(“n提示:輸入一個(gè)偶數(shù)來驗(yàn)證哥德巴赫猜想,當(dāng)輸入數(shù)值<6時(shí),停止輸入和判斷。nn”);for(int num=6;num>=6;){
} int temp;printf(“Please enter a number:”);scanf(“%d”,&num);temp=proveGoldbach(num);if(temp==0)//當(dāng)輸入小于6或者不是偶數(shù)時(shí)結(jié)束 return 0;printf(“==================================”);if(m<6||m%2!=0){
} if(judgePrime(j)==1&&judgePrime(m-j)==1)//判斷兩數(shù)是否都等于質(zhì)數(shù) { } printf(“t%d = %d + %dn”,m,j,m-j);return 0;//判斷是否大于等于6或者不是偶數(shù) for(int j=2;j<(m/2);j++)
題目三:編寫一個(gè)求階乘的函數(shù),接著調(diào)用該函數(shù)實(shí)現(xiàn)組合的求解要求:
① 提示用戶輸入n和m的數(shù)值; ② 輸出的 結(jié)果
#include
} /*=======組合函數(shù)=======*/ int combine(int m,int n){ } /*=======main函數(shù)=======*/ void main(){
int m,n;int res;printf(“n提示:這是求組合求和公式的函數(shù),輸入兩個(gè)整數(shù)(分別為上標(biāo)和下標(biāo))nn”);scanf(“%d%d”,&m,&n);if(m>n)//判斷上標(biāo)大于小標(biāo)重新輸入 goto loop;return fac(n)/(fac(n-m)*fac(m));int f;if(n<0)printf(“n<0,data error!”);f=1;else if(n==0||n==1)else f=fac(n-1)*n;return f;loop:printf(“Please enter two numbers:”);
}res=combine(m,n);printf(“tResult is %dn”,res);
題目四:編寫一個(gè)求矩陣中最大元素以及最小元素的函數(shù)selectMaxAndMin(),在main函數(shù)中調(diào)用該函數(shù)
要求:
最大值和最小值的輸出操作,可以放在selectMaxAndMin()函數(shù)中
#include
/*=======在矩陣中選擇最大最小數(shù)的函數(shù)=======*/ void selectMaxAndMin(int arry[ROW][COLUMN])//用指針更方便 {
int tempMax,tempMin;if(arry[0][0]>arry[0][1])//賦初始值 {
} else {
} for(int i=0;i } } for(int j=0;j } if(arry[i][j]>tempMax){ } if(arry[i][j] } int mat[ROW][COLUMN];printf(“Please enter a %d X %d matrix:n”,ROW,COLUMN);for(int i=0;i } selectMaxAndMin(mat);return 0;for(int j=0;j 題目五:編寫一個(gè)編碼原文的函數(shù),對(duì)于給定的內(nèi)容,按照敵方的規(guī)律對(duì)其進(jìn)行編碼 要求: 某日,我軍某部截獲了一份敵方電報(bào),經(jīng)過仔細(xì)分析后發(fā)現(xiàn):該電文中所有的字母字符都是經(jīng)過某種運(yùn)算后得到的,然那些非字母字符則沒有經(jīng)過任何處理。例如,原文中的字符A對(duì)應(yīng)電文中的字符E,原文中的字符b對(duì)應(yīng)電文中的字符f,原文中的字符W對(duì)應(yīng)電文中的字符A,原文中的字符!在電文中仍為! #include //定義大小 /*=======密碼翻譯的函數(shù)=======*/ char trans(char a){ } //主函數(shù) int main(void){ printf(“請(qǐng)輸入原文:nnn”);char str[SIZE];gets(str);printf(“nnn”);if((a>='a'&&a<='v')||(a>='A'&&a<='V')){ } else { } if(a>='w'||a>='W'){ } else { return a;} return a-22;return a+4; }printf(“正在破解……nnn”);printf(“破譯的原文是:”);for(int i=0;i<20;i++){ } printf(“n”);str[i]=trans(str[i]);if(str[i]=='