c语言程序设计报告文档格式.docx
《c语言程序设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《c语言程序设计报告文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
要想恢复下面的等式,应在()中填上哪个相同的数字
●FindRoot这里要求编制一个求方程ax^2+bx+c=0的根程序
●Bear本题是一个笑话,话说有一只狗熊到玉米地里掰玉米,一边掰一边吃,第一天吃了一半,又拿走了一个回去喂狗熊。
第二天又去吃了剩下的一半,走时仍然带一个回去喂狗熊。
以后每天都吃前一天的一半,拿走一个。
到第十天时,地里只剩下一个玉米。
求地里一共有多少玉米
●Diamond
●Goodbye!
1.2设计思路
菜单是应用程序的界面,本题的任务是设计一个比较实用的菜单,通过菜单选择不同的功能。
设计分为两步:
首先设计一个含有多个菜单项的菜单演示程序,然后再为这些菜单项配上相应的功能。
具体方法:
首先编写一个菜单程序,输入1-6以进入相应选择项,从程序测试结构可知,当选择相应选择项时候,其输出信息为:
FindNum、FindRoot、Bear、Diamond、Goodbye!
(1)使用switch语句实现功能选择
(2)应该设计一个函数用来输出提示信息和处理输入,这个函数应该返回一个数值,以便提供给switch语句使用
1.3流程图
1.4具体实现
程序的源代码如下:
#include<
stdio.h>
stdlib.h>
ctype.h>
math.h>
voidFindNum();
voidFindRoot();
voidBear();
voidDiamond();
intmain()
{inta;
printf("
菜单内容:
\n"
);
1.FindNum\n"
2.FindRoot\n"
3.Bear\n"
4.Diamond\n"
5.Goodbye\n"
***********************\n"
);
//打印的界面
请输入相应选择项:
while
(1)
{scanf("
%d"
&
a);
switch(a)
{
case1:
FindNum();
break;
case2:
FindRoot();
case3:
Bear();
case4:
Diamond();
case5:
Goodbye\n"
exit(0);
default:
您输入有误,请重新输入\n"
break;
}
return0;
voidFindNum()//FindNum函数
{inti,j;
一只老鼠咬坏了账本\n"
公式中符号()代表是被老鼠咬掉的地方\n"
即表示为3()*6237=()3*3564\n"
for(i=0;
i<
10;
i++)
for(j=0;
j<
j++)
if((3*10+i)*6237==(j*10+3)*3564)
printf("
被老鼠咬掉的地方分别是数字%2d,%2d\n\n"
i,j);
}
voidFindRoot()//FindRoot函数
{
floatx1,x2;
floata,b,c,delta;
请输入三个数字\n"
求方程ax^2+bx+c=0的根\n"
scanf("
%f%f%f"
a,&
b,&
c);
delta=b*b-4*a*c;
if(delta>
0)
{x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
方程的根为x1=%4f,x2=%4f\n\n"
x1,x2);
else
if(delta==0)
{x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
printf("
方程的根为x1=x2=%4f\n\n"
printf("
方程无根\n\n"
voidBear()//Bear函数
{intday,x1;
狗熊到玉米地吃了玉米"
第一天吃了一半又拿走一个回去喂小狗熊。
第二天又去吃了剩下的一半,走是任然带一个回去。
以后每天都吃前一天剩下的一半,拿走一个。
到了第十天时,地里只剩下一个玉米。
求地里一共有多少玉米\n"
day=10;
x1=1;
while(day>
{
x1=(x1+1)*2;
day--;
}
玉米总数=%d\n\n"
x1);
voidDiamond()//Diamond函数
intm,i,j,t,n;
请输入您要打印的钻石列数(奇数)\n"
scanf("
m);
n=(m+1)/2;
for(i=1;
=n;
i++)
{for(j=1;
=n-i;
"
for(t=1;
t<
=2*i-1;
t++)
*"
for(i=1;
=(m-1)/2;
{for(t=1;
=i;
t=1;
for(j=1;
=(m-1)-2*i+1;
1.5程序运行截图
第二章使用数组合指针统计成绩
2.1设计题目及要求
设计题目:
假设给定班级各科考试平均成绩的原始资料如下:
数学:
75
物理:
80
外语:
83
政治:
85
体育:
86
人数:
30
要求统计出全班学期总平均成绩以及得分最低的科目和该科目的成绩。
要求的输出结果如下:
原始信息如下:
平均成绩:
最低分数科目的成绩:
最低分数的科目:
全班各科平均成绩如下:
统计结果如下:
81
数学
2.2设计思路
将数组a的内容存入到分配的内存中,使用指针实现对内存内容的存取和计算。
为字
符分配内存,并将字符数组的内容也存入所分配的内存中,使用这些指针实现设计要求。
实现本设计功能的方法很多,对存放原始数据的要求如下:
●使用整形数组a存放数学、物理、外语、政治、体育、人数、平均成绩、最低分科目的成绩
●使用字符串数组name存放数学、物理、外语、政治、体育、最低分数的科目
●使用字符串数组MeanLow存放人数、平均成绩、最低分数科目的成绩、最低分数的科目。
●使用字符指针指向字符数组(这个题目的要求超出一般的教材,但对理解指针很有用途。
)
2.4具体实现
程序源代码如下:
intsubject(int*c,intn);
intlowest(int*b);
intaverage(int*b);
voidmain()
{inti,b;
inta[9]={75,80,83,85,86,30};
char*name[5]={"
数学"
"
物理"
外语"
政治"
体育"
};
char*meanlow[4]={"
人数"
平均成绩"
最低分数科目成绩"
最低分科目"
for(i=0;
5;
%s:
%d\n"
name[i],a[i]);
meanlow[i],a[i+5]);
meanlow[0],a[5]);
meanlow[1],average(a));
meanlow[2],lowest(a));
b=subject(a,5);
%s\n"
meanlow[3],name[b]);
intaverage(int*b)//求平均成绩
{intsum=0,i,aver;
sum=sum+b[i];
aver=sum/5;
returnaver;
intlowest(int*b)//求最低成绩
{intt=b[0],i;
{if(t>
b[i])t=b[i];
returnt;
intsubject(int*c,intn)//求最低成绩的科目
{inti,t=c[0],m=0;
for(i=1;
n;
c[i]){t=c[i];
m++;
returnm;
2.5程序运行截图
第三章学生成绩管理系统
3.1设计题目及要求
1.设计要求实现的功能较多,所以将它们分为几个部分叙述。
建立文件
●可以使用默认文件名或指定文件名将记录存储到文件;
●文件保存成功返回0,失败返回-1;
●设置保存标志savedTag作为是否对记录进行存储操作的信息;
●写同名文件将覆盖原来文件的内容;
增加学生记录
●可在已有记录后面追加新的记录
●可以随时用它增加新的记录,它们仅保存在结构数组中;
●可以将一个文件读入,追加在已有记录之后;
●如果已经采取文件追加的方式,在没有保存到文件之前,将继续保持文件追加状态,以便实现连续文件追加操作方式;
●如果没有记录存在,给出提示信息。
显示记录
●如果没有记录可供显示,给出提示信息;
●可以随时显示内存中的记录
文件存储
●可以按默认名字或指定名字存储记录文件;
●存储成功返回0.,否则返回-1;
●更新存储标志;
读取文件
●可以按照默认名字或指定名字将记录文件读入内存;
●读取成功返回0,否则返回-1;
●可以将指定或默认文件追加到现有记录