c语言课程设计报告.docx

上传人:b****2 文档编号:4397 上传时间:2023-04-28 格式:DOCX 页数:33 大小:342.48KB
下载 相关 举报
c语言课程设计报告.docx_第1页
第1页 / 共33页
c语言课程设计报告.docx_第2页
第2页 / 共33页
c语言课程设计报告.docx_第3页
第3页 / 共33页
c语言课程设计报告.docx_第4页
第4页 / 共33页
c语言课程设计报告.docx_第5页
第5页 / 共33页
c语言课程设计报告.docx_第6页
第6页 / 共33页
c语言课程设计报告.docx_第7页
第7页 / 共33页
c语言课程设计报告.docx_第8页
第8页 / 共33页
c语言课程设计报告.docx_第9页
第9页 / 共33页
c语言课程设计报告.docx_第10页
第10页 / 共33页
c语言课程设计报告.docx_第11页
第11页 / 共33页
c语言课程设计报告.docx_第12页
第12页 / 共33页
c语言课程设计报告.docx_第13页
第13页 / 共33页
c语言课程设计报告.docx_第14页
第14页 / 共33页
c语言课程设计报告.docx_第15页
第15页 / 共33页
c语言课程设计报告.docx_第16页
第16页 / 共33页
c语言课程设计报告.docx_第17页
第17页 / 共33页
c语言课程设计报告.docx_第18页
第18页 / 共33页
c语言课程设计报告.docx_第19页
第19页 / 共33页
c语言课程设计报告.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言课程设计报告.docx

《c语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告.docx(33页珍藏版)》请在冰点文库上搜索。

c语言课程设计报告.docx

c语言课程设计报告

 

《C程序设计》课程设计

学院:

***

专业:

***

班级:

***

学号:

***

姓名:

***

指导教师:

***

2016年9月

 

第1章分支与循环

1、2设计任务

1、王小二自夸刀工不错,有人放一张大地煎饼在砧板上,问她:

“煎饼不许离开砧板,切100刀最多能分成多少块?

2、若一个口袋中放有12个球,其中有3个红色球,3个白色球与6个黑色球,从中任取8个球,问共有多少不同的颜色搭配,把每种搭配显示出来。

3、输入年月日,求它就是该年的第几天。

注:

闰年的2月有29天,平年的2月有28天。

4、简单计算器。

请编写一个程序计算表达式:

data1opdata2的值。

其中op为运算符+、-、*、/,data1与data2就是数据。

5、猜数游戏。

由计算机“想”一个数请人猜,如果猜对了,则游戏结束,否则计算机给出提示,告诉人所猜的数就是太大还就是太小,直到猜对为止。

计算机记录人猜的次数,以此可以反映出猜数者“猜”的水平。

6、一辆肇事汽车的号码就是4位十进制数。

目击者向交警描述这个车号:

这就是一个完全平方数;这4个数字从左至右一个比一个小。

请帮助交警寻找肇事者,将车号算出来。

1、3实现过程

1、3、1设计任务1的实现过程

【任务描述】

1.王小二自夸刀工不错,有人放一张大地煎饼在砧板上,问她:

“煎饼不许离开砧板,切100刀最多能分成多少块?

【算法分析】(用文字或流程图进行描述)

用到数学中的逆推公式。

s=1+n*(n+1)/2

【源程序代码】

#include

main()

{intn,s;

for(n=1;n<=100;n++)

{

s=1+n*(n+1)/2;

}

printf("%d\n",s);

}

【编译示图】(示图中要有0error,0warning的提示)

【运行结果示图】

1、3、2设计任务2的实现过程

【任务描述】

6、一辆肇事汽车的号码就是4位十进制数。

目击者向交警描述这个车号:

这就是一个完全平方数;这4个数字从左至右一个比一个小。

请帮助交警寻找肇事者,将车号算出来。

【算法分析】(用文字或流程图进行描述)

找出这个四位数的个、十、百、千位数,利用题目条件运用两个for循环最后求出结果。

 

【源程序代码】

#include

main()

{ints,a,b,c,d,e;

for(s=1000;s<10000;s++)

{

a=s%10;//gewei

b=s/10%10;//shiwei

c=s/100%10;//baiwei

d=s/1000;//qianwei

for(e=30;e<100;e++)

{

if(a>b&&b>c&&c>d&&e*e==s)

printf("%d\n",s);

}

}

}

【编译示图】(示图中要有0error,0warning的提示)

 

【运行结果示图】

1、3、3设计任务3实现过程

【任务描述】

2、若一个口袋中放有12个球,其中有3个红色球,3个白色球与6个黑色球,从中任取8个球,问共有多少不同的颜色搭配,把每种搭配显示出来。

【算法分析】(用文字或流程图进行描述)

用三个for循环嵌套,再以一个if条件语句就可以输出最后结果。

【源程序代码】

#include

main()

{intx,y,z;

for(x=0;x<4;x++)

for(y=0;y<4;y++)

for(z=0;z<7;z++)

if(x+y+z==8)

printf("%d红%d白%d黑\n",x,y,z);

}

 

【编译示图】(示图中要有0error,0warning的提示)

【运行结果示图】

1、3、4设计任务4实现过程

【任务描述】

3、输入年月日,求它就是该年的第几天。

注:

闰年的2月有29天,平年的2月有28天。

【算法分析】(用文字或流程图进行描述)

先用if语句判断出平年与闰年,再用for循环输出最后结果。

 

【源程序代码】

#include

voidmain()

{

intyear,moth,day;

inta[12]={31,28,31,30,31,30,31,31,30,31,30,31};//平年2月28天365天

intb[12]={31,29,31,30,31,30,31,31,30,31,30,31};//闰年2月29天366天

inti,j,num=0;

intx;

printf("请输入年月日,\n");

scanf("%d,%d,%d",&year,&moth,&day);

if((year%4==0)&&(year%100!

=0)||(year%4==0)&&(year%400==0))

{x=1;}

else

{x=0;}

if(x)

{for(i=0;i

num+=b[i];

num+=day;

}

else

{

for(j=0;j

num+=a[j];

num+=day;

}

printf("今天就是第%d年的第%d天\n",year,num);

}

 

【编译示图】(示图中要有0error,0warning的提示)

 

【运行结果示图】

1、3、5设计任务5实现过程

【任务描述】

4、简单计算器。

请编写一个程序计算表达式:

data1opdata2的值。

其中op为运算符+、-、*、/,data1与data2就是数据。

【算法分析】(用文字或流程图进行描述)

先输出所需数据与运算符,然后用switch语句进行判断,最后输出结果。

【源程序代码】

#include

voidmain()

{

floata,b;

charc;

printf("请输入数字a,运算符c,数字b:

\n");

scanf("%f%c%f",&a,&c,&b);

//charc;

//printf("请输入运算符:

\n");

//scanf("%c",&c);

switch(c)

{

case'+':

printf("%f\n",a+b);break;

case'-':

printf("%f\n",a-b);break;

case'*':

printf("%f\n",a*b);break;

case'/':

printf("%f\n",a/b);break;

default:

printf("inputerror\n");

}

}

 

【编译示图】(示图中要有0error,0warning的提示)

 

【运行结果示图】

第2章数组与函数

2、2设计任务

1、有一个一维数组score[],内存放10个学生的成绩,要求编写三个函数分别求学生的平均成绩,求10个学生的最高分,求10个学生的最低分。

2、编写一个函数,将输入的一串字符中的小写字母转变成大写字母,并输出所有的大写字母。

3、输入10个学生姓名,按字典顺序将排在最前面的学生姓名输出。

即在字符数组中求最小字符串。

4、用函数求N*N的对角线的与。

其中的N就是用户通过键盘输入的任意值。

5、“数学黑洞”:

任意一个4位自然数,将组成该数的各位数字重新排列,形成一个最大数与一个最小数,之后两数相减,其差任为一个自然数。

重复进行上述运算,会发现一个神秘的数。

6、输入n值,打印边长为n的空心正六边形,其边有‘*’组成。

例如:

n=4时,图形如下:

****

**

**

**

**

**

****

2、3实现过程

2、3、1设计任务1实现过程

【任务描述】

1.有一个一维数组score[],内存放10个学生的成绩,要求编写三个函数分别求学生的平均成绩,求10个学生的最高分,求10个学生的最低分。

 

【算法分析】(用文字或流程图进行描述)

用数组存放10个学生的成绩,然后用求出平均分、最高分、最低分。

 

【源程序代码】

#include

intscore[10]={56,66,21,45,52,65,70,82,90,92};

inti,max,min;

aver()

{inti;

floataver=0,a=0;

for(i=0;i<10;i++)

a+=score[i];

printf("aver=%f\n",a/10);

}

maxain()

{

max=min=score[0];

for(i=0;i<10;i++)

{

if(score[i]>max)

max=score[i];

if(score[0]

min=score[i];

printf("max=%d\nmin=%d\n",max,min);

}

}

voidmain()

{

aver();

max=min=score[0];

for(i=0;i<10;i++)

 

if(score[i]>max)

max=score[i];

if(score[0]

min=score[i];

printf("max=%d\nmin=%d\n",max,min);

}

 

【编译示图】(示图中要有0error,0warning的提示)

【运行结果示图】

2、3、2设计任务2实现过程

【任务描述】

2、编写一个函数,将输入的一串字符中的小写字母转变成大写字母,并输出所有的大写字母。

 

【算法分析】(用文字或流程图进行描述)

用gets()函数输入字符串,然后讲小写字母转换成大写使用puts()输出。

 

【源程序代码】

#include

voidmain()

{

charch[20];

inti;

printf("inputstring:

\n");

gets(ch);

for(i=0;i<20;i++)

if(ch[i]>=97&&ch[i]<=122)

ch[i]-=32;

puts(ch);

 

}

 

【编译示图】(示图中要有0error,0warning的提示)

 

【运行结果示图】

第3章指针

3、2设计任务

1、已知一个整型数组a[5],其各元素值为4,6,8,10,12。

使用指针法求该数组元素之积。

2、100个围成一圈,从第1个人开始,每数到3的人出圈。

问最后一个出圈的人就是哪一个。

3、编写两个排序函数,要求一个函数完成从小到大排序,一个函数完成从大到小排序,并编写主函数完成:

①输入n个数;

②调用排序函数对n个数按从大到小排序并输出;

③调用排序函数对n个数按从小到大排序并输出;

3、3实现过程

3、3、1设计任务1实现过程

【任务描述】

1、已知一个整型数组a[5],其各元素值为4,6,8,10,12。

使用指针法求该数组元素之积。

【算法分析】(用文字或流程图进行描述)

使用数组存放元素,然后用指针取出数值运算。

【源程序代码】

#include

main()

{

inta[5]={4,6,8,10,12};

int*p,s=1;

for(p=a;p<=a+4;p++)

s=s*(*p);

printf("%d\n",s);

}

 

【编译示图】(示图中要有0error,0warning的提示)

【运行结果示图】

3、3、2设计任务2实现过程

【任务描述】

100个围成一圈,从第1个人开始,每数到3的人出圈。

问最后一个出圈的人就是哪一个。

【算法分析】(用文字或流程图进行描述)

使用for循环取出出圈人,然后用wile输出最后一个出圈的人。

【源程序代码】

#include

#definen100

voidmain()

{

inta[n],i,quit_num,k;

for(i=0;i

a[i]=i+1;

quit_num=0;//出圈人数

i=0;

k=0;

while(quit_num

{

if(a[i]!

=0)k++;

if(k==3)

{

a[i]=0;

quit_num++;

k=0;

}

i++;

if(i==n)i=0;

}

for(i=0;i

if(a[i]!

=0)

printf("%d\n",a[i]);

}

 

【编译示图】(示图中要有0error,0warning的提示)

 

【运行结果示图】

 

第4章综合设计题

4、1设计任务

1、运用C语言开发一个“小学生算术四则运算测试系统”。

该系统就是让计算机充当一位给小学生布置作业的算术老师,为学生出题并阅卷。

该系统要求实现下列功能:

①为小学生出题(分别进行+、-、*、/等不同运算)。

②学生做题后,进行评阅。

学生每做一题后,评阅给出“答题正确,很好”或“答题错误,重做”等信息。

③加、减、乘、除运算功能可以自由选择实现。

④运算数值可控制在两位数的四则运算范围内。

2、运用C语言开发一个“比赛评分系统”。

评委打分原则:

满分10分,评委打分后,去掉一个最高分与一个最低分,最后的平均分为参赛选手的最后得分(精确到小数点后两位)。

要求该系统实现以下功能:

①假设参赛人数为20人,评委为10人。

(有兴趣的同学可拓展为参赛人数为n人,评委为m人)。

并对参赛选手与评委分别编号,序号从1开始,顺序编号。

②选手按编号顺序依次参加比赛,统计最后得分。

③比赛结束,按从高分到低分每行5人依次打印选手的得分情况。

④公布选手获奖。

取一等奖1名,二等奖2名,三等奖3名。

3、王小二帮学生食堂编了一个买菜计价的程序,该程序可以显示菜单,让学生输入菜号来选择买什么菜,之后程序会报出您买了多少个菜,用了多少钱。

4、2设计过程

4、2、1设计任务实现过程

【任务描述】

2、运用C语言开发一个“比赛评分系统”。

评委打分原则:

满分10分,评委打分后,去掉一个最高分与一个最低分,最后的平均分为参赛选手的最后得分(精确到小数点后两位)。

要求该系统实现以下功能:

①假设参赛人数为20人,评委为10人。

(有兴趣的同学可拓展为参赛人数为n人,评委为m人)。

并对参赛选手与评委分别编号,序号从1开始,顺序编号。

②选手按编号顺序依次参加比赛,统计最后得分。

③比赛结束,按从高分到低分每行5人依次打印选手的得分情况。

④公布选手获奖。

取一等奖1名,二等奖2名,三等奖3名。

 

【算法分析】(用文字或流程图进行描述)

使用for循环嵌套输出每位选手的评分,然后用冒泡排序法排序,然后输出得奖人。

 

【源程序代码】

#include

#include

voidmain()

{intmax(floatb[]);

intmin(floatb[]);

inti1,k1,j1,t,t1,b1;

floattt;

intii,jj;

intflag=1;

intk,m,i,b,j;

floatsum=0;

floata[10],c[20];

printf("评分系统\n");

printf("************************************************************\n");

for(b=0;b<20;b++)

{

printf("%d号选手:

\n",b+1);

for(i=0;i<=9;i++)

{

printf("%d号评委的评分就是:

",i+1);

scanf("%f",&a[i]);

sum+=a[i];

}

for(j=0;j<10;j++)

{

c[j]=sum/10;

}

printf("\n\n");

k=max(a);

m=min(a);

printf("---------------------------------------\n");

printf("\n---------------------------------------\n");

printf("\n最高分就是:

%g最低分就是:

%g\n\n",a[k],a[m]);

printf("删除最高分最低分之后的总分就是:

%g\n\n",sum-a[k]-a[m]);

printf("这位选手的平均分就是:

%g\n\n",(sum-a[k]-a[m])/10);

c[b]=(sum-a[k]-a[m])/10;

sum=0;

printf("************************************************************\n\n\n\n");

}

for(b1=0;b1<20;b1++)

{

printf("第%d位选手的分数就是:

%g\n",b1+1,c[b1]);

}

 

for(ii=0;ii<20;ii++)

{

for(jj=0;jj<20-ii-1;jj++)

{

if(a[jj]>a[jj+1])//如果后面的数字大于前面的数字

{

tt=c[jj];

c[jj]=c[jj+1];

c[jj+1]=tt;//就把两个数交换

}

}

printf("%g",c[jj]);

}

printf("第一名%g",c[0]);

printf("第二名%g",c[1]);

printf("第三名%g",c[2]);

}

intmax(floatb[])//最大值

{inti,k=0;

floatmax=b[0];

for(i=0;i<10;i++)

{

if(max

}

returnk;

}

intmin(floatb[])//最小值

{

inti,m=0;

floatmin=b[0];

for(i=1;i<10;i++)

{

if(b[i]

}

returnm;

}

【编译示图】(示图中要有0error,0warning的提示)

【运行结果示图】

4、2、2设计任务实现过程

【任务描述】

运用C语言开发一个“小学生算术四则运算测试系统”。

该系统就是让计算机充当一位给小学生布置作业的算术老师,为学生出题并阅卷。

该系统要求实现下列功能:

①为小学生出题(分别进行+、-、*、/等不同运算)。

②学生做题后,进行评阅。

学生每做一题后,评阅给出“答题正确,很好”或“答题错误,重做”等信息。

③加、减、乘、除运算功能可以自由选择实现。

④运算数值可控制在两位数的四则运算范围内。

 

【算法分析】(用文字或流程图进行描述)

用随机函数取出两个数1-100,用while循环判断就是否重做,用switch(选择加、减、乘、除运算,然后输出结果。

【源程序代码】

#include

#include

#include

intmain()

{

inta=0,b=1,x=0,y=0,i=0,x1=0,y1=0;

srand((unsignedint)time(NULL));//设置当前时间为种子

while(a

{

a=rand()%100+1;

;

b=rand()%100+1;

}

printf("请选择\n1加法运算,\n2减法运算,\n3乘法运算,\n4除法运算\n");

scanf("%d\n",&x);

x1=x;

switch(x1)

{

case1:

while(i==0)

{

printf("请计算%d+%d=",a,b);

scanf("%d\n",&y1);

y=y1;

if(y==(a+b))

{

printf("答案正确\n");

i=1;

}

else

{

printf("答案错误,重做\n");

i=0;

}

}

break;

case2:

while(i==0)

{

printf("请计算%d-%d=",a,b);

scanf("%d\n",&y1);

y=y1;

if(y==(a-b))

{

printf("答案正确\n");

i=1;

}

else

{

printf("答案错误,重做\n");

i=0;

}

}

break;

case3:

while(i==0)

{

printf("请计算%d*%d=",a,b);

scanf("%d\n",&y1);

y=y1;

if(y==(a*b))

{

printf("答案正确\n");

}

else

{

printf("答案错误,重做\n");

}

}

break;

case4:

while(i==0)

{

printf("请计算%d/%d=",a,b);

scanf("%d\n",&y1);

y=y1;

if(y==(a/b))

{

printf("答案正确\n");

i=1;

}

else

{

printf("答案错误,重做\n");

i=0;

}

}

break;

}

return0;

}

 

【编译示图】(示图中要有0error,0warning的提示)

 

【运行结果示图】

课程设计小结

通过这次C语言的课程设计,我明白了很多也知道了很多,更收获了很多。

在课程设计的过程中出现过困难,

  这个学期的课程设计已经结束了。

回想学习C语言的过程中,既有快乐又有烦恼,

  回顾这次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合就是很重要的,只有理论与知识就是远远不够的,只有把所学的理论知识与实际相结

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2