实验报告模板2.docx
- 文档编号:4343846
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:51
- 大小:207.79KB
实验报告模板2.docx
《实验报告模板2.docx》由会员分享,可在线阅读,更多相关《实验报告模板2.docx(51页珍藏版)》请在冰豆网上搜索。
实验报告模板2
内蒙古工业大学信息工程学院
实验报告
课程名称:
《计算机基础训练》
实验名称:
小学算术运算测试
实验类型:
验证性□综合性□设计性
实验室名称:
校计算中心机房
班级:
计10-2学号:
201020201063
姓名:
徐杰组别:
同组人:
丁亚楠成绩:
实验日期:
2011-3-7
实验报告撰写要求
一、实验前用预习报告纸撰写预习报告,预习报告包括以下内容
1.实验目的
2.实验用仪器设备、器材或软件环境
3.实验原理、方案设计、程序框图、预编程序等
4.实验过程中需要记录的实验数据表格
二、实验过程中,要认真观察,仔细记录
三、完成实验后用实验报告纸撰写实验报告,包括以下内容
1.仪器设备型号及编号
2.实验器材或软件环境
3.实验步骤、程序调试方法
4.实验数据处理及结果分析
5.实验中存在的问题
6.体会及思考题
四、报告撰写时,要求格式规范、书写整齐
报告成绩:
指导教师审核(签名):
2011年3月8日
一、小学算术运算测试(math.c)
1题目与要求
功能要求:
制作一个可供小学数学四则运算程序,能根据输入题数出题,判断做题是否正确,最后计算分数。
1.1问题提出
本人设计的程序是一个小学算术运算测试,用来出题让学生回答。
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)功能:
产生的随机数进行相减;
3)变量及类型:
intx,y;整形变量,产生的随机数赋给x,y;
intz;整形变量,用户输入的数;
4)说明:
执行该程序是,用x减去y,先判断x,y的大小,若x 3..1)函数原形: voidmil(void) 2)功能: 产生的随机数进行相乘; 3)变量及类型: intx,y;整形变量,产生的随机数赋给x,y; intz;整形变量,用户输入的数; 4)说明: 执行该程序后,判断是否正确,正确则对score进行加1,错误则score不变; 4..1)函数原形: voiddivd(void) 2)功能: 产生的随机数进行相除; 3)变量及类型: intx,y;整形变量,产生的随机数赋给x,y; intz;整形变量,用户输入的数; 4)说明: 执行该程序是,首先判断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 #include #include intscore=0;/*全局变量来记录答对的题数(分数)*/ voidadd(void)/*两数相加*/ { intx,y,z; x=rand()%100;/*产生随机数*/ y=rand()%100; printf("%d+%d=\n",x,y); printf("请输入结果: "); scanf("%d",&z);/*输入正确的结果*/ if(z==(x+y))/*判断输入的结果是否正确*/ {score++; printf("正确! \n"); } else {printf("错误! \n"); printf("\n%d+%d=%d\n",x,y,x+y); } } voidjianfa(void)/*两数相减*/ { intx,y,z; x=rand()%100; y=rand()%100;/*产生随机数*/ if(x { z=y;y=x;x=z;/*交换两个数*/ } printf("%d-%d=\n",x,y); printf("请输入结果: "); scanf("%d",&z);/*输入正确的结果*/ if(z==(x-y))/*判断输入的结果是否正确*/ {score++; printf("正确! \n"); } else {printf("错误! \n"); printf("\n%d-%d=%d\n",x,y,x-y); } } voidmil(void)/*两数相乘*/ { intx,y,z; x=rand()%100;/*产生随机数*/ y=rand()%100; printf("%d*%d=\n",x,y); printf("请输入结果: "); scanf("%d",&z);/*输入正确的结果*/ if(z==(x*y))/*判断输入的结果是否正确*/ {score++; printf("正确! \n"); } else {printf("错误! \n"); printf("\n%d*%d=%d\n",x,y,x*y); } } voiddivd(void)/*两数相除*/ { intx,y; floatz; x=rand()%100;/*产生随机数*/ y=rand()%100; while(! y) { y=rand()%100;/*判断y是否为零*/ } printf("%d/%d=\n",x,y); printf("请输入结果: "); scanf("%f",&z);/*输入正确的结果*/ if(fabs(z-(float)x/y)<0.01)/*判断输入的结果是否正确*/ {score++; printf("正确! \n"); } else {printf("错误! \n"); printf("\n%d/%d=%.2f\n",x,y,(float)x/y); } } voidmain() { intn,m; printf("请输入题数"); scanf("%d",&n); while(n--) { do { m=(unsigned)rand()%5;/*随机产生m,来随机产生题*/ }while(! m);/*判断m是否在1——4这个范围内*/ switch(m) { case1: add();break; case2: jianfa();break; case3: mil();break; case4: divd();break; } } printf("最后的得分是: %d",score); } 二、通讯录管理系统 1.题目要求 主要功能: 制作一个通讯录程序,该程序具有查找、添加、修改、删除、显示、导入、保存等功能。 通讯录可以包括: 姓名,电话,地址,电子邮箱等信息,但不限于以上信息。 模块设计参考: Ø第一个模块——主函数main()的功能是: 根据选单的选项调用各函数,并完成相应的功能。 Ø第二个模块——Menu()的功能是: 显示英文提示菜单。 Ø第三个模块——Quit()的功能是: 退出选单。 Ø第四个模块——Create()的功能是: 创建新的通讯录。 Ø第五个模块——Add()的功能是: 在通讯录的末尾,写入新的信息,并返回选单。 Ø第六个模块——Find()的功能是: 查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。 Ø第七个模块——Alter()的功能是: 修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。 Ø第八个模块——Delete()的功能是: 删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。 Ø第九个模块——List()的功能是: 显示通讯录中的所有记录。 Ø第十个模块——Import()的功能是: 从磁盘文件上导入记录到通讯录。 Ø第十一个模块——Save()的功能是: 保存通讯录中的所有记录到磁盘文件上。 1.1问题提出 本人设计的程序是通讯录管理系统,用来查找、添加、修改、删除、显示、导入、保存通讯录中的信息。 1.2本程序涉及的知识点 循环、函数、选择、全局变量、结构体数组、goto语句、对文件进行操作。 1.3功能要求 (1)调用主菜单函数,打印菜单; (2)建立通讯录信息,每个信息包括: 姓名、电话号码、地址、邮箱; (3)保存到文件中; (4)查找结构体数组中的通讯录信息; (5)向结构体中添加信息; (6)删除结构体数组中的通讯录信息: (7)修改结构体数组中的通讯录信息; (8)显示结构体中的信息; (9)向文件中导入磁盘文件中的信息; 2功能设计 2.1算法设计 利用switch语句设计如图1所示的主菜单: 请输入选项编号(1~9) 1——创建信息 2——添加信息 3——查找信息 4——修改信息 5——删除信息 6——显示信息 7——导入信息 8——保存信息 9——退出 2、第一个是输入1,创建通讯录信息; 3、根据所选菜单编执行相应功能; 2.2部分模块流程图 主函数 3程序代码设计 1..1)函数原形: intMenu(void) 2)功能: 函数Menu()把菜单的界面显示在显示器上,该函数有返回值,没有参数 3)说明: 执行该程序后,返回一个值,作为switch()语句中的表达式,选择相对应的语句; 2..1)函数原形: voidCreate(void) 2)功能: 往结构体数组中输入信息,同时将信息存入文件中,该函数没有返回值,没有参数; 3)变量及类型: inti;整形变量,作为循环用的; FILE*fp;用来指向文件的; intn;n作为全局变量,来控制人数的输入,同时统计结构体数组中的人数; 4)说明: 执行该程序后,结构体数组和文件中都有信息; 3..1)函数原形: voidadd(void) 2)功能: 往结构体数组中添加信息,同时将信息存入文件中、输出到显示屏上,该函数没有返回值,没有参数; 3)变量及类型: FILE*fp;用来指向文件的; intn;n作为全局变量,来控制人数的输入,同时统计结构体数组中的人数; 4)说明: 执行该程序后,结构体数组和文件中都有新的信息; 4..1)函数原形: voidFind(void) 2)功能: 在结构体数组中查找某元素中成员的名字是否与name相等? 若相等, 输出该人的所有信息;若不相等,输出没有找到,该函数没有返回值,没有参数; 3)变量及类型: inti;整形变量,作为循环用的; charname[20]输入字符串; 5..1)函数原形: voidAlter(void) 2)功能: 修改结构体数组中的信息,该函数没有返回值,没有参数; 3)变量及类型: inti;整形变量,作为循环用的; charname[20]输入字符串; 4)说明: 在结构体数组中查找名字为name的元素,并对该元素进行修改。 若没有,输出无此人; 6..1)函数原形: voidDelete(void) 2)功能: 删除名字为name的记录,该函数没有返回值,没有参数; 3)变量及类型: inti,j;整形变量,作为循环用的; charname[20]输入字符串; 4)说明: 执行该程序后,结构体数组没有信息,同时将删除的信息输出到显示屏上; 7..1)函数原形: voidList(void) 2)功能: 将结构体数组中的信息输出到显示屏上,该函数没有返回值,没有参数; 3)变量及类型: FILE*fp;用来指向文件的; inti;整形变量,作为循环用的; 8..1)函数原形: voidImport(void) 2)功能: 将磁盘文件上的信息导入到文件中,该函数没有返回值,没有参数; 3)变量及类型: FILE*fp1,*fp2;用来指向文件的; 4)说明: 执行该程序后,通讯录文件中包含磁盘文件; 9..1)函数原形: voidSave(void) 2)功能: 将结构体数组中的信息存入文件中,该函数没有返回值,没有参数; 3)变量及类型: inti;整形变量,作为循环用的; FILE*fp;用来指向文件的; 10..1)函数原形: voidQuit(void) 2)功能: 退出整个程序; 4C程序设计总结 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,结束本次循环。 3在程序设计中感想: 对于多模块的程序,分工合作是比较有利的,可以最大限度的利用资源,提高效率,用文件来管理模块,易于检查错误和改正错误;同时用文件来管理模块可以被其他程序利用且易于分工合作。 附录: 程序清单 main.c(文件1) #include intm,n; voidmain()/*调用各函数*/ { externvoidQuit();/*对调用函数的声明*/ externvoidCreate(); externvoidAdd(); externintMenu(); externvoidFind(); externvoidAlter(); externvoidDelete(); externvoidList(); externvoidImport(); externvoidSave(); L: m=Menu();/*调用主菜单函数*/ if(m<=0||m>=10)printf("Error.\n");/*判断输入的数是否正确*/ else switch(m) { case1: Create();break; case2: Add();break; case3: Find();break; case4: Alter();break; case5: Delete();break; case6: List();break; case7: Import();break; case8: Save();break; case9: Quit();break; } if(m! =9)gotoL;/*继续执行*/ } 菜单.c(文件2) #include externm; intMenu()/*显示英文提示菜单*/ {printf("★☆★Welcome! ★☆★\n"); printf("******MAIN-MENU********\n"); printf("***Create--->1***\n"); printf("***Add------>2***\n"); printf("***Find----->3***\n"); printf("***Alter---->4***\n"); printf("***Delete--->5***\n"); printf("***List----->6***\n"); printf("***Import--->7***\n"); printf("***Save----->8***\n"); printf("***Quit----->9***\n"); printf("******●●●●●*******\n"); printf("Pleasechoosenumber: "); scanf("%d",&m); returnm; } 创建.c(文件3) #include #include structxunlu/*定义一个结构体数组*/ {charname[20]; charphnum[20]; charaddress[50]; charemail[30]; }p[100]; voidCreate()/*创建通讯录*/ {externn; FILE*fp; inti; if((fp=fopen("通讯录.txt","w+"))==NULL)/*以读写的方式打开文件*/ { printf("can'topenfile\n");exit(0); } printf("Inputpeople'snumber"); scanf("%d",&n); for(i=0;i {printf("namephnumaddressemail: \n"); scanf("%s%s%s%s",p[i].name,p[i].phnum,p[i].address,p[i].email); fprintf(fp,"%s%s%s%s\n",p[i].name,p[i].phnum,p[i].address,p[i].email); /*将输入的信息出入文件中*/ } fclose(fp); } 添加.c(文件4) #include #include structxunlu/*定义一个结构体数组*/ { charname[20]; charphnum[20]; charaddress[50]; charemail[30]; }p[100]; voidAdd()/*写入信息*/ {externn; FILE*fp; if((fp=fopen("通讯录.txt","a+"))==NULL)/*以追加的方式打开文件*/ { printf("can'topenfile\n");exit(0); } printf("Inputformat: \n"); printf("name,phnum,address,email\n"); scanf("%s%s%s%s",p[n].name,p[n].phnum,p[n].address,p[n].email); /*输入添加的信息*/ fprintf(fp,"%s%s%s%s\n",p[n].name,p[n].phnum,p[n].address,p[n].email); printf("Addinformation: \n"); printf("%s%s%s%s\n",p[n].name,p[n].phnum,p[n].address,p[n].email); /*输出添加的信息*/ n=n+1; fclose(fp); } 查找.c(文件5) #include #include #include structxunlu/*定义一个结构体数组*/ { charname[20]; charphnum[20]; charaddress[50]; charemail[30]; }p[100]; voidFind()/*查找信息*/ { externn; charname[20]; inti; printf("Inputfindname: "); scanf("%s",name);/*输入查找姓名*/ f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告 模板