《C语言程序设计实践》课程报告Word格式文档下载.docx
- 文档编号:16894127
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:41
- 大小:198.34KB
《C语言程序设计实践》课程报告Word格式文档下载.docx
《《C语言程序设计实践》课程报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计实践》课程报告Word格式文档下载.docx(41页珍藏版)》请在冰豆网上搜索。
任务
要求
一、提交材料应包括:
(1)系统源代码
(2)课程报告
二、整个设计过程具体要求
(1)需求分析对子函数各功能进行分析,设计出需要完成的功能,完善各个子函数的调用关系;
(2)设计过程进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)
(3)实现过程养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;
(4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩。
成绩
评定
报告撰写情况(30分)
系统完成情况(30分)
答辩情况(40分)
总分
内容20分
规范程度5分
程序测试5分
基本功能20分
扩展功能10分
自述情况10分
答辩情况30分
成绩评定教师:
1.需求分析
经过大一上学期的理论学习,在基础实验的基础上,本学期我们继续开设了C语言程序设计实践课。
课程要求我们对已经学习的基础实验进行整合与衔接处理,并最终形成一个系统性质的规模较大的程序。
本次课程设计要求我们达到能独立完成一个1000行以上的程序,完成后要求实现已知半径求圆面积、已知球半径,求表面积和体积,输入两个实数、交换其值输出等30中功能。
通过整个程序的开发过程,最终使我们掌握利用计算机解决实际问题的基本方法,熟悉C语言开发的全过程,提高综合应用C语言的能力、编程和调试能力,为学习计算机后续课程打好专业基础。
2.概要设计
模块划分:
1.intdiyi()已知半径求圆面积
2.intdier()已知球半径,求表面积和体积
3.voiddisan()输入两个实数,交换其值输出
4.voiddisi()输入两个整数,求他们的平方和
5.voiddiwu()分段计费
6.voiddiliu()求一元二次方程的根
7.voiddiqi()判断三个整数是否能构成三角形
8.voiddiba()计算1~1000之间能被三整除的所有自然数之和
9.voiddijiu()猴子吃桃问题
10.voiddishi()输入一个正整数,求位数和位数之和
11.voiddishiyi()输入一行字符,统计大小写字母,数字和其他字符
12.voiddishier()输入一个四位数,将其加密后输出
13.intdishisan()用冒泡排序对10个数排序
14.voiddishisi()用for,while,do~while循环实现100以内素数之和
15.voiddishiwu()将大于10元小于100元的钱换成1元,2元,5元的组合
16.voiddishiliu()输出99乘法口诀
17.voiddihsiqi()验证哥德巴赫
18.voiddishiba()gcd(intm,intn)intlcm(intm,intn)
求两个正整数的最大公约数和最小公倍数
19.voiddihsijiu()intisprime(intm)判断素数
20.voiddiershi()求(m,n)以内全部素数,每行输出10个
21.voiddiershiyi()输出10000到99999的所有回数
22.voiddiershier()两个6*6矩阵的乘积
23.voiddiershisan()voidallPrimes(intm,intn)voidsort(intarray[],intn)
对一批数进行排列,求出最大值与平均数
24.intdiershisi()charswitchScore(intscore)输入一批学生的成绩,换成五分制
25.voiddiershiwu()逆序输出longreverse(longnumber)返回number的逆序数
26.voiddiershiliu()求阶乘
27.voiddiershiqi()用递归函数求Fibonacci数列的前40个数,每行输出8个
28.intdierhsiba()输入某年某月某日,判断这一天是这一年的第几天
29.voiddiershijiu()写出1000以内的所有完数
30.voiddisanshi()voidMonthDay(intyear,intyearDay,int*pMonth,int*pDay)
输入年和天数,输出对应的年、月、日
31.voidmyprint()显示菜单界面
将以上30个子函数放在一个主函数内进行调用。
intmain()主函数
3.详细设计:
#include<
stdio.h>
math.h>
stdlib.h>
time.h>
string.h>
#definePI3.14
voidmyprint();
/*显示菜单界面*/
/*此函数的功能是:
已知圆半径R的值,求圆的面积S。
*/
intdiyi()
{
floatr,area;
printf("
请输入圆的半径:
"
);
scanf("
%f"
&
r);
area=PI*r*r;
该圆的面积为:
%f\n"
area);
returnarea;
}
已知球半径R的值,求球的表面积S和球的体积V。
S=4πR2;
V=4/3πR3;
intdier()
floatr,s,v;
请输入球的半径:
s=4*PI*r*r;
该球的表面积为:
s);
v=s*r/3;
该球的体积为:
v);
从键盘输入两个实数,并交换其值后输出。
voiddisan()
doublex,y,z;
请输入两个实数:
%lf%lf"
x,&
y);
交换前两个实数为:
%f,%f\n"
x,y);
z=x;
x=y;
y=z;
交换后两个实数为:
从键盘输入两个整数,输出它们的平方和。
voiddisi()
intx,y,z;
请输入两个整数:
%d%d"
%d和%d的平方和为:
%d\n"
x,y,x*x+y*y);
创建时间:
voiddiwu()
intx;
doubley;
请输入x:
%d"
x);
if(x<
0)
{
y=0;
}
elseif(x>
=0&
&
x<
=15)
y=4*x/3.0;
else
y=2.5*x-10.5;
printf("
x=%d,y=f(x)=%lf\n"
x,y);
编写程序,求一元二次方程ax2+bx+c=0的根。
voiddiliu()
floata,b,c,delt,x1,x2;
请输入系数a,b,c:
%f%f%f"
a,&
b,&
c);
if(a!
=0)
delt=b*b-4*a*c;
if(delt==0)
{
x1=x2=-b/(2*a);
printf("
有两个相同的实根:
%.2f.\n"
x1);
}
elseif(delt>
x1=(-b+sqrt(delt))/(2*a);
x2=(-b-sqrt(delt))/(2*a);
有两个不同的实根:
x1=%.2f,x2=%.2f。
\n"
x1,x2);
elseprintf("
无实根。
else
不是一元二次方程。
//该程序的功能是:
/*从键盘输入三个整数,判断能否由它们作为三边长构成一个三角形。
(提示:
任意两边之和大于第三边。
)
voiddiqi()
inta,b,c;
请输入三个整数:
%d%d%d"
c);
if(a+b>
c&
a+c>
b&
b+c>
a)
三个整数可以作为三条边构成一个三角形。
不能构成一个三角形"
//该函数的功能是:
用循环语句计算1~1000之间的能被3整除的所有自然数的和。
/*
分别用do…..while,while,for三种循环语句求和,输出结果。
voiddiba()
inti,sum_for=0;
for(i=3;
i<
1000;
i+=3)
sum_for=sum_for+i;
使用for循环计算3+6+9+….+999的和,结果为:
%d\n"
sum_for);
解决猴子吃桃问题
voiddijiu()
{intday,peach_num;
peach_num=1;
//第10天的桃子个数
//printf("
第10天的桃子个数为%6d.\n"
peach_num);
for(day=9;
day>
=1;
day--)
peach_num=2*(peach_num+1);
//printf("
第%2d天的桃子个数为%6d.\n"
day,peach_num);
//第一天的桃子数即为所摘的桃子总数。
输出第一天的桃子数。
第1天摘的桃子总数为%d.\n"
/*输入一个正整数,求该整数的位数和各位数之和。
/*逆序输出一个正整数*/
voiddishi(void)
intn,count=0,sum=0,m;
Entern:
"
/*输入提示*/
scanf("
&
n);
m=n;
//保存输入的n的值,便于后面输出
while(n!
=0){
sum+=n%10;
n=n/10;
count++;
该数是%d,它共有%d位,它的各个数字之和为%d。
m,count,sum);
/*************************************************************
输入十个字符,分别统计其中的英文大写字母,小写字母、数字字符和其他字符。
***********************************************************/
voiddishiyi()
intcount_upper=0,count_lower=0,count_digit=0,count_other=0,i,j;
charch[10];
请输入十个字符,最好包含大小写字母、数字和其他符号:
getchar();
for(i=0;
i<
10;
i++)
scanf("
%c"
ch[i]);
ch[9]);
for(j=0;
j<
j++)
if(ch[j]>
='
A'
&
ch[j]<
Z'
)count_upper++;
elseif(ch[j]>
a'
z'
)count_lower++;
0'
9'
)count_digit++;
elsecount_other++;
大写字母有%3d个,\n小写字母有%3d个,\n数字字符有%3d个,\n其他字符有%3d个.\n"
count_upper,count_lower,count_digit,count_other);
return;
编写程序,完成以下功能:
输入一个四位数,将其加密后输出。
方法是该数每一位上的数字加9,然后除以10取余,作为该位上的新数字,
最后将千位和十位上的数字互换,百位和各位上的数字互换,组成加密后的新四位数。
如:
输入1257,输出4601。
voiddishier()
intx,y,ge,shi,bai,qian;
//因为是要输入一批四位数,所以用循环结构;
while
(1)
请输入一个四位的正整数x:
scanf("
x);
if(x<
1000||x>
9999)break;
//如果输入的不是一个四位数,则结束循环。
//分离各位上的数字
qian=x/1000;
bai=x%1000/100;
//bai=x/100-qian*10;
shi=x%100/10;
//shi=x/10-qian*100-n*10;
ge=x%10;
//ge=x-qian*1000-n*100-o*10;
加密前该数的各位数字分别为:
%d%d%d%d\n"
qian,bai,shi,ge);
//查看分离的各个数字是否正确
//加密
qian=(qian+9)%10;
bai=(bai+9)%10;
shi=(shi+9)%10;
ge=(ge+9)%10;
y=shi*1000+ge*100+qian*10+bai;
加密前该数为:
%-6d,加密后该数变为:
%-6d\n"
用冒泡法对10个数进行排序**/
intdishisan()
{
inti,j,t,a[10];
imput10numbers:
i++)
a[i]);
j++)
if(a[j]<
a[j+1])
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
\ntheresultis:
%d"
a[j]);
}
/**********此函数的功能是用for,while,do-while循环实现100以内所有偶数之和***************
***********************************************************************/
voiddishisi()
inti,sum=0;
用for,while,do-while循环实现100以内所有偶数之和"
for(i=2;
=100;
i+=2)
sum+=i;
for循环:
sum=%d\n\n"
sum);
i=2;
sum=0;
while(i<
=100)
i+=2;
}
while循环:
do{
}while(i<
=100);
do-while循环:
将一笔钱(大于10元,小于100元)换算成1元、2元和5元的纸币组合。
输入金额,问有几种换算方法?
针对每一种换算方法,输出各种面额的纸币数量,要求
每种硬币至少有一枚。
voiddishiwu()
{intnum_1,num_2,num_5,count=0;
intmoney;
请输入要换算的钱的金额:
money);
针对每种换算方法,各种面值的纸币的数量分别为:
\n5元2元1元\n"
for(num_5=1;
num_5<
=money/5;
num_5++)
for(num_2=1;
num_2<
=money/2;
num_2++)
for(num_1=1;
num_1<
=money;
num_1++)
if(money==5*num_5+2*num_2+1*num_1)
{
printf("
%6d%6d%6d\n"
num_5,num_2,num_1);
count++;
}
共有%d种换算方法。
count);
用循环结构输出"
九九乘法表"
。
*************************************************************/
voiddishiliu()
inti,j;
for(i=1;
i<
=9;
i++)
for(j=1;
j<
=i;
j++)
%d*%d=%2d,"
i,j,i*j);
验证哥德巴赫猜想:
任何一个大于6的偶数均可表示为2个素数之和。
要求将6到100之间的偶数都表示为2个素数之和,输出时一行输出4组。
基本思想:
对6~100之间的所有偶数n,若n=a+b,则首先a、b一定都是奇数,
所以选用穷举法对a(3~n/2范围内的奇数)的值从3开始列举,若a是素数,再判断b是否为素数。
voiddishiqi()
intn,i,a,b,c,d;
intcount;
任何一个大于6的偶数均可表示为2个素数之和\n\n"
for(n=6;
n<
=100;
n=n+2)
count=0;
for(a=3;
a<
=n/2;
a=a+2)
//判断a是否为素数
c=sqrt(a);
for(i=2;
=c;
if(a%i==0)break;
if(i>
c)//a是素数的情况下
{
//判断b是否为素数
b=n-a;
d=sqrt(b);
for(i=2;
=d;
if(b%i==0)break;
if(i>
d)//b是素数的情况下
%3d=%3d+%3d"
n,a,b);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计实践 语言程序设计 实践 课程 报告