[工学]C语言实训上机任务指导书.doc_第1页
[工学]C语言实训上机任务指导书.doc_第2页
[工学]C语言实训上机任务指导书.doc_第3页
[工学]C语言实训上机任务指导书.doc_第4页
[工学]C语言实训上机任务指导书.doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计实训指导书计算机基础教研室编实训项目一:儿童100以内的加减乘除法游戏训练1一、目的和要求1二、试验性质1三、实验内容1四、实验步骤1五、分析与讨论2实训项目二:数制转换系统7一、目的和要求7二、试验性质7三、实验内容7四、实验步骤7五、分析与讨论8实训项目三:倒计时10一、目的和要求10二、试验性质10三、实验内容11四、实验步骤11五、分析与讨论11六、程序清单12实训项目四:学生成绩管理系统13一、目的和要求13二、试验性质14三、实验内容14四、试验步骤14五、分析讨论14实训项目五:通讯录18一、目的和要求18二、试验性质18三、实验内容18四、试验步骤18五、分析与讨论19实训项目六:后缀表达式求值,表达式求值25一、目的和要求25二、试验性质25三、实验内容25四、实验步骤26五、分析与讨论26实训项目七: 迷 宫33一、目的和要求33二、试验性质33三、实验内容33四、实验步骤34五、分析与讨论实训项目一:儿童100以内的加减乘除法游戏训练一、目的和要求1、 通过实训掌握本学期所学C语言知识。2、 编辑一个具有加减乘除基本功能的计算器程序。3、 对系统进行功能模块分析、控制模块分析,结论正确。4、 更加深入掌握C语言;5、 熟练的掌握函数的定义,调用,说明的方法;二、试验性质 自主设计实验三、实验内容1)通过菜单选择加减乘除。2)100(或10)以上的两个整数通过rand函数随即产生。3)计算减法时,不能出现结果为负数。4)答对提示恭喜,答错续答,答错三次给出正确答案等等。四、实验步骤1、 划分程序功能模块;儿童100以内的加减乘除法的游戏训练加法训练减法训练乘法训练除法训练2、 写程序实现算法;3、 画出程序流程图;4、 定义结构体,预处理定义,加法函数,减法函数,乘法函数,除法函数。5、 编译,连接和运行程序。五、分析与讨论1、记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论对策成功或失败的原因。2、总结程序的结构和书写规则。程序源代码:#includestdio.h#includeconio.h#includestring.h#includestdlib.h#include math.hvoid addition();void subtraction();void multiplication();void division();void main() int choice; for(;) system(cls); printf(n-n); puts( 儿童加减乘除算术游戏); puts( 1 加法运算 2 减法运算); puts( 3 乘法运算 4 除法运算); puts( 0 退出); printf(-); printf(n请选择(0-4):); scanf(%d,&choice); puts(-); switch (choice) case 0: exit(1); case 1: addition(); printf(n按任一键继续!); getch();break; case 2: subtraction(); printf(n按任一键继续!); getch();break; case 3: multiplication(); printf(n按任一键继续!); getch();break; case 4: division(); printf(n按任一键继续!); getch();break; default: printf(输入错误!按任一键请重新输入!);getch();continue; putchar(n);void addition()int x,y,z,w,i,j=0,k=0;int choice;char c; system(cls); printf(n-n); puts( 儿童加法算术游戏); puts( 1 10以内整数加法运算); puts( 2 100以内整数加法运算); puts( 0 退出); printf(-); printf(n请选择(0-2):); scanf(%d,&choice); puts(-);switch (choice) case 0: exit(1); case 1: i=10;break; case 2: i=50;break; default: printf(输入错误!按任一键请重新输入!);getch(); putchar(n); for(;) system(cls); x=rand()%i; y=rand()%i; if(x!=0&y!=0) z=x+y; printf(n%d+%d=?请回答:,x,y); scanf(%d,&w); if(w=z) j+;printf(n恭喜你!答对了!继续吗(Y/N)?); else k+;printf(n对不起!你答错了!正确答案是:%d+%d=%d!继续吗(Y/N)?,x,y,z); scanf(%c,&c);scanf(%c,&c); system(cls); if(c=n|c=N) printf(n您的正确率是:%.0f,(float)j/(float)(j+k)*100); break; void subtraction()int x,y,z,w,i,j=0,k=0;int choice;char c; system(cls); printf(n-n); puts( 儿童减法算术游戏); puts( 1 10以内整数减法运算); puts( 2 100以内整数减法运算); puts( 0 退出); printf(-); printf(n请选择(0-2):); scanf(%d,&choice); puts(-);switch (choice) case 0: exit(1); case 1: i=10;break; case 2: i=50;break; default: printf(输入错误!按任一键请重新输入!);getch(); putchar(n); for(;) system(cls); x=rand()%i; y=rand()%i; if(xy&y!=0) z=x-y; printf(n%d-%d=?请回答:,x,y); scanf(%d,&w); if(w=z) j+;printf(n恭喜你!答对了!继续吗(Y/N)?); else k+;printf(n对不起!你答错了!正确答案是:%d-%d=%d!继续吗(Y/N)?,x,y,z); scanf(%c,&c);scanf(%c,&c); system(cls); if(c=n|c=N) printf(n您的正确率是:%.0f,(float)j/(float)(j+k)*100); break; void multiplication()int x,y,z,w,i,j=0,k=0;int choice;char c; system(cls); printf(n-n); puts( 儿童乘法算术游戏); puts( 1 10以内整数乘法运算); puts( 2 100以内整数乘法运算); puts( 0 退出); printf(-); printf(n请选择(0-2):); scanf(%d,&choice); puts(-);switch (choice) case 0: exit(1); case 1: i=10;break; case 2: i=50;break; default: printf(输入错误!按任一键请重新输入!);getch(); putchar(n); for(;) system(cls); x=rand()%i; y=rand()%i; if(x!=0&x!=1&y!=0&y!=1) z=x*y; printf(n%d%d=?请回答:,x,y); scanf(%d,&w); if(w=z) j+;printf(n恭喜你!答对了!继续吗(Y/N)?); else k+;printf(n对不起!你答错了!正确答案是:%d%d=%d!继续吗(Y/N)?,x,y,z); scanf(%c,&c);scanf(%c,&c); system(cls); if(c=n|c=N) printf(n您的正确率是:%.0f,(float)j/(float)(j+k)*100); break; void division()int x,y,z,w,i,j=0,k=0;float s;int choice;char c; system(cls); printf(n-n); puts( 儿童除法算术游戏); puts( 1 10以内整数除法运算); puts( 2 100以内整数除法运算); puts( 0 退出); printf(-); printf(n请选择(0-2):); scanf(%d,&choice); puts(-);switch (choice) case 0: exit(1); case 1: i=10;break; case 2: i=50;break; default: printf(输入错误!按任一键请重新输入!);getch(); putchar(n); for(;) system(cls); x=rand()%i; y=rand()%i; if(x!=0&y!=0&y!=1) if( (float)x/(float)y=2| (float)x/(float)y=3| (float)x/(float)y=4| (float)x/(float)y=5| (float)x/(float)y=6| (float)x/(float)y=7| (float)x/(float)y=8| (float)x/(float)y=9| (float)x/(float)y=1) z=x/y; printf(n%d/%d=?请回答:,x,y); scanf(%d,&w); if(w=z) j+;printf(n恭喜你!答对了!继续吗(Y/N)?); else k+;printf(n对不起!你答错了!正确答案是:%d/%d=%d!继续吗(Y/N)?,x,y,z); scanf(%c,&c);scanf(%c,&c); system(cls); if(c=n|c=N) printf(n您的正确率是:%.0f,(float)j/(float)(j+k)*100); break; 实训项目二:数制转换系统一、目的和要求课程实训为学生们提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识与理论实践有机的相结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。二、试验性质 自主设计实验三、实验内容1先将十进制数转换成八进制,二进制,十六进制。 2再输入一个二进制数转换成十进制。 3再将八进制转换成十进制 . 4输入十六进制转换成十进制.四、实验步骤1划分程序功能模块数制转换十进制转换二进制十进制转换八进制十进制转十六进制二进制转换十进制八进制转换十进制十六进制转十进制a) 写程序实现算法;b) 画出程序流程图;c) 定义结构体,宏定义,菜单函数,输入函数,载入文件函数,编写主函数。编译,连接和运行程序五、分析与讨论1、记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论对策成功或失败的原因。2、总结程序的结构和书写规则。附录:一、程序流程图数制转换十进制转换二进制十进制转换八进制十进制转十六进制二进制转换十进制八进制转换十进制十六进制转十进制二、程序清单#include stdio.h#includestdlib.hvoid ten_eight();void Conversion();void ten_sixteen();void sele();#define STACKMAX 100typedef struct stacknode int data;struct stacknode *next;stacknode;typedef struct stacknode *top;linkstack;void Conversion()linkstack s;int x,n;scanf(%d,&n);s.top=NULL;do x=n%2;n=n/2;stacknode *p=new stacknode;p-next=s.top;s.top=p;s.top-data=x;while(n);printf(ntt转换后的二进制数值为:);while(s.top)printf(%d,s.top-data);stacknode* p=s.top;s.top=s.top-next;delete p; getchar();system(cls);sele();void main()linkstack *s=new linkstack;int i=1,j=1,n;s-top=NULL;while(i)printf(ntt数制转换:);/printf(ntt请输入一个十进制正整数:);sele();break;void ten_eight()int a;scanf(%d,&a);printf(n%o,a);getchar();system(cls);sele();void ten_sixteen()int a;scanf(%d,&a);printf(n%x,a);getchar();getchar();system(cls);sele();void sele()int y;printf(n 1 -十到二);printf(n 2 -十到八);printf(n 3 -十到十六);scanf(%d,&y);switch(y) case 1: Conversion();break; case 2: ten_eight(); break; case 3: ten_sixteen(); break; default: printf(输入错误!n);实训项目三:倒计时一、目的和要求锻炼动手和动脑能力,独立实践的能力,还有团队合作的能力,将课本上的理论知识与实践能力有机的的结合起来,锻炼分析解决实际问题的能力。提高适应实际,实践编程的能力。二、试验性质 自主设计实验三、实验内容1、 通过实训掌握本学期所学C语言知识;2、 编写出一个具有计算功能的倒计时;3、 实现倒计时的输入,输出,计算,调用函数,循环等功能;4、 更加深入掌握C语言实际操作,使理论与实际很好结合;5、 熟练的掌握函数的定义,调用,说明的方法;熟练掌握对文件的操作,通过printf和scanf函数对文件进行读写操作四、实验步骤1.划分程序功能模块;倒计时请输入考试时间请输入今天时间调用函数计算该年天数 计算秒差计算分差计算时差计算考试倒计时输出倒计时2.写程序实现算法例如:输入考试时间:2008年06月18日15时44分21秒 输入当日时间:2008年05月10日24时26分28秒 2008不是闰年,故2008年有365天,6月有30天,5月有31天; 2126;43-26=17; 1510;17-10=7;综上距离考试时间有7天17时17分43秒3.画出程序流程图;4.定义结构体,输入函数,菜单函数,载入文件函数,编写主函数,编译,连接和运行程序。五、分析与讨论1、记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论对策成功或失败的原因。2、总结程序的结构和书写规则。程序功能模块示意图:倒计时请输入考试时间请输入今天时间调用函数计算该年天数 计算秒差计算分差计算时差计算考试倒计时输出倒计时六、程序清单/*显示考试倒计时*/*郭凯*/#include stdio.hint pr(int,int,int);/*函数说明*/void main () int year,month,day,hour,minute,second;/*定义变量*/ int gk_year,gk_month, gk_day,gk_hour,gk_minute,gk_second; int j, h,k1,k2,k3=0;/*给变量赋初值*/ printf($n); printf(n请输入您的考试时间(年,月,日,时,分,秒):); /*提示用户输入考试时间*/ scanf(%d%d%d%d%d%d,&year,&month,&day,&hour,&minute,&second); /*接收分别输入到各个变量*/ printf(n请输入您现在的时间(年,月,日,时,分,秒):); /*提示用户输入今日时间*/scanf(%d%d%d%d%d%d,&gk_year,&gk_month,&gk_day,&gk_hour,&gk_minute,&gk_second); /*接收输入到各个变量*/ k1=pr(year,month,day);/*调用函数*/ k2=pr(gk_year,gk_month,gk_day);/*调用函数*/ for(j=gk_year+1;j=gk_second)/*如果second大于或等于gk_second*/second=second-gk_second; elsesecond=60+second-gk_second;minute=minute-1; if(minute=gk_minute)/*如果minute大于或等于gk_minute*/minute=minute-gk_minute; elseminute=60+minute-gk_minute;hour=hour-1; if(hour=gk_hour)/*如果hour大于或等于gk_hour*/hour=hour-gk_hour; printf(n距离您的考试时间还有:%d天%d小时%d分%d秒!n,h,hour,minute,second);printf(n$); elsehour=24+hour-gk_hour;h=h-1;printf(n距离您的考试时间还有:%d天%d小时%d分%d秒!n,h,hour,minute,second);printf(n$);int pr(int year,int month,int day)/*定义函数*/int j,days=day;/*定义变量*/int month_day=0,31,28,31,30,31,30,31,31,30,31,30,31;/*初始化*/ if(year%400=0|year%4=0&year%100!=0)month_day2=29; for(j=1;jmonth;j+) days+=month_dayj;return days;实训项目四:学生成绩管理系统一、目的和要求6、 通过实训掌握本学期所学C语言知识7、 编写出一个具有基本功能的学生成绩处理系统 8、 更加深入掌握C语言9、 熟练的掌握函数的定义,调用,说明的方法10、 熟练掌握对文件的操作.11、 掌握数组作为函数参数的程序设计方法。12、 掌握模块化程序设计的方法。二、试验性质 自主设计性试验。三、实验内容 实现学生成绩处理系统的录入成绩、计算总评、保存成绩、分段成绩、查询成绩、退出等功能。1、输入每个学生的姓名、平时成绩、考试成绩 2、计算总评成绩 3、查询任一学生的成绩情况 4、将学生成绩分段 5、将总评成绩排序四、试验步骤1、划分程序功能模块;学生成绩处理系统录入成绩计算成绩查询成绩排序程序分段成绩退出2、 写程序实现算法;3、 画出程序流程图;4、 定义函数,菜单函数,输入函数,排序函数,总评函数,编写主函数。5、 编译,连接,调试函数和运行程序。五、分析讨论1、各子功能采用函数设计方法实现。2、总结一下测试条件循环结构的一般方法。程序源代码:#includestdio.h#includestring.h#define size 300int accept_data(char name20,int score3);void subsection(int score3,int grade,int sum);void show_data(char name20,int score3,int grade,int sum);void query(char name20,int score3,int sum);void paixu(int score3,int sum); void jiemian(); void main()int p,sum,x;int grade6=0;int scoresize3;char namesize20; for(p=0;p=size;p+) jiemian(); printf(请选择操作1 -4n); scanf(%d,&x); if(x=1)sum=accept_data(name,score); else if(x=2)subsection(score,grade,sum); else if(x=3) show_data(name,score,grade,sum); else if(x=4) query(name,score,sum); else if(x=5) paixu(score,sum); else if(x=7) break; void jiemian()printf(*n);printf(*- 学生成绩管理系统 -*n);printf(*-1输入信息 2计算总评 -*n);printf(*-3输出显示 4查寻成绩-*n); printf(*-7退出程序 5 给成绩排序-*n);printf(*-*n);printf(*- 由4组制造 -*n);printf(*-*n);printf(*n); int accept_data(char name20,int score3)int i=0,sum=0,flag,temp;while(isize) printf(输入你的名字(以*结束):n); scanf(%s,namei);if(strcmp(namei,*)=0)sum=i; break;printf(输入你的平时和考试成绩:);flag=1;while(flag)scanf(%d%d,&scorei0,&scorei1);if(scorei0=0 & scorei1=0)flag=0;else printf(输入的分数不正确:);temp=(int)(.3*scorei0+.7*scorei1);scorei2=(int)temp;i+;return sum;void subsection(int score3,int grade,int sum)int i,s;for(i=0;isum;i+)s=scorei2/10;switch(s)case 0:case 1:case 2:case 3:case 4:case 5:grade2=grade2+1;break;case 6:case 7:grade3=grade3+1;break;case 8:grade4=grade4+1;break;case 9:case 10:grade5=grade5+1;break;for(i=2;i6;i+)printf(这里有%d个学生的等级是 %dn,gradei,i);void show_data(char namesize20,int scoresize3,int grade,int sum)int i,j;for(i=0;isum;i+)printf(%20s,namei);for(j=0;j3;j+)printf(%4d,scoreij);printf(n);printf(n %d,sum);void query(char name20,int score3,int sum)char temp_name80;int i;printf(输入你要查寻的姓名:n);scanf(%s,temp_name);for(i=0;isum;i+)if(strcmp(namei,temp_name)=0)printf(姓名是%s 总评是%d n,namei,scorei2);break;void paixu(int score3,int sum)int i,min=0,p;for(i=0;i=sum;i+)if(scorei2=scoremin2)p=scoremin2;scoremin2=scorei2;scorei2=p;for(i=1;i=sum;i+)printf(排序后的成绩是%dn,scorei2);实训项目五:通讯录一、目的和要求1、通过实训掌握本学期所学C语言知识。2、编写出一个具有基本功能的通讯录。3、更加深入掌握C语言;4、熟练的掌握函数的定义,调用,说明的方法。二、试验性质 自主设计试验。三、实验内容 1、编写出一个具有基本功能的通讯录。2、实现通讯录的记录添加,删除,查询,编辑,显示,保存,退出等功能。四、试验步骤 1、划分程序功能模块;通讯录输入密码新增客户删除客户查询信息修改信息浏览信息查看预置退出2、写程序实现算法;3、画出程序流程图;4、定义结构体,菜单函数,输入函数,编写主函数。编译,连接和运行程序。五、分析与讨论1、注意实现各个模块的功能编辑,设计程序的整体组装和各个功能子函数的衔接。形参和实参之间的传递,调用。以及各部分功能之间的协调运行。比如删除记录函数里删除记录后,再次调用显示记录函数时末尾记录始终与倒数第二条记录相同,就可以用将空值赋给最后一条记录来解决这一问题。2、请调试下面参考程序:程序代码#include #include #includeint jiemian(); int i=0; struct xinxi char name30; char add50; char hao15; kehu50; void jiaohuan(struct xinxi x,struct xinxi y) strcpy(,); strcpy(x.add,y.add); x.hao15=y.hao15; void help()printf(我们会帮助你n);printf(匪警 110 n消防 119n急救 120n);printf(按任意键返回主菜单n);getchar();system(cls);jiemian(); void jieshou() printf(-n); printf(* 添加新客户信息 *n); printf(-n); printf(n请输入客户名称:); fflush(stdin); scanf(%s,); printf(n请输入客户地址:); fflush(stdin); scanf(%s,kehui.add); printf(n请输入客户电话号码:); fflush(stdin); scanf(%s,&kehui.hao); printf( 客户信息已添加.); i+; void xiugai() int j; char na30; printf(-n); printf(* 修改客户信息 *n); printf(-n); printf(请输入要修改客户的名称:); fflush(stdin); scanf(%s,na); for(j=0;ji;j+) if(strcmp(na,)=0) printf(以下记录将被修改:n); printf( 客户名称=%sn,); printf( 客户地址=%sn,kehuj.add); printf( 电话号码=%sn,kehuj.hao); printf(请输入新的数据:n); printf(n请输入客户名称:); fflush(stdin); scanf(%s,); printf(n请输入客户地址:); fflush(stdin); scanf(%s,kehuj.add); printf(n请输入客户电话号码:); fflush(stdin); scanf(%s,kehuj.hao); printf( 该记录已被修改.); void shanchu() int j,k; char na30; printf(-n); printf(* 删除客户信息 *n); printf(-n); printf(请输入要删除客户的名称:); fflush(stdin); scanf(%s,na); for(j=0;ji;j+) if(strcmp(na,)=0) printf(以下记录将被删除:n); printf( 客户名称=%sn,); printf( 客户地址=%sn,kehuj.add); printf( 电话号码=%sn,kehuj.hao); for(k=j;ki-1;k+) jiaohuan(kehuk,kehuk+1); printf( 该记录已被删除.); i-; void dcha() int j; char dc15; printf(-n); pr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论