14级C语言程序设计综合实训任务书指导书.docx
- 文档编号:5884070
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:50
- 大小:112.09KB
14级C语言程序设计综合实训任务书指导书.docx
《14级C语言程序设计综合实训任务书指导书.docx》由会员分享,可在线阅读,更多相关《14级C语言程序设计综合实训任务书指导书.docx(50页珍藏版)》请在冰豆网上搜索。
14级C语言程序设计综合实训任务书指导书
2014级本科C语言程序设计
综合实训任务书-指导书
编制部门:
计算机系编制人:
申时全编制日期:
2014年12月6日
项目编号
C09
项目名称
综合应用实训
训练对象
13软件工程
本科(3)(4)
学时
48
课程名称
C语言程序设计
教材
《C语言程序设计项目化教程》
刘军主编
实训目标
1、掌握选择结构、循环结构程序设计方法;
2、掌握一维数组、二维数组应用程序设计方法
3、掌握结构体、链表应用。
完成一个链表应用程序设计和调试。
4、掌握用函数进行模块化程序设计。
5、掌握文件读写(二进制格式或文本格式化文件)操作。
主要监测点
1、基本实训任务:
共7个项目。
2、扩展实训任务:
包括3个题目,从给定内容至少选做1题。
实施条件
个人计算机,WindowsXP或windows7,安装VC6.0编译开发环境
实训内容
一、基本内容:
1、用结构体表示日期,输入一个日期(年、月、日),计算从输入年的1月1日到输入的日期的总天数days并输出。
2、从键盘输入n(>2),计算斐波那契数列的前n项并按每行10个数据输出。
3、编写程序,生成并输出杨辉三角形(10行)。
4、从键盘输入两个double类型数据啊,a,b,通过调用函数max_ab实现求a与b的最大值输出,并定义函数max_ab。
5、编写程序从键盘输入10个float类型数存入一维数组a中,求这10个数的平均值,然后用函数aver实现平均值计算,输出这10个数以及平均值,要求数组和元素个数作为参数传递。
6、编写程序,从键盘输入10个int类型数,按从小到大顺序进行排序,然后输出。
要求用函数sort()进行排序,用函数input()输入数据,用函数output()输出数据。
7、基于数组存储和函数的一卡通系统设计与实现。
8、基于结构体和文件存储的一卡通系统设计与实现。
二、扩展实训内容(可任选1道完成):
1、基于链表的一卡通系统程序设计。
2、五子棋游戏程序
3、打印日历程序
实施步骤与技术要点
.一、基本内容:
1、用结构体表示日期,输入一个日期(年、月、日),计算从输入年的1月1日到输入的日期的总天数days并输出。
。
技术要点:
(1)用结构体存储输入日期,定义结构体和日期变量如下:
typedefstructdate{
intyeay;
intmonth;
intday;
}DATE;
DATEdate;
(2)scanf()函数输入年号date.year,月号date.month,日期date.day,输入语句如下:
scanf("%d%d%d",&date.year,&date.month,&date.day);
(3)用下述条件确定是否闰年:
year%4==0&&year%100!
==0||year%400==0
由此确定2月份天数days是28天还是29天。
(4)用一维数组m_day[12]存每月天数:
intm_day[12]={31,28,31,30,31,30,31,31,30,31,30,31};
(5)用for循环计算到输入月份上月底的天数
for(mm=1,days=0;mm days+=m_day[mm-1]; (6)根据是否大于2月且是否闰年决定天数是否加1 if(date.month>2){ if(date.year%400==0||date.year%4==0&&date%100! =0) days++; } 实施步骤: (1)运行VC6.0或Visualstudio2012集成环境 (2)建立一个控制台应用项目projection1,建立源文件date.c (3)根据前述要点编写和输入程序 (4)调试和运行程序,保存结果截图。 2、从键盘输入n(>2),计算斐波那契数列的前n项并按每行10个数据输出。 技术要点: (1)用变量fib0表示当前计算项的前2项,fib1表示前1项,初始fib0=1,fib=1,用迭代法计算当前项: fib=fib0+fib1;fib0=fib1;fib1=fib; (2)用for循环输出从第3项开始的项。 实施步骤: (1)运行VC6.0或Visualstudio2012集成环境 (2)建立一个控制台应用项目projection2,建立源文件fibo.c (3)根据前述要点编写和输入程序 (3)调试和运行程序,保存结果截图 3、编写程序,生成并输出杨辉三角形(10行)。 技术要点: (1)用一维数组yh[]存储一行数据,生成一行就打印一行。 (2)通过已输出的行计算当前要输出的行,计算从行号开始向0移动 for(col=row;col>0;col--)yh[col]=yh[col]+yh[col-1]; (3)核心代码 intyh[N]={1}; for(row=0;row for(col=row;col>0;col--) yh[col]=yh[col]+yh[col-1]; for(col=0;col<=row;col++) printf("%5d",yh[col]); putchar('\n'); } 实施步骤: (1)运行VC6.0或Visualstudio2012集成环境 (2)建立一个控制台应用项目projection3,建立源文件以后yh.c (3)根据前述要点编写和输入程序 (4)调试和运行程序,保存结果截图 4、从键盘输入两个double类型数据啊,a,b,通过调用函数max_ab实现求a与b的最大值输出,并定义函数max_ab。 技术要点: (1)声明函数max_ab: doublemax_ab(doublea,doubleb); (2)在主函数输入a,b调用函数max_ab(a,b)求最大值并输出。 (3)函数定义: 用x>y? x: y条件表达式求两个数最大值并返回。 doublemax_ab(doublex,doubley){ returnx>y? x: y; } 实施步骤: (1)运行VC6.0或Visualstudio2012集成环境 (2)建立一个控制台应用项目projection4,建立源文件以后maxab.c (3)根据前述要点编写和输入程序 (5)调试和运行程序,保存结果截图 5、编写程序从键盘输入10个float类型数存入一维数组a中,求这10个数的平均值,然后用函数aver实现平均值计算,输出这10个数以及平均值,要求数组和元素个数作为参数传递。 技术要点: (1)定义一维数组a[N],这里N定义为10 (2)声明函数avar: floataver(floata[],intn); (3)主函数输入10个数据,用for循环语句输入: for(i=0;i (4)主函数调用函数aver计算并输出平均值 printf("平均值是: %f",aver(a,N)); 实施步骤: (1)运行VC6.0或Visualstudio2012集成环境 (2)建立一个控制台应用项目projection5,建立源文件以后average.c (3)根据前述要点编写和输入程序 (5)调试和运行程序,保存结果截图 6、编写程序,从键盘输入10个int类型数,按从小到大顺序进行排序,然后输出。 要求用函数sort()进行排序,用函数input()输入数据,用函数output()输出数据。 技术要点: (1)主函数定义数组a[N],N定义为10 (2)函数声名: voidinput(int*,intn); voidoutput(int*,intn); voidsort(int*,intn); (3)主函数调用函数实现程序功能。 (4)函数定义 voidinput(int*a,intn){ //输入数据的语句 } voidoutput(int*a,intn){ //输出数据的语句 } voidsort(int*a,intn){ //排序语句 } 实施步骤: (1)运行VC6.0或Visualstudio2012集成环境 (2)建立一个控制台应用项目projection6,建立源文件sort.c (3)根据前述要点编写和输入程序 (4)调试和运行程序,保存结果截图 7、基于数组和函数的一卡通系统设计与实现。 技术要点: (1)数据存储定义: 在主函数内定义数据存储: char*name[MAXNUM];//持卡人姓名 intcnum[MAXNUM]={0};//存储每个卡的卡号,从1号开始编号 intflag[MAXNUM]={0};//存储每张卡有效条件的值 floatcmoney[MAXNUM]={0};//存储每个卡的每次充值金额 floatcbalance[MAXNUM]={0};//存储每张卡余额 intnum=0;//当前卡计数 (2)各模块函数申明: voiddisp_init();//显示初始画面模块 intselect_menu();//显示菜单并输入功能选择 voidaddnew(int*,int*,char*name[],float*,float*,int*);//建新卡模块 voidlogout(int*,int*,char*name[],float*,float*,int*);//注销模块 voidmodify(int*,int*,char*name[],float*,float*,int*);//卡信息修改模块 voidreadcard(int*,int*,char*name[],float*,float*,int*);//消费模块 voidsavemoney(int*,int*,char*name[],float*,float*,int*);//充值模块 voidinquiry(int*,int*,char*name[],float*,float*,int*);//查询卡信息模块 voidexitout();//退出模块 intfindcard(intcardnumber,int*,int*);//查询卡号 //显示卡信息 voiddispone(int*cnum,char*pname[],float*cmoney,float*cbalance,intindex); (3)主函数结构: intmain(intargs,char*argv[]){ intcnum[MAXNUM];//存储每个卡的卡号,从1号开始编号 intflag[MAXNUM];//存储每张卡有效条件的值,0-有效,1-无效 char*name[MAXNUM];//持卡人姓名 floatcmoney[MAXNUM];//存储每个卡的每次充值金额 floatcbalance[MAXNUM]={0};//存储每张卡余额 intnum=0;//当前卡数 intchoose;//功能选择 disp_init();//显示系统初始欢迎界面 while(choose! =7){ choose=select_menu();//显示菜单并输入功能选择 switch(choose){ case1: addnew(cnum,flag,name,cmoney,cbalance,&num);break;//新建卡功能 case2: logout(cnum,flag,name,cmoney,cbalance,&num);break;//注销卡功能 case3: modify(cnum,flag,name,cmoney,cbalance,&num);break;//卡信息修改功能 case4: readcard(cnum,flag,name,cmoney,cbalance,&num);break;//消费功能 case5: savemoney(cnum,flag,name,cmoney,cbalance,&num);break;//充值功能 case6: inquiry(cnum,flag,name,cmoney,cbalance,&num);break;//卡信息查询功能 case7: choose=exitout();break;//退出功能 default: printf("功能选择输入错误! \n"); } system("pause"); } return0; } (4)各函数模块定义: 给出建新卡功能的函数定义如下 ●新建卡功能函数定义 /**************************************************************** **新建卡模块: 通过参数传递卡信息数组和卡数num** **本功能模块间建立一个卡,如果有可用卡就是用该卡号,否则** **将产生一个新的卡号,并申请一个卡主姓名空间,输入卡信息** *****************************************************************/ voidaddnew(int*cnum,int*pflag,char*pname[],float*cmoney,float*cbalance,int*num){ } ●注销卡模块函数定义 /******************************************************************** **注销卡模块: 输入一个要注销的卡号,如果该卡存在并有效,显示该卡** **信息,然后将该卡有效标志设为1(成为无效卡)** *********************************************************************/ voidlogout(int*cnum,int*pflag,char*pname[],float*cmoney,float*cbalance,intnum){ intcardnumber,k; printf("输入要销卡的卡号: "); scanf("%d",&cardnumber); k=findcard(cardnumber,cnum,pflag,num); if(k>=0){ dispone(cnum,pname,cmoney,cbalance,k);//显示卡信息 pflag[k]=1; printf("\t销卡成功! \n"); } elseprintf("\t查无此卡或为无效卡,销卡失败! \n"); } ●卡信息修改模块定义 /**************************************************************************** **卡信息修改模块: 本模块修改卡信息,分为修改姓名、修改卡充值、修改余额** **修改前先输入卡号,并查找卡位置,若卡号正确有效则进入修改信息菜单选择** **修改,若查找失败,显示“无此卡号”** ****************************************************************************/ voidmodify(int*cnum,int*pflag,char*pname[],float*cmoney,float*cbalance,int*num){ //在下面加上此功能代码 } ●消费模块定义 voidreadcard(int*cnum,int*pflag,char*pname[],float*cmoney,float*cbalance,int*num){ //在下面加上此功能代码 } ●充值模块定义 voidsavemoney(int*cnum,int*pflag,char*pname[],float*cmoney,float*cbalance,int*num){ //在下面加上此功能代码 } ●查询卡信息模块定义 voidinquiry(int*cnum,int*pflag,char*pname[],float*cmoney,float*cbalance,int*num){ } ●退出模块定义 intexitout(){ for(;;){ charch; printf("确定要退出吗? (Y/N)"); fflush(stdin); ch=getchar(); if(ch=='Y'||ch=='y'||ch=='N'||ch=='n')break; } if(ch=='Y'||ch=='y')return7;//返回系统循环结束标志 return0;//返回0,表示不退出系统 } ●查找卡函数定义 /****************************************************************** **查找卡模块: 该函数供有关模块调用,返回给定卡号的存储位置。 *** **参数: 待查卡号cardnumbe,卡号数组cnum,卡有效标志数组pflag** *******************************************************************/ intfindcard(intcardnumber,int*cnum,int*pflag,intnum){ } ●显示给定位置卡信息模块定义 /*************************************************************** **显示给定位置卡信息模块函数** ***************************************************************/ voiddispone(int*cnum,char*pname[],float*cmoney,float*cbalance,intindex){ } ●显示初始欢迎界面模块定义 voiddisp_init(){ } ●显示菜单并输入功能选择模块定义 intselect_menu(){ } 实施步骤: (1)运行VC6.0或Visualstudio2012 (2)新建控制台应用项目projection7,新建源程序文件yktsys.c (3)编写并输入一个用于模块调试的主函数 #include #include #include #defineMAXNUM100 voiddisp_init(); intselect_menu(); voidaddnew(int*cnum,int*pflag,char*pname[],float*cmoney,float*cbalance,int*num); intmain(intargs,char*argv[]){ char*name[MAXNUM];//持卡人姓名 floatcmoney[MAXNUM]={0};//存储每个卡的每次充值金额 floatcbalance[MAXNUM]={0};//存储每张卡余额 intcnum[MAXNUM];//存储每个卡的卡号,从1号开始编号 intflag[MAXNUM]={0};//存储每张卡有效条件的值,0-有效,1-无效 intnum=0;//当前卡数 charchoose; disp_init(); choose=select_menu(); //调用模块的语句,若调用非"建新卡",则要给些初始数据 //调试建新卡功能 addnew(cnum,flag,name,cmoney,cbalance,&num); } (4)新建源程文件pubfun.c,将公用函数dispone()和findcard()部分代码输入此文件,需要增加头文件。 #include #include #include voiddisp_init(){ system("CLS"); printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("\t┃┃\n"); printf("\t┃欢迎使用校园一卡通系统V1.1版┃\n"); printf("\t┃┃\n"); printf("\t┃┃\n"); printf("\t┃┃\n"); printf("\t┃┃\n"); printf("\t┃┃\n"); printf("\t┃┃\n"); printf("\t┃┃\n"); printf("\t┃由广东科技学院计算机系XXX开发┃\n"); printf("\t┃┃\n"); printf("\t┃2014年10月11日版权所有┃\n"); printf("\t┃┃\n"); printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); getch();//等按任意键继续 } //显示菜单并输入功能选择模块定义 intselect_menu(){ intchoose; system("CLS"); printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("\t┃┃\n"); printf("\t┃GK-I校园一卡通系统┃\n"); printf("\t┃┃\n"); printf("\t┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"); printf("\t┃┃\n"); printf("\t┃1.开新卡┃\n"); printf("\t┃┃\n"); printf("\t┃2.销卡┃\n"); printf("\t┃┃\n"); printf("\t┃3.卡信息修改┃\n"); printf("\t┃┃\n"); printf("\t┃4.卡消费┃\n"); printf("\t┃┃\n");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 14 语言程序设计 综合 任务书 指导书