《金陵科技學(xué)院C語言實(shí)驗(yàn)冊(cè).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《金陵科技學(xué)院C語言實(shí)驗(yàn)冊(cè).doc(52頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
學(xué) 生 實(shí) 驗(yàn) 報(bào) 告 冊(cè)
(理工類)
課程名稱: C語言程序設(shè)計(jì)實(shí)驗(yàn) 專業(yè)班級(jí):
學(xué)生學(xué)號(hào): 學(xué)生姓名:
所屬院部: 指導(dǎo)教師:
20 ——20 學(xué)年 第 學(xué)期
金陵科技學(xué)院教務(wù)處制
實(shí) 驗(yàn) 報(bào) 告 書 寫 要 求
實(shí) 驗(yàn) 報(bào) 告 上 交 電 子 稿 ,標(biāo) 題 采 用 四 號(hào) 黑 體 ,正 文 采 用 小 四 號(hào) 宋 體 ,單 倍 行 距 。
實(shí) 驗(yàn) 報(bào) 告書 寫 說 明
實(shí) 驗(yàn) 報(bào) 告 中 實(shí) 驗(yàn) 目 的 和 要 求 、實(shí) 驗(yàn) 儀 器 和 設(shè) 備 、實(shí) 驗(yàn) 內(nèi) 容 與 過 程 、 實(shí) 驗(yàn) 結(jié) 果 與 分 析 這 四 項(xiàng) 內(nèi) 容 為 必 需 項(xiàng) 。教 師 可 根 據(jù) 學(xué) 科 特 點(diǎn) 和 實(shí) 驗(yàn) 具 體 要 求 增 加 項(xiàng) 目 。
填 寫 注 意 事 項(xiàng)
(1)細(xì) 致 觀 察,及 時(shí) 、準(zhǔn) 確 、如 實(shí) 記 錄 。
(2)準(zhǔn) 確 說 明 , 層 次 清 晰 。
(3)盡 量 采 用 專 用 術(shù) 語 來 說 明 事 物 ?!?
(4)外 文 、 符 號(hào) 、公 式 要 準(zhǔn) 確 ,應(yīng) 使 用 統(tǒng) 一規(guī) 定 的 名 詞 和 符號(hào) 。
(5)應(yīng) 獨(dú) 立 完 成 實(shí) 驗(yàn) 報(bào) 告 的 書 寫 , 嚴(yán) 禁 抄 襲 、復(fù) 印 , 一 經(jīng) 發(fā) 現(xiàn) , 以 零 分 論 處。
實(shí) 驗(yàn) 報(bào) 告 批 改 說 明
實(shí) 驗(yàn) 報(bào) 告 的 批 改 要 及 時(shí) 、認(rèn) 真 、仔 細(xì) ,一 律 用 紅 色 筆 批 改 。實(shí) 驗(yàn)報(bào) 告 的 批 改 成 績(jī) 采 用 五 級(jí) 記 分 制 或 百 分制 , 按 《 金 陵 科 技 學(xué) 院 課 堂 教 學(xué) 實(shí) 施 細(xì) 則 》 中 作 業(yè) 批 閱 成績(jī) 評(píng) 定 要 求 執(zhí) 行 。
實(shí)驗(yàn)項(xiàng)目名稱: 初級(jí)程序設(shè)計(jì) 實(shí)驗(yàn)學(xué)時(shí): 6
同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn):
實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī):
批改教師: 批改時(shí)間:
實(shí)驗(yàn)1 初級(jí)程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康暮鸵?
(1)熟悉Visual C++集成環(huán)境,進(jìn)行編輯、保存、編譯、連接及運(yùn)行,并能進(jìn)行簡(jiǎn)單程序調(diào)試;
(2)掌握C語言中各種運(yùn)算符的使用;
(3)掌握C語言中各種數(shù)據(jù)類型的區(qū)別與應(yīng)用;
(4)熟練掌握C語言中變量的定義、賦值和使用,表達(dá)式語句、輸入/輸出語句的使用;
(5)掌握C語言中輸入/輸出函數(shù)的使用;
(6)掌握C語言中控制語句的使用,含if-else、for、while、do-while語句的使用。
二、實(shí)驗(yàn)儀器和設(shè)備
奔騰以上計(jì)算機(jī),裝有windows XP以上版本操作系統(tǒng)和Visual C++ 6.0軟件。
三、實(shí)驗(yàn)內(nèi)容與過程
1、程序調(diào)試
(1)#include
main()
{ ints,t,p,sum;
scanf(“%d%d%d”,&s,&t,&p);
sum=s+t+p;
printf(“sum=%d\n”,sum);
}
(2)#include
main()
{ int k=3;
if(k=3) printf(“***”);
elseprintf(“###”);
}
(3)#include
main()
{int k=0;
do
{ printf(“k=%d\n”,k);
}while(k++>0);
}
2、程序改錯(cuò)
下面是判斷一個(gè)學(xué)生考試成績(jī)及格與否的程序(成績(jī)A,或B,或C者為及格;成績(jī)?yōu)椋恼卟患案瘢?,調(diào)試并改進(jìn)如下程序使其能滿足上述輸出的需要。
#include
main()
{ char mark=“A”;
switch(mark)
{ case “A”:
case “B”:
case “C”: printf(“>=60\n”);
case “D”: printf(“<60\n”);
default: printf(“Error\n”);
}
}
3、程序設(shè)計(jì)
(1)功能:編程實(shí)現(xiàn)使實(shí)型正數(shù)保留2位小數(shù),并對(duì)第三位進(jìn)行四舍五入。
例如:實(shí)型數(shù)為 1234.567,則函數(shù)返回 1234.570000;
實(shí)型數(shù)為 1234.564,則函數(shù)返回 1234.560000。
(2)功能:從鍵盤輸入一個(gè)大寫字母,要求改用小寫字母輸出。
(3)功能:編寫函數(shù)計(jì)算下列分段函數(shù)的值:
(4)功能:判斷整數(shù)x是否是同構(gòu)數(shù)。若是同構(gòu)數(shù),函數(shù)返回1;否則返回0。x的值由主函數(shù)從鍵盤讀入,要求不大于100。
說明:所謂“同構(gòu)數(shù)”是指這樣的數(shù),這個(gè)數(shù)出現(xiàn)在它的平方數(shù)的右邊。
例如:輸入整數(shù)5,5的平方數(shù)是25,5是25中右側(cè)的數(shù),所以5是同構(gòu)數(shù)。
(5)功能:功能:計(jì)算正整數(shù)n的所有因子(1和n除外)之和并輸出。n的值由鍵盤輸入。
例如:n=120時(shí),輸出239。
(6)功能:計(jì)算并輸出下列多項(xiàng)式的值 S = 1 + 1/1! + 1/2! + 1/3! + ... + 1/n!
例如:鍵盤給n輸入15,則輸出為:s=2.718282。
注意:要求n的值大于1但不大于100。
(7)功能:從低位開始取出長整型變量s奇數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。
例如:當(dāng)s中的數(shù)為:7654321時(shí),t中的數(shù)為:7531。
4、思考題
(1)功能:判斷一個(gè)三位數(shù)是否"水仙花數(shù)"。在main函數(shù)中從鍵盤輸入一個(gè)三位數(shù),并輸出判斷結(jié)果。
說明:所謂"水仙花數(shù)"是指一3位數(shù),其各位數(shù)字立方和等于該數(shù)本身。
例如:153是一個(gè)水仙花數(shù),因?yàn)?53=1+125+27。
(2)功能:計(jì)算并輸出3到n之間所有素?cái)?shù)的平方根之和。
例如:鍵盤給n輸入100后,輸出為:sum=148.874270。
(3)功能:輸出Fibonacci數(shù)列中大于s的最小的一個(gè)數(shù)。其中Fibonacci數(shù)列F(n)的定義為:
F(0)=0,F(xiàn)(1)=1 F(n)=F(n-1)+F(n-2)
例如:鍵盤輸入s=1000時(shí),輸出1597。
程序清單及流程圖:
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
程序調(diào)試1結(jié)果如下
程序調(diào)試2結(jié)果如下
程序調(diào)試3結(jié)果如下
程序改錯(cuò)題正確程序如下:
#include
main()
{ char mark=A;
switch(mark)
{ case A: printf(">=60\n"); break;
case B: printf(">=60\n"); break;
case C: printf(">=60\n"); break;
case D: printf("<60\n"); break;
default: printf("Error\n"); break;
}
}
程序設(shè)計(jì)
(1):
#include
main()
{
float n;
scanf("%f",&n);
printf("%.2f0000\n",n);
}
(2)
#include
main()
{ char n;
printf("Input an 大寫字母\n");
scanf("%c",&n);
n=n+32;
printf("%c\n",n);
}
(3)
#include
main()
{
intx,y;
printf("Plese Input an X\n");
scanf("%d",&x);
if(x<0&&x!=(-3))
y=x*x+x+6;
if(x>=0&&x<10&&x!=2&&x!=3)
y=x*x-5*x+6;
else y=x*x-x+1;
printf("%d\n",y);
}
(4)
#include
main()
{
int x;
printf("Plese Input an X\n");
scanf("%d",&x);
if(x>100||x<=0)
printf("Eorr");
if(x==(x*x%10)||x==x*x%100)
printf("1\n");
else
printf("0\n");
}
(5)
#include
main()
{
intx,i,s;
s=0;
printf("Plese Input an X\n");
scanf("%d",&x);
for(i=2;i
main()
{
intx,i,j,k;
float s;
s=1.0;
printf("Plese Input an X\n");
scanf("%d",&x);
if(x<=0)
printf("Eorr\n");
for(i=1;i<=x;i++)
{
k=1;
for(j=1;j<=i;j++)
k*=j;
s=s+1.0/k;
}
printf("s=%f\n",s);
}
(7)
#include
main()
{
ints,t=0,i=1,a=1;
scanf("%d",&s);
while(s!=0)
{
a=s%10;
s=s/100;
a=a*i;
i=i*10;
t=t+a;
}
printf("%d\n",t);
}
思考題(1)
#include
main()
{
ints,n,t=0,a=1;
scanf("%d",&n);
s=n;
while(s!=0)
{
a=s%10;
s=s/10;
a=a*a*a;
t=t+a;
}
if(n==t)
printf("n=YES\n");
else printf("n=NO\n");
}
思考題(2)
#include
#include
main()
{
intn,i,j;
float s=0.0;
scanf("%d",&n);
for(i=3;i<=n;i++)
{
for(j=2;j=i-1)
s=s+sqrt(i);
}
printf("%f\n",s);
}
思考題(3)
#include
main()
{
int i,n,f0=0,f1=1,f2=1;
scanf("%d",&n);
for(i=1;;i++)
{
f0=f1;
f1=f2;
f2=f0+f1;
if(f2>=n)
break;
}
printf("%d\n",f2);
}
五、實(shí)驗(yàn)體會(huì)(遇到問題及解決辦法,編程后的心得體會(huì))
在這次實(shí)訓(xùn)中,我對(duì)C語言有了一個(gè)更深的認(rèn)識(shí)了解,也使之前學(xué)的知識(shí)得到鞏固,還嘗試了運(yùn)行編程,每次運(yùn)行程序成功,讓我對(duì)下面的項(xiàng)目充滿了信心通過自己的努力最終把最初的理論知識(shí)轉(zhuǎn)化成基本技能,這次的實(shí)訓(xùn),是我對(duì)C語言的學(xué)習(xí)產(chǎn)生了濃厚的興趣。
實(shí)驗(yàn)項(xiàng)目名稱: 中級(jí)程序設(shè)計(jì) 實(shí)驗(yàn)學(xué)時(shí): 8
同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn):
實(shí)驗(yàn)日期: 實(shí)驗(yàn)成績(jī):
批改教師: 批改時(shí)間:
實(shí)驗(yàn)2中級(jí)程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康暮鸵?
(1)掌握函數(shù)的定義、調(diào)用及返回、聲明的應(yīng)用;
(2)熟練掌握一維數(shù)組的定義、初始化及使用;
(3)掌握二維數(shù)組的定義、初始化及應(yīng)用;
(4)熟練掌握向函數(shù)傳遞一維數(shù)組的方法和應(yīng)用;
(5)掌握向函數(shù)傳遞一維數(shù)組的方法和應(yīng)用。
二、實(shí)驗(yàn)儀器和設(shè)備
奔騰以上計(jì)算機(jī),裝有windows XP以上版本操作系統(tǒng)和Visual C++ 6.0軟件。
三、實(shí)驗(yàn)內(nèi)容與過程
1、程序調(diào)試
#include
intfunc(inta,int b)
{return(a+b); }
main()
{int x=3,y=8,z=4,r;
r=func(func(x,y),z);
printf(“r=%d\n”,r);
}
2、程序改錯(cuò)
要求:1、改錯(cuò)時(shí),只允許修改現(xiàn)有語句中的一部分內(nèi)容,不允許添加和刪除語句。
2、提示行下一行為錯(cuò)誤行。
(1) 功能:判斷m是否為素?cái)?shù),若是返回1,否則返回0。
#include
/**********FOUND**********/
void fun( int n)
{
inti,k=1;
if(m<=1) k=0;
/**********FOUND**********/
for(i=1;i
#define N 11
main()
{ inti,number,a[N]={1,2,4,6,8,9,12,15,149,156};
printf("please enter an integer to insert in the array:\n");
/**********FOUND**********/
scanf("%d",&number)
printf("The original array:\n");
for(i=0;i=0;i--)
if(number<=a[i])
/**********FOUND**********/
a[i]=a[i-1];
else
{
a[i+1]=number;
/**********FOUND**********/
exit;
}
if(numbermax)
{ max=a[i][j]; s=i; t=j; }
/**********FOUND**********/
printf("max=a[%d][%d]=%d\n",i,j,max);
}
3、程序設(shè)計(jì)
說明,所有題目均需添加main(),在main()中調(diào)用子函數(shù)并設(shè)計(jì)完整的輸入輸出才可調(diào)試通過。
(1)功能:編寫函數(shù)float fun(int n),求一分?jǐn)?shù)序列2/1,3/2,5/3,8/5,13/8,21/13…的前n項(xiàng)之和。
說明:每一分?jǐn)?shù)的分母是前兩項(xiàng)的分母之和,每一分?jǐn)?shù)的分子是前兩項(xiàng)的分子之和。
例如:求前20項(xiàng)之和的值為32.660259。
(2)完成子函數(shù)int fun(int n),找出一個(gè)大于給定整數(shù)且緊隨這個(gè)整數(shù)的素?cái)?shù),并作為函數(shù)值返回。
(3)功能:編寫函數(shù)void fun(intn,int a[]),按順序?qū)⒁粋€(gè)4位的正整數(shù)每一位上的數(shù)字存到一維數(shù)組,然后在主函數(shù)輸出。例如輸入5678,則輸出結(jié)果為 5 6 7 8。
(4)功能:編寫函數(shù)void fun(intarr[],int n)將一個(gè)數(shù)組中的值按逆序存放,并在main()函數(shù)中輸出。
例如:原來存順序?yàn)?,6,5,4,1。要求改為:1,4,5,6,8。
(5)功能:程序定義了NN的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫函數(shù)fun(int a[][N],int n),使數(shù)組a左下三角元素中的值乘以n。
例如:若n的值為3,a數(shù)組中的值為
| 1 9 7 | | 3 9 7 |
a = | 2 3 8 | 則返回主程序后a數(shù)組中的值應(yīng)為 | 6 9 8 |
| 4 5 6 | | 12 15 18|
(6)功能:編寫函數(shù)void fun(int array[3][3]),實(shí)現(xiàn)矩陣(3行3列)的轉(zhuǎn)置(即行列互換)。
例如:輸入下面的矩陣:
100 200 300
400 500 600
700 800 900
程序輸出:
100 400 700
200 500 800
300 600 900
4、討論、思考題
(1)功能:編寫函數(shù)float fun(),利用以簡(jiǎn)單迭代方法Xn+1=cos(Xn)求方程:cos(x)-x=0的一個(gè)實(shí)根。迭代步驟如下:
1)取x1初值為0.0;
2)x0=x1,把x1的值賦給x0;
3)x1=cos(x0),求出一個(gè)新的x1;
4)若x0-x1的絕對(duì)值小于0.000001,執(zhí)行步驟(5),否則執(zhí)行步驟(2);
5)所求x1就是方程cos(x)-x=0的一個(gè)實(shí)根,作為函數(shù)值返回。
輸出:程序?qū)⑤敵鼋Y(jié)果Root=0.739085。
(2)功能:編寫float fun(float array[],int n),統(tǒng)計(jì)出若干個(gè)學(xué)生的平均成績(jī),最高分以及得最高分的人數(shù)。
例如:輸入10名學(xué)生的成績(jī)分別為92,87,68,56,92,84,67,75,92,66,則輸出平均成績(jī)?yōu)?7.9,最高分為92,得最高分的人數(shù)為3人。
(3)編寫函數(shù)int fun(intlim,intaa[MAX]),該函數(shù)的功能是求出小于lim的所有素?cái)?shù)并放在aa數(shù)組中,該函數(shù)返回求出素?cái)?shù)的個(gè)數(shù)。
(4)功能:編寫函數(shù)int fun(int a[M][M]),求5行5列矩陣的主、副對(duì)角線上元素之和。注意,兩條對(duì)角線相交的元素只加一次。
(5)功能:請(qǐng)編一個(gè)函數(shù)void fun(inttt[M][N],int pp[N]),tt指向一個(gè)M行N列的二維數(shù)組,求出二維數(shù)組每列中最小元素,并依次放入pp所指一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中賦予。
四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)
程序調(diào)試
改錯(cuò)題(1)
#include
/**********FOUND**********/
int fun( int n)
{
inti,k=1;
if(n<=1) k=0;
/**********FOUND**********/
for(i=2;i
#define N 11
main()
{ inti,number,a[N]={1,2,4,6,8,9,12,15,149,156};
printf("please enter an integer to insert in the array:\n");
/**********FOUND**********/
scanf("%d",&number);
printf("The original array:\n");
for(i=0;i=0;i--)
if(number<=a[i])
/**********FOUND**********/
{
a[i+1]=a[i];
}
else
{
a[i+1]=number;
/**********FOUND**********/
break;
}
if(numbermax)
{ max=a[i][j]; s=i; t=j; }
/**********FOUND**********/
printf("max=a[%d][%d]=%d\n",s,t,max);
}
編程(1):
#include "stdio.h"
float fun(int n)
{
inti;
float sum=2.0,f1=2.0,f2=1.0,f3;
for(i=2;i<=n;i++)
{
f3=f1+f2;
f2=f1;
f1=f3;
sum+=f1/f2;
}
return sum;
}
main()
{
int a;
printf("press input an N(N>1):");
scanf("%d",&a);
printf("sum=%f\n",fun(a));
}
編程(2):
#include "stdio.h"
float fun(int n)
{
inti,j;
for(i=n+1;;i++)
{
for(j=2;j=i)
{
printf("%d\n",i);
break;
}
}
}
main()
{
int a;
printf("press input an N:");
scanf("%d",&a);
fun(a);
}
編程(3):
#include "stdio.h"
void fun(intn,int a[])
{
inti,b[4]={0};
for(i=0;i=0;i--)
{
a[i]=n%10;
n=n/10;
}
fun(4,a);
}
編程(4):
#include "stdio.h"
#define N 5
void fun(intarr[],int n)
{
inti,j;
for(i=0;i<=N/2;i++)
{
j=arr[i];
arr[i]=arr[N-i-1];
arr[N-i-1]=j;
}
}
void main()
{
inti,a[]={8,6,5,4,1};
fun(a,N);
for(i=0;i
#include
float fun ()
{
float x1=0.0,x0;
inti;
for(i=0;;i++)
{
x0=x1;
x1=cos(x0);
if(fabs(x0-x1)<0.000001)
break;
}
return x1;
}
void main()
{
printf("Root=%f\n",fun());
}
思考題2
#include
#define N 10
float fun(float array[],int n)
{
floatavg,sum=0.0,k;
inti,j=0,max=0;
for(i=0;imax)
max=array[i];
}
for(i=0;i
#define MAX 1000
int fun(intlim,intaa[MAX])
{
inti,j,m=1;
for(i=3;i=i-1)
{
m++;
aa[m-1]=i;
}
}
}
return m;
}
void main()
{
intn,a[MAX]={0};
scanf("%d",&n);
printf("%d\n",fun(n,a));
}
思考題4:
#include
#define M 5
int fun(int a[][M])
{
int i,j,sum1=0,sum2=0;
for(i=0;i
#define M 4
#define N 5
int fun(inttt[M][N],int pp[N])
{
inti,j,min=0;
for(i=0;i
void input(int *arr,int n)
{
int *p,i;
p=arr;
printf("please enter 10 integers:\n");
for(i=0;i
#include
#include
/**********FOUND**********/
void fun (char s, char t)
{
inti, d;
/**********FOUND**********/
d = len(s);
/**********FOUND**********/
for (i = 1; i
void input(int *arr,int n)
{
int *p,i;
p=arr;
printf("please enter 10 integers:\n");
for(i=0;i*max)
max=p;
else if(*p<*min) min=p;
t=*arr;*arr=*min;*min=t;
/**********ERROR**********/
if(max==arr) max=min;
t=*(arr+n-1);
*(arr+n-1)=*max;
*max=t;
}
void output(int *arr,int n)
{
int *p,i;
p=arr;
printf("The changed array is:\n");
/**********ERROR**********/
for(i=0;i
#include
#include
/**********FOUND**********/
void fun (char s[], char t[])
{
inti, d;
/**********FOUND**********/
d = strlen(s);
/**********FOUND**********/
for (i = 0; i
int fun(int *s, int t, int *k)
{
int i,m=0,max;
k=s+1;
max=*s;
for(i=0;imax)
{
max=*(k+i);
m=i+1;
}
}
printf("\nTmax is:%d,%d\n",m,max);
}
main()
{
int i,s[10]={0},*p=0;
printf("\nPlease enter string S:\n");
for(i=0;i<10;i++)
scanf("%d", &s[i]);
fun(s,10,p);
}
編程2:
#define N 100000
#include
void len_cat(char c1[],char c2[])
{
inti,
鏈接地址:http://www.3dchina-expo.com/p-6728137.html