C语言课程设计报告1模板.docx
《C语言课程设计报告1模板.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告1模板.docx(30页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告1模板
C语言课程设计报告
ExperimentDesigningreporter
课程名称:
C语言课程设计
英文名称:
CProgramExperimentDesigning
专业:
学号:
姓名:
指导教师:
日期:
2008年6月23日 至2008年7月4日
大连交通大学软件学院
《C语言课程设计》报告
CProgramExperimentDesigning
课程编号:
01200308005学时:
40学时
适用专业:
软件工程专业授课单位:
软件学院
一、C语言课程设计目的及要求
目的:
根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。
要求:
1.熟悉TurboC的编程环境、主要菜单功能。
2.通过上机验证运算符、表达式、运算规则、函数使用。
3.熟练使用C语言的典型语句编写简单程序。
4.调试典型例题或习题。
5.提高上机编程能力
二、实验类型
设计类型
三、实验学时
40学时
四、实验设备
微型计算机、WINDOWS98以上版本的操作系统、TurboC2.0软件一套
五、C语言课程参考教材:
1.C语言程序设计清华大学出版社马靖善主编
2.谭浩强.C语言程序设计(第三版).北京:
高等教育出版社,2002
课程设计(报告)任务书
任务及要求:
1.设计(研究)内容和要求
研究内容:
C语言课程设计题目相关内容
任务和要求:
(1).学习C语言基础知识,掌握C语言编程和程序调试的基本技能。
(2).对指导教师下达的题目进行系统分析。
(3).根据分析结果完成系统设计。
(4).编程:
在计算机上实现题目的代码实现。
(5).完成对该系统的测试和调试。
(6).提交课程设计报告。
(7).指标:
要求完成课程设计报告3千字以上(约二、三十页).
完成若干综合性程序设计题目,每个综合设计题目的语句行数的和在300行语句以上.
2.原始依据
了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。
通过用C语言完成的题目,提高用C语言解决实际问题的能力。
3.参考文献
[1]黄明等.C语言程序设计辅导教材.大连理工大学出版社,2006
[2]马靖善等.C语言程序设计.清华大学出版社,2005
[3]谭浩强.C语言程序设计(第二版).北京:
高等教育出版社,2002
指导教师签字:
2008年6月20日
1计算整数n的值,使1到n的和刚好大于或等于500
1.1功能说明
计算整数n,使1+2+3+……+n刚好大于或等于500.
1.2设计说明
3、主函数main()
Step1:
设定n的初始值为0,sum的初始值为0;
Step2:
n自加1,并将sum与i的和存入sum中;
Step3:
若sum<500则返回step2继续进行循环;
若sum>=500,则跳出循环输出sum的值。
当sum>=500,屏幕上显示满足题意要求的n值和此时的sum值。
1.3程序运行截图
2计算1到n的和
2.1功能说明
计算1+2+3+……+n的值
2.2设计说明
主函数main()
从键盘上输入一个整型数n
Step1:
将sum的初始值定义为0,i的初始值为1;
Step2:
若i<=n则进入step3,否则跳出循环输出sum值;
Step3:
将sum与i相加并将所得值存入sum中,i自加1回到step2。
当i>n时,屏幕上显示sum的值。
2.3程序运行截图
3求带符号的整型数的位数
3.1功能说明
输入一个带符号的整型数,输出该数的位数。
3.2设计说明
主函数main()
从键盘上输入一个带符号的整型数x。
Step1:
若x<0,则取x的相反数然后进入step2,否则直接进入step2;
Step2:
若x<10则输出m=1否则进入下一步;
Step3:
若x<100则输出m=2否则进入下一步;
Step4:
若x<1000则输出m=3否则进入下一步;
Step5:
若x<10000则输出m=4否则进入下一步;
Step6:
若均不符合以上的条件,则输出m=5.
当结束程序时,屏幕上显示该整型数的位数。
3.3程序运行截图
4判断一个整数的正负或零
4.1功能说明
输入一个整型数,判断它的正负或为零。
4.2设计说明
1、相关变量的定义:
整型数x为输入的整数,整型数y表示正负或零。
若x为负数则y=-1
若x为正数则y=1
若x为零则y=0
2、主函数main()
从键盘上输入一个整型数x。
Step1:
如果x>=o则进入step2,否则进入step3;
Step2:
如果x>0则y=1,否则y=0;
Step3:
y=-1。
若是正数,屏幕上显示:
1
若是负数,屏幕上显示:
-1
若是零,则屏幕上显示:
0
4.3程序运行截图
5评定分数等级
5.1功能说明
输入一个百分制成绩,输出其对应的等级。
其中:
90~100为A
80~89为B
70~79为C
60~69为D
59一些为E
5.2设计说明
处理流程:
2、主函数main()
从键盘上输入一个整型数x。
Step1:
如果x≥90则y=A,否则转step2;
Step2:
如果x≥80则y=B,否则转step3;
Step3:
如果x≥70则y=C,否则转step4;
Step4:
如果x≥60则y=D,否则转step5;
Step5:
如果都不满足上述各情况则y=E。
如果x≥90,屏幕上显示:
y=A
如果x≥80,屏幕上显示:
y=B
如果x≥70,屏幕上显示:
y=C
如果x≥60,屏幕上显示:
y=D
如果都不满足上述各情况,屏幕上显示:
y=E
5.3程序运行截图
6计算表达式1-1/2+1/3-1/4+……+1/99-1/100的值
6.1功能说明
计算表达式1-1/2+1/3-1/4+……+1/99-1/100的值
6.2设计说明
1、N的定义:
#defineN100
2、主函数main()
Step1:
初始化各量:
n=1,用于循环计数,同时参与每一项的计算;sum=0,用于累加计算出的各项,得到最终所求;
Step2:
计算中间项:
若n为奇数(n%2!
=0),则t=1/n;
反之,则t=-1/n;
Step3:
累加各项:
s+=t;
Step4:
若n<=100,则返回step2,重复进行step2和step3的循环;
若n>100,则跳出循环,输出和sum。
当循环结束时,屏幕上显示表达式的值sum
6.3程序运行截图
7求一个整型数的绝对值
7.1功能说明
输入一个整型数,输出该数的绝对值。
7.2设计说明
主函数main()
从键盘上输入一个整型数a。
处理流程:
Step1:
如果输入的数a≤0则取a的相反数,即a=-a;
Step2:
如果输入的数a大于0则直接输出a本身;
若是正数,屏幕上显示:
a
若是非正数,屏幕上显示:
-a
7.3程序运行截图
8已知半径求圆的周长、面积和圆球的体积
8.1功能说明
通过一个已知的半径求圆的各项指标
8.2设计说明
1、定义圆周率PI
#definePI3.1415936
2、主函数main()
从键盘上输入半径值r。
Step1:
从键盘输入半径的值;
Step2:
通过计算l、s、v、的公式计算所求值
屏幕上显示:
l、s、v的值。
8.3程序运行截图
9输出偶数个数及偶数和
9.1功能说明
从键盘上输入10个小于100的整数,输出偶数的个数及偶数的和
9.2设计说明
主函数main()
从键盘上输入10个整型数。
tep1:
如果a/2的余数为零,则进入step2开始下一步循环,否则取下一个数进行检验;
Step2:
n自加1,sum加上a,然后进入step3;
Step3:
i自加1,直到循环结束。
循环结束后,屏幕上显示n和sum的值
9.3程序运行截图
10比较平方值的大小
10.1功能说明
输入两个整型数,将平方较大者输出。
10.2设计说明
主函数main()
从键盘上输入两个整型数a、b。
处理流程:
Step1:
如果a的平方大于b的平方则max=a;
Step2:
若反之则max=b;
Step3:
输出max的值。
若是a的平方较大,屏幕上显示:
a
反之,屏幕上显示:
b
10.3程序运行截图
11统计能被2、4、8整除的个数
11.1功能说明
计算1~100分别能被2、4、8整除的整数个数。
11.2设计说明
主函数main()
这是continue语句的典型应用之一。
continue语句的特点是:
结束本次循环,跳过循环体中尚未执行的部分,进行下一次是否执行循环的判断。
Step1:
初始化,定义四个整型数i、n2、n4、n8。
其中n2、n4、n8分别代表能被2、4、8整除的个数并将它们均赋值为0;
Step2:
i由1至100进行循环,且每次自加1。
若满足i≤100,则进入step3;否则结束循环;
Step3:
若i能被2整除则n2自加1,返回step2;否则进入step4;
Step4:
若i能被4整除则n4自加1,返回step2;否则进入step5;
Step5:
若i能被8整除则n8自加1,返回step2.
全部循环结束后,屏幕上显示n2、n4和n8的值。
11.3程序运行截图
12输出九九表
12.1功能说明
输出九九表。
12.2设计说明
主函数main()
九九表的编制是一个典型的嵌套问题关键在于限制条件的设定和输出格式的设定。
Step1:
定义两个整型数i,j;
Step2:
外部循环:
i从1开始至9结束每次i自加1,若i小于等于9,则进入step3否则结束循环;
Step3:
内层循环:
j从1开始至当时的i值结束,每次j自加1,若j≤i则输出数值。
输出数值时要注意格式,尤其是结果部分为左对齐且宽度为3.此外,每进行一次外围循环后输出一个换行“\n”.
循环结束时,屏幕上显示九九表。
12.3程序运行截图
13逆序存放并输出数据
13.1功能说明
将整型数组a中的十个整型数据逆序存放并输出。
13.2设计说明
主函数main()
通过数组逆序输出数据的基本原理与单个的数据相类似,都需要用一个中间的变量代换。
Step1:
初始化定义变量后,向数组中输入10个整型数;
Step2:
用循环语句将数列的正数第n位与倒数第n为相交换;
Step3:
将新生成的数列按规定的形式储存在数组中。
当运算结束后,屏幕上显示倒序排列输入的数据。
13.3程序运行截图
14排序
14.1功能说明
将三个整型数按从小到大的顺序排列。
14.2设计说明
主函数main()
本程序的关键在与使用一个过渡变量t分情况将数字按大小进行交换,最后再按从小到大的顺序排列起来。
Step1:
定义a,b,c,t四个整型数并从键盘输入三个整型数;
Step2:
若出现a>b的情况,则将a与b相互交换;
Step3:
若出现a>c的情况,则将a与c相互交换。
Step4:
若出现b>c的情况,则将b与c相互交换。
经过交换后,则可将最小的数据放在a处,中间大小的放于b处,最大者置于c处。
程序结束后,屏幕上按从小到大的顺序显示三个整型数。
14.3程序运行截图
15三个数之和能被6整除的种类
15.1功能说明
在1~12任取3个互不相等的整型数,输出其和能被6整除的种类。
15.2设计说明
主函数main()
本程序可以使用三层的循环以保证即可以穷尽所有的情况,又可以使所取的3个数不重复。
Step1:
初始化定义四个整型数i,j,k,n,其中n的初始值为0;
Step2:
第一层循环:
i从1开始至12结束,每次i自加1,若符合限制条件则进入step3进行下一步循环,否则结束循环;
Step3:
第二层循环:
j从i+1开始至12结束,每次j自加1,若符合限制条件则进入step4进行下一步循环,否则结束循环;。
Step4:
第一层循环:
k从j+1开始至12结束,每次k自加1,若符合限制条件则进入step5,否则结束循环;
Step5:
若i+j+k的和能被6整除则n自加1,然后重复上述循环。
当循环全部结束后,屏幕上显示符合要求的种类数。
15.3程序运行截图
16统计字符串中的英文字母、数字和其他字符的个数
16.1功能说明
输入一行以回车结束的字符,分别统计出其中英文字母、数字和其他字符的个数。
16.2设计说明
主函数main()
本题涉及到了字符串的相关问题,仍可通过循环、嵌套加以解决。
Step1:
初始化,定义三个整型数n1,n2,n3,分别用来表示英文字母、数字和其他字符的个数;再定义一个有符号字符型变量ch;
Step2:
根据ASCII代码判断,若是在英文字母范围内,则n1自加1
若是在数字范围内,则n2自加1
若是均不在上述范围内,则n3自加1
以回车结束循环;
当统计结束后,屏幕上显示:
n1、n2和n3的值。
16.3程序运行截图
17计算Fibonacci数列的前40项
17.1功能说明
输出Fibonacci数列的前40项。
17.2设计说明
主函数main()
Fibonacci函数的特点是从地三项开始每一项的值都是该项前面两项的和。
Step1:
初始化各值,定义整型数i,长整型数f1=1、f2=1;
Step2:
若i≤20则继续进行循环,i自加1,进入step3;否则结束循环;
Step3:
分别将每项的前两项相加存入第三项,再将此项与其前一项的和存入第四项。
每个数据的宽度为10,每行输出4项。
然后返回step2。
当循环结束时,屏幕上一每行4个数据,每个数据宽度为10的格式显示Fibonacci数列的前40项。
17.3程序运行截图
18计算∏的值
18.1功能说明
用下列公式计算∏的值。
∏/4=1-1/3+1/5-1/7+……⁺₋1/n(精度要求为1/n<10⁻⁴)
18.2设计说明
1、引用求绝对值函数fabs()的定义:
#define“math.h”
2、主函数main()
Step1:
初始化定义整型数n=1,t=1单精度实型数pi=0;
Step2:
若在精度要求内,则进入step3;否则跳出循环;
Step3:
将pi与t*1.0/n的和存pi,t取相反数,n自加2,然后返回step2。
Step4:
循环结束后输出∏值。
当循环结束时,屏幕上显示∏的值。
18.3程序运行截图
19求n!
19.1功能说明
计算阶乘n!
19.2设计说明
主函数main()
方法类似于求sum的值,但由相加变为了相乘。
Step1:
定义两个整型数i、n和一个双精度实型数p=1;
Step2:
i从1到n进行循环且每次i自加1,当i≤n时进入step3,否则循环结束;
Step3:
将p与i相乘并把所得结果存入p中,然后返回step2。
当循环结束后,屏幕上显示n的阶乘值。
19.3程序运行截图
20输出3至100的素数
20.1功能说明
按规定格式输出3至100的素数
20.2设计说明
主函数main()
素数的特点是只能被1和它本身整除(1除外)。
所以只需要证明一个数是否存在其他的约数就可以判断它是否为素数。
Step1:
初始化定义四个整型数m、i、n、和k,其中n的初始值为0;
Step2:
m从3开始至100进行循环,若m≤100则进入step3,且m自加1;否则结束循环;
Step3:
确定输出格式,即每行输出8个素数,设定k,使得k比m小1,然后进入step4;
Step4:
i从2开始循环至当时的k结束,若i值小于等于当时的k值(即m除去1和其本身外的约数可能的存在范围)则进入step5,且i自加1,进行下一步的循环;否则结束本层次内的循环,输出该素数;
Step5:
若m能被i整除则跳出整个的循环,否则回到step2;
循环结束后,屏幕上以每行8个素数的格式显示所得到的结果。
20.3程序运行截图
21将数组中的最大值和最小值交换位置
21.1功能说明
将3×5数组中的最大值与最小值交换位置。
21.2设计说明
1、子函数,寻找并交换矩阵中的最大值和最小值。
函数名:
exchangemm()
返回值:
a[i][j]:
一个最大值和最小值交换位置的数组。
参数:
inti、j,含义:
行号和列号
inthi、hj,含义:
最大值的行号和列号
intli、lj,含义:
最小值的行号和列号
intmax、min,含义:
数组中的最大值和最小值
intt,含义:
用于交换最大值和最小值时使用的整型变量
处理流程:
Step1:
初始化定义各变量,其中max和min的初始值均设定为数组的第一个元素a[0][0],相应的hi、hj、li和lj的初始值均为0;
Step2:
使用循环嵌套寻找数组中的最大值和最小值,外层循环以列为标准,内层循环以行为标准。
将max和min分别与数组中的各项进行比较。
凡遇到比max大的元素或比min小的元素,就将其与对应的max或min内的元素相交换。
当max、min与数组中所有元素比较完后,二者中存放的就是该数组中的最大值和最小值;
Step3:
通过t将数组的max和min内的元素相互交换。
3、主函数main()
从键盘上向3×5的数组输入15个数据,然后调用子函数exchangemm()将该数组中的最大值和最小值相互交换。
当程序执行完毕后,屏幕上显示一个将原3×5的数组的最大值与最小值相交换的新3×5的数组。
21.3程序运行截图
22求从1!
一直到20!
之和
22.1功能说明
计算1!
+2!
+3!
……+20!
的和。
22.2设计说明
1、子函数,计算1!
到n!
的和。
函数名:
sum()
返回值:
s:
1!
到n!
的和。
参数:
inti,含义:
一个自然数
doublet,含义:
阶乘的值
doubles,含义:
阶乘之和
处理流程:
Step1:
初始化s=0,t=1;
Step2:
i从1开始至n循环结束,每次i自加1,若i≤n则进入step3;否则结束循环;
Step3:
更新阶乘值,并将新生成的阶乘值加到s中。
3、主函数main()
首先设定n值,然后调用子函数sum()计算阶乘的和。
计算完成后,屏幕上显示阶乘的和。
22.3程序运行截图
23选择排序法
23.1功能说明
用选择排序法将数组a中的N个整数升序排列并输出。
23.2设计说明
主函数main()
选择排序法的核心思想就是将本部分的最小值与本部分的第一位相交换。
Step1:
初始化并定义各量并向数组中输入数据;
Step2:
将第i个数据与其后的所有数据相比较,若该数据大于其后的某个数据,则将该数据与第i个数据项交换,直至最后一个数据;
Step3:
将排列好的数据重新输入数组中并向外输出。
程序结束后,屏幕上显示由小到大的顺序排列。
23.3程序运行截图
(将程序执行图,粘贴在此)
24求从1!
一直到20!
之和
24.1功能说明
计算1!
+2!
+3!
……+20!
的和。
24.2设计说明
1、子函数,计算1!
到n!
的和。
函数名:
sum()
返回值:
s:
1!
到n!
的和。
参数:
inti,含义:
一个自然数
doublet,含义:
阶乘的值
doubles,含义:
阶乘之和
处理流程:
Step1:
初始化s=0,t=1;
Step2:
i从1开始至n循环结束,每次i自加1,若i≤n则进入step3;否则结束循环;
Step3:
更新阶乘值,并将新生成的阶乘值加到s中。
3、主函数main()
首先设定n值,然后调用子函数sum()计算阶乘的和。
计算完成后,屏幕上显示阶乘的和。
24.3程序运行截图
25将数组中的最大值和最小值交换位置
25.1功能说明
将3×5数组中的最大值与最小值交换位置。
25.2设计说明
1、子函数,寻找并交换矩阵中的最大值和最小值。
函数名:
exchangemm()
返回值:
a[i][j]:
一个最大值和最小值交换位置的数组。
参数:
inti、j,含义:
行号和列号
inthi、hj,含义:
最大值的行号和列号
intli、lj,含义:
最小值的行号和列号
intmax、min,含义:
数组中的最大值和最小值
intt,含义:
用于交换最大值和最小值时使用的整型变量
处理流程:
Step1:
初始化定义各变量,其中max和min的初始值均设定为数组的第一个元素a[0][0],相应的hi、hj、li和lj的初始值均为0;
Step2:
使用循环嵌套寻找数组中的最大值和最小值,外层循环以列为标准,内层循环以行为标准。
将max和min分别与数组中的各项进行比较。
凡遇到比max大的元素或比min小的元素,就将其与对应的max或min内的元素相交换。
当max、min与数组中所有元素比较完后,二者中存放的就是该数组中的最大值和最小值;
Step3:
通过t将数组的max和min内的元素相互交换。
3、主函数main()
从键盘上向3×5的数组输入15个数据,然后调用子函数exchangemm()将该数组中的最大值和最小值相互交换。
当程序执行完毕后,屏幕上显示一个将原3×5的数组的最大值与最小值相交换的新3×5的数组。
25.3程序运行截图
附录参考程序
1、计算整数n的值,使1到n的和刚好大于等于500
main()
{intn=0,sum;
sum=0;
do
{n++;
sum+=n;
}
while(sum<500);
printf("n=%dsum=%d\n",n,sum);
}
2、计算1到n的和
main()
{inti,sum=0,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
sum+=i;
printf("sum=%d\n",sum);
}
3、求带符号的整型数的位数
main()
{intx,m;
scanf("%d",&x);
if(x<0)x=-x;
if(x<10)m=1;
elseif(x<100)m=2;
elseif(x<1000)m=3;
elseif(x<10000)m=4;
elsem=5;
printf("%dis%dbitnumber\n",x,m);
}
4、判断一个整数的正负或零
main()
{floatx;
inty;
scanf("%f",&x);
if(x>=0)
if(x>0)y=1;
elsey=0;
elsey=-1;
printf("x=%fy=%d\n"