实验报告模板2Word文件下载.docx

上传人:b****4 文档编号:17268289 上传时间:2022-11-30 格式:DOCX 页数:51 大小:207.79KB
下载 相关 举报
实验报告模板2Word文件下载.docx_第1页
第1页 / 共51页
实验报告模板2Word文件下载.docx_第2页
第2页 / 共51页
实验报告模板2Word文件下载.docx_第3页
第3页 / 共51页
实验报告模板2Word文件下载.docx_第4页
第4页 / 共51页
实验报告模板2Word文件下载.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

实验报告模板2Word文件下载.docx

《实验报告模板2Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验报告模板2Word文件下载.docx(51页珍藏版)》请在冰豆网上搜索。

实验报告模板2Word文件下载.docx

本人设计的程序是一个小学算术运算测试,用来出题让学生回答。

1.2本程序涉及的知识点

循环、函数、选择、全局变量。

1.3功能要求

1)用随机函数rand()产生随机数;

2)用switch语句进行选择题型;

3)输入题数;

4)答题,统计分数。

2功能设计

2.1算法设计

1本程序需要实现的功能要求:

利用switch语句设计如图1所示的主菜单:

用随机数产生1~4,进行选择:

1——加法

2——减法

3——乘法

4——除法

2输入题数,由随机函数产生的数进行选择;

3选择了一个分支后,调用jianfa()

4回答完所有题后,进行统计,得出答对的题数。

2.2部分模块流程图

主函数

为零

Janfa函数

add函数

mil函数

divd函数

3程序代码设计

1..1)函数原形:

voidadd(void)

2)功能:

产生的随机数进行相加;

3)变量及类型:

intx,y;

整形变量,产生的随机数赋给x,y;

intz;

整形变量,用户输入的数;

4)说明:

执行该程序后,判断是否正确,正确则对score进行加1,错误则score不变;

2..1)函数原形:

voidjianfa(void)

2)功能:

产生的随机数进行相减;

执行该程序是,用x减去y,先判断x,y的大小,若x<

y,进行交换,判断是否正确,正确则对score进行加1,错误则score不变;

3..1)函数原形:

voidmil(void)

产生的随机数进行相乘;

4)说明:

4..1)函数原形:

voiddivd(void)

产生的随机数进行相除;

执行该程序是,首先判断y是否是0(分母不能为0),在进行两个整数相除是要进行强制转换,两个数相除是除不断时,有小数(保留两位小数)。

为了使两个数相近用了fabs函数,来比较两个数的差的绝对值是否小于0.01,正确则对score进行加1,错误则score不变;

4C程序设计总结

1.程序调试情况;

开始编程序时,将题目与题数固定起来,让学生输入1——4来选择加、减、乘、除法的题,发现与题意不符;

应用随机函数rand()来产生随机数,来产生随机的题;

还有就是减法得出的结果可能是负数,应先比

较两个数的大小,用大的减去小的,则不会出现负数;

同时会存在的问题就是除法,两个

整数相除结果是整数,应进行强制转换,为了使输入的结果与输出的结果接近,可以用fabs(z-(float)x/y)<

0.01,来进行判断,来得出正确的结果。

2.运行情况:

编译连接后,运行时屏幕上显示“请输入题数”,输入4,产生第一道题:

67+34=,输入101,输出正确;

接着产生第二道题:

24/78=,输入0.31,输出正确;

又产生一道题:

62*64=,输入2011,输出错误,同时把正确的结果也输出来:

62*64=3968;

最后把最后的一道题显示出来:

27+61=,输入88,输出正确,同时输出“最好的得分是3”。

运行正确。

3在程序设计中感想:

编一个程序不仅可以巩固已学过的知识,同时可以了解一些新的知识,来拓宽自己的视野;

而且编写程序应该尽量写注释,使读者能理解,同时程序应清晰,简洁。

附录:

程序清单

#include<

stdio.h>

stdlib.h>

math.h>

intscore=0;

/*全局变量来记录答对的题数(分数)*/

voidadd(void)/*两数相加*/

{

intx,y,z;

x=rand()%100;

/*产生随机数*/

y=rand()%100;

printf("

%d+%d=\n"

x,y);

请输入结果:

"

);

scanf("

%d"

&

z);

/*输入正确的结果*/

if(z==(x+y))/*判断输入的结果是否正确*/

{score++;

正确!

\n"

}

else

{printf("

错误!

\n%d+%d=%d\n"

x,y,x+y);

}

voidjianfa(void)/*两数相减*/

if(x<

y)

z=y;

y=x;

x=z;

/*交换两个数*/

%d-%d=\n"

if(z==(x-y))/*判断输入的结果是否正确*/

\n%d-%d=%d\n"

x,y,x-y);

voidmil(void)/*两数相乘*/

%d*%d=\n"

if(z==(x*y))/*判断输入的结果是否正确*/

else

\n%d*%d=%d\n"

x,y,x*y);

voiddivd(void)/*两数相除*/

intx,y;

floatz;

while(!

{

/*判断y是否为零*/

%d/%d=\n"

%f"

if(fabs(z-(float)x/y)<

0.01)/*判断输入的结果是否正确*/

\n%d/%d=%.2f\n"

x,y,(float)x/y);

voidmain()

{

intn,m;

请输入题数"

n);

while(n--)

do

m=(unsigned)rand()%5;

/*随机产生m,来随机产生题*/

}while(!

m);

/*判断m是否在1——4这个范围内*/

switch(m)

case1:

add();

break;

case2:

jianfa();

case3:

mil();

case4:

divd();

最后的得分是:

score);

二、通讯录管理系统

1.题目要求

主要功能:

制作一个通讯录程序,该程序具有查找、添加、修改、删除、显示、导入、保存等功能。

通讯录可以包括:

姓名,电话,地址,电子邮箱等信息,但不限于以上信息。

模块设计参考:

Ø

第一个模块——主函数main()的功能是:

根据选单的选项调用各函数,并完成相应的功能。

第二个模块——Menu()的功能是:

显示英文提示菜单。

第三个模块——Quit()的功能是:

退出选单。

第四个模块——Create()的功能是:

创建新的通讯录。

第五个模块——Add()的功能是:

在通讯录的末尾,写入新的信息,并返回选单。

第六个模块——Find()的功能是:

查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。

第七个模块——Alter()的功能是:

修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。

第八个模块——Delete()的功能是:

删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。

第九个模块——List()的功能是:

显示通讯录中的所有记录。

第十个模块——Import()的功能是:

从磁盘文件上导入记录到通讯录。

第十一个模块——Save()的功能是:

保存通讯录中的所有记录到磁盘文件上。

1.1问题提出

本人设计的程序是通讯录管理系统,用来查找、添加、修改、删除、显示、导入、保存通讯录中的信息。

循环、函数、选择、全局变量、结构体数组、goto语句、对文件进行操作。

(1)调用主菜单函数,打印菜单;

(2)建立通讯录信息,每个信息包括:

姓名、电话号码、地址、邮箱;

(3)保存到文件中;

(4)查找结构体数组中的通讯录信息;

(5)向结构体中添加信息;

(6)删除结构体数组中的通讯录信息:

(7)修改结构体数组中的通讯录信息;

(8)显示结构体中的信息;

(9)向文件中导入磁盘文件中的信息;

请输入选项编号(1~9)

1——创建信息

2——添加信息

3——查找信息

4——修改信息

5——删除信息

6——显示信息

7——导入信息

8——保存信息

9——退出

2、第一个是输入1,创建通讯录信息;

3、根据所选菜单编执行相应功能;

intMenu(void)

函数Menu()把菜单的界面显示在显示器上,该函数有返回值,没有参数

3)说明:

执行该程序后,返回一个值,作为switch()语句中的表达式,选择相对应的语句;

voidCreate(void)

2)功能:

往结构体数组中输入信息,同时将信息存入文件中,该函数没有返回值,没有参数;

inti;

整形变量,作为循环用的;

FILE*fp;

用来指向文件的;

intn;

n作为全局变量,来控制人数的输入,同时统计结构体数组中的人数;

执行该程序后,结构体数组和文件中都有信息;

往结构体数组中添加信息,同时将信息存入文件中、输出到显示屏上,该函数没有返回值,没有参数;

执行该程序后,结构体数组和文件中都有新的信息;

voidFind(void)

在结构体数组中查找某元素中成员的名字是否与name相等?

若相等,

输出该人的所有信息;

若不相等,输出没有找到,该函数没有返回值,没有参数;

charname[20]输入字符串;

5..1)函数原形:

voidAlter(void)

修改结构体数组中的信息,该函数没有返回值,没有参数;

在结构体数组中查找名字为name的元素,并对该元素进行修改。

若没有,输出无此人;

6..1)函数原形:

voidDelete(void)

删除名字为name的记录,该函数没有返回值,没有参数;

inti,j;

执行该程序后,结构体数组没有信息,同时将删除的信息输出到显示屏上;

7..1)函数原形:

voidList(void)

将结构体数组中的信息输出到显示屏上,该函数没有返回值,没有参数;

8..1)函数原形:

voidImport(void)

将磁盘文件上的信息导入到文件中,该函数没有返回值,没有参数;

FILE*fp1,*fp2;

执行该程序后,通讯录文件中包含磁盘文件;

9..1)函数原形:

voidSave(void)

将结构体数组中的信息存入文件中,该函数没有返回值,没有参数;

10..1)函数原形:

voidQuit(void)

退出整个程序;

1程序调试情况:

本题是一个比较大的程序,进行了分工合作,为了使每个函数便于检测,把每个函数编成一个文件,容易查找错误以及改正;

但不会连接多个文件,查资料和请教老师,终于会把各个文件连接在一起。

于是用一个文件代表一个模块;

运行时发现后面的数据会覆盖前面的数据,为了解决这个问题,定义了一个全局变量,来统计结构体数组中的人数,用extern将其拓展到其他文件中,使数据之间不互相覆盖。

同时,导入文件是用“w+”打开文件会清除原有的信息,因此用“r”方式打开文件,而通讯录是以文件的形式存在的,再导入到文件中去时,应先保存,后倒入;

导入时用“a+”的方式。

2程序运行情况:

编译连接后,运行时屏幕上显示菜单选项,输入1,接着要输入人数,如3,输入3个人的信息:

如abcd,efgh,ijkl,接着选择其他功能,如2,添加信息,如qazw,输出qazw,接着再选择其他功能,如3,输入要查找的人的姓名,如a,输出他的信息;

接着再选择其他功能,如4,输入要修改的人的姓名,如e,输入要修改的信息,如qwe;

接着再选择其他功能,如5,输入要删除的人的姓名,如a,输出删除的人的信息;

接着再选择其他功能,如6,输出的结果为:

eqwe,ijkl,qazw;

接着选择8保存功能,输出保存成功,然后选择导入功能即7,输出导入成功,最后选择推出功能即9,结束本次循环。

对于多模块的程序,分工合作是比较有利的,可以最大限度的利用资源,提高效率,用文件来管理模块,易于检查错误和改正错误;

同时用文件来管理模块可以被其他程序利用且易于分工合作。

main.c(文件1)

intm,n;

voidmain()/*调用各函数*/

externvoidQuit();

/*对调用函数的声明*/

externvoidCreate();

externvoidAdd();

externintMenu();

externvoidFind();

externvoidAlter();

externvoidDelete();

externvoidList();

externvoidImport();

externvoidSave();

L:

m=Menu();

/*调用主菜单函数*/

if(m<

=0||m>

=10)printf("

Error.\n"

/*判断输入的数是否正确*/

Create();

Add();

Find();

Alter();

case5:

Delete();

case6:

List();

case7:

Import();

case8:

Save();

case9:

Quit();

if(m!

=9)gotoL;

/*继续执行*/

菜单.c(文件2)

externm;

intMenu()/*显示英文提示菜单*/

{printf("

★☆★Welcome!

★☆★\n"

******MAIN-MENU********\n"

***Create--->

1***\n"

***Add------>

2***\n"

***Find----->

3***\n"

***Alter---->

4***\n"

***Delete--->

5***\n"

***List----->

6***\n"

***Import--->

7***\n"

***Save----->

8***\n"

***Quit----->

9***\n"

******●●●●●*******\n"

Pleasechoosenumber:

returnm;

创建.c(文件3)

structxunlu/*定义一个结构体数组*/

{charname[20];

charphnum[20];

charaddress[50];

charemail[30];

}p[100];

voidCreate()/*创建通讯录*/

{externn;

FILE*fp;

inti;

if((fp=fopen("

通讯录.txt"

"

w+"

))==NULL)/*以读写的方式打开文件*/

can'

topenfile\n"

exit(0);

}

Inputpeople'

snumber"

for(i=0;

i<

n;

i++)

{printf("

namephnumaddressemail:

%s%s%s%s"

p[i].name,p[i].phnum,p[i].address,p[i].email);

fprintf(fp,"

%s%s%s%s\n"

/*将输入的信息出入文件中*/

fclose(fp);

添加.c(文件4)

charname[20];

voidAdd()/*写入信息*/

a+"

))==NULL)/*以追加的方式打开文件*/

Inputformat:

name,phnum,address,email\n"

p[n].name,p[n].phnum,p[n].address,p[n].email);

/*输入添加的信息*/

%s%s%s%s\n"

Addinformation:

/*输出添加的信息*/

n=n+1;

查找.c(文件5)

string.h>

voidFind()/*查找信息*/

externn;

Inputfindname:

%s"

name);

/*输入查找姓名*/

f

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

当前位置:首页 > PPT模板 > 其它模板

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

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