C语言程序课程设计报告.docx

上传人:b****5 文档编号:5042803 上传时间:2022-12-12 格式:DOCX 页数:12 大小:98.33KB
下载 相关 举报
C语言程序课程设计报告.docx_第1页
第1页 / 共12页
C语言程序课程设计报告.docx_第2页
第2页 / 共12页
C语言程序课程设计报告.docx_第3页
第3页 / 共12页
C语言程序课程设计报告.docx_第4页
第4页 / 共12页
C语言程序课程设计报告.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

C语言程序课程设计报告.docx

《C语言程序课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言程序课程设计报告.docx(12页珍藏版)》请在冰豆网上搜索。

C语言程序课程设计报告.docx

C语言程序课程设计报告

自动化与电气工程学院

 

C语言程序课程设计报告

 

班级

学号

姓名

指导教师

设计时间2011.07

 

 

1.设计目的及要求

1.设计目的:

进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对C语言中的重点和难点容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。

2.设计要求:

课程设计题目第一类为程序改错题目,要求了解函数调用的方法,并且能培养出程序纠错能力,对于程序中出现的基本问题有了解。

两道改错题都为函数调用问题,第一道要求知道void为空函数,不能有返回值;程序开头必须有#include编译预处理指令。

第二道为二维数组题,要求知道二维函数初始化应注意的问题等。

第二类为技巧性强的基础要求题目,要求会用for函数解题,并且弄清循环次数及定义的变量类型等问题。

第三类为综合题目。

完成的课程设计报告要求有问题描述,设计思路及关键注释,编程题要求用函数调用来完成,并且要求要有问题分析及解决方案,程序设计源代码,及调试过程中遇到的主要问题,是如何解决的,对设计和编码的回顾讨论和分析;改进设想;经验和体会等。

2.程序改错

2.1题目要求

给定程序中fun函数的功能是:

利用折半查找算法查找整数m在数组中的位置。

若找到,则返回其下标值,反之,返回—1。

voidfun(inta[],intm)

{intlow=0,high=N-1,mid;

while(low<=high)

{mid=(low+high)/2;

if(m

high=mid-1;

elseIf(m>a[mid])

low=mid+1;

elsereturn(mid);

}

return(-1);

}

main()

{inti,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m;

printf("a数组中的数据如下:

");

for(i=0;i

printf("Enterm:

");scanf("%d",&m);

k=fun(a,m);

if(k>=0)printf("m=%d,index=%d\n",m,k);

elseprintf("Notbefound!

\n");

}

2.2错误分析

voidfun(inta[],intm)------------------没有#include,导致不能正常输入输出,

{intlow=0,high=N-1,mid;没有定义N,将void函数改为int函数

while(low<=high)

{mid=(low+high)/2;

if(m

high=mid-1;

elseIf(m>a[mid])--------------------elseif的if应该小写

low=mid+1;

elsereturn(mid);

}

return(-1);

}

main()

{inti,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m;

printf("a数组中的数据如下:

");

for(i=0;i

printf("Enterm:

");scanf("%d",&m);

k=fun(a,m);

if(k>=0)printf("m=%d,index=%d\n",m,k);

elseprintf("Notbefound!

\n");

}

错误点:

1.程序开头没有#include编译预处理指令,导致不能正常输入输出;应改为#include

2.程序开头没有定义N;应改为#defineN10

3.将void函数改为int函数,void为空函数不能有返回值。

4.elseIf应改为elesif,if不能为大写。

2.3改正后的程序

#include

#defineN10

intfun(inta[],intm)

{intlow=0,high=N-1,mid;

while(low<=high)

{mid=(low+high)/2;

if(m

high=mid-1;

elseif(m>a[mid])

low=mid+1;

elsereturn(mid);

}

return(-1);

}

main()

{inti,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m;

printf("a数组中的数据如下:

");

for(i=0;i

printf("Enterm:

");scanf("%d",&m);

k=fun(a,m);

if(k>=0)printf("m=%d,index=%d\n",m,k);

elseprintf("Notbefound!

\n");

}

2.4运行结果

2.5题目要求

给定程序中fun函数的功能是:

输出M行M列的整数方阵,然后求两条对角线上的元素之和,返回此和数。

#include

#defineM5

intfun(intn,intxx[][])

{inti,j,sum=0;

printf("\nThe%dx%dmatrix:

\n",M,M);

for(i=0;i

{for(j=0;j

printf("%f",xx[i][j]);

printf("\n");

}

for(i=0;i

sum+=xx[i][i]+xx[i][n-i-1];

return(sum);

}

main()

{intaa[M][M]={{1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};

printf("\nThesumofallelementson2diagnalsis%d.",fun(M,aa));

}

2.6错误分析

#include

#defineM5

intfun(intn,intxx[][])-----------------定义数组时对第1维的长度可以

{inti,j,sum=0;不指定,但第2维的长度不能省

printf("\nThe%dx%dmatrix:

\n",M,M);

for(i=0;i

{for(j=0;j

printf("%f",xx[i][j]);-----------------输出的数组为整型数

printf("\n");

}

for(i=0;i

sum+=xx[i][i]+xx[i][n-i-1];

return(sum);

}

main()

{intaa[M][M]={{1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};

printf("\nThesumofallelementson2diagnalsis%d.",fun(M,aa));

}

错误点:

1.定义数组时对第1维的长度可以不指定,但第2维的长度不能省。

应改为intxx[][M]。

2.输出的数组为整型数。

应改为“%d”。

2.7改正后的程序

#include

#defineM5

intfun(intn,intxx[][M])

{inti,j,sum=0;

printf("\nThe%dx%dmatrix:

\n",M,M);

for(i=0;i

{for(j=0;j

printf("%d",xx[i][j]);

printf("\n");

}

for(i=0;i

sum+=xx[i][i]+xx[i][n-i-1];

return(sum);

}

main()

{intaa[M][M]={{1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};

printf("\nThesumofallelementson2diagnalsis%d.",fun(M,aa));

}

2.8运行结果

3.基本编程题一

3.1题目要求

一球从50米的高度下落,每次落地后反跳回原来高度的2/3;在落下,求它在第10次落地时,共经过多少米?

第10次反弹多高?

3.2程序分析

因为要求第10次落地时经过的米数,因此用for循环解题。

首先定义第一次下落后反跳高度H和共经过的米数sumH,再定义整型变量i。

用for循环求10次后反跳高度,因为每次反跳回原高度的2/3,所以定义H=H*2/3;因为共用的米数为之前米数之和加此次反弹高度的两倍,所以sumH=sumH+H*2,循环后输出共用的米数和反弹高度。

3.3流程图

 

3.4源程序

#include

intmain()

{

floatH=50.0*2/3,sumH=50.0;//定义H,sumH初值为单精度浮点型

inti;//定义i为整型变量

for(i=1;i<10;i++)//已定义第一次反跳为H,所以只需循环9次

{

H=H*2/3;

sumH+=H*2;

}

printf("共经过%fm\n",sumH);

printf("第10次反弹%fm\n",H);

return0;

}

3.5运行结果

4.基本编程题二

4.1题目要求

m个人的成绩存放在score数组中,请编写函数fun,它的功能是:

将低于平均分的人数作为函数值返回。

例如,当score数组中的数据为:

10、20、30、40、50、60、70、80、90、时,函数返回的人数应该是4,below中的数据应为:

10、20、30、40。

4.2程序分析

首先定义fun函数,在fun函数中定义两个整型数组score[]和below[],定义变量i和j为整型,定义变量sum和aver为float型,利用for循环求i个学生总成绩之和及平均值。

再利用一个for循环将学生个人成绩和平均成绩比较,将低于平均分的人数返回,在主函数中调用intfun(intscore[],intm,intbelow[]),将得到的值赋给n,最后输出低于平均分的成绩。

4.3流程图

4.4源程序

#include

#include

intfun(intscore[],intm,intbelow[])//定义fun函数为整型,形参m

{和数组score,below为整型

inti,j=0;//定义变量i和j为整型

floatsum=0,aver;//定义变量sum和aver为float型

for(i=0;i

{

sum+=score[i];//求i个学生总成绩之和

aver=sum/m;

}

for(i=0;i

{

if(aver>score[i])

below[j++]=score[i];

}

returnj;//将低于平均分的人数返回

}

main()

{

inti,n,below[9];

intscore[9]={10,20,30,40,50,60,70,80,90};

n=fun(score,9,below);//调用fun函数将得到的值赋给nprintf("\nBelowtheaveragescoreare:

");

for(i=0;i

printf("%d",below[i]);//输出低于平均分的成绩

}

4.5运行结果

5.总结

做完这次程序设计报告,我学会了函数调用的方法及分析题目的一些思路,但是还是在做题的过程中出现了许多问题,包括编译连接的时候发生错误等。

做完报告我明白了查阅参考网络资料及团队合作的重要性。

在第一道改错中,首先能发现没有#include编译预处理指令,导致程序不能正常输入输出;fun函数定义为空函数,而最后又有返回值,显然错误,将#include补上,将fun函数定义为int函数,再将程序输入C++中,错误显示N没有定义,If没有定义;然后将N定义为10,将If改为if,再进行编译连接,没有错误,运行时输入45,显示下标值为5,输入8,显示Notbefound!

程序正确。

第二道改错中,首先看到定义数组时想到数组对第1维的长度可以不指定,但第2维的长度不能省,应改为intxx[][M],然后再在C++中编译连接,显示没有错误,但运行时有错误。

再仔细检查后发现i和数组中的数都为整型而输出时变成单精度浮点型,因此错误,应改为“%d”整型数。

再运行得出整数二维数组,且返回值正确。

编程一题中,首先拿到题目就想到用for循环解题,因为要求第10次落地时经过的米数,因此用for循环解题。

首先定义第一次下落后反跳高度H和共经过的米数sumH,再定义整型变量i。

用for循环求10次后反跳高度,因为每次反跳回原高度的2/3,所以定义H=H*2/3;因为共用的米数为之前米数之和加此次反弹高度的两倍,所以sumH=sumH+H*2,循环后输出共用的米数和反弹高度。

在C++中编译连接后可执行,执行后显示出共经过的米数及第十次反跳高度。

编程二题中,拿到题目只能想到用for循环和数组解题,没有其他思路。

经过上网查阅资料和与同学讨论,得知应首先定义fun函数,在fun函数中定义两个整型数组score[]和below[],定义变量i和j为整型,定义变量sum和aver为float型,利用for循环求i个学生总成绩之和及平均值。

再利用一个for循环将学生个人成绩和平均成绩比较,将低于平均分的人数返回,在主函数中调用intfun(intscore[],intm,intbelow[]),将得到的值赋给n,最后输出低于平均分的成绩。

上机调试中出现了没有定义的情况,再检查变量的定义情况,改正后经上机调试及运行最后结果正确。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1