14级C语言程序设计综合实训任务书指导书文档格式.docx
- 文档编号:18871953
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:50
- 大小:112.09KB
14级C语言程序设计综合实训任务书指导书文档格式.docx
《14级C语言程序设计综合实训任务书指导书文档格式.docx》由会员分享,可在线阅读,更多相关《14级C语言程序设计综合实训任务书指导书文档格式.docx(50页珍藏版)》请在冰豆网上搜索。
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<
date.month;
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(>
(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)调试和运行程序,保存结果截图
技术要点:
(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<
N;
row++){
col--)
yh[col]=yh[col]+yh[col-1];
for(col=0;
col<
=row;
col++)
printf("
%5d"
yh[col]);
putchar('
\n'
);
(2)建立一个控制台应用项目projection3,建立源文件以后yh.c
(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;
}
(2)建立一个控制台应用项目projection4,建立源文件以后maxab.c
(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<
i++)scanf("
%f"
a[i]);
(4)主函数调用函数aver计算并输出平均值
printf("
平均值是:
aver(a,N));
实施步骤:
(2)建立一个控制台应用项目projection5,建立源文件以后average.c
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){
//排序语句
(2)建立一个控制台应用项目projection6,建立源文件sort.c
(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];
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,&
//注销卡功能
case3:
modify(cnum,flag,name,cmoney,cbalance,&
//卡信息修改功能
case4:
readcard(cnum,flag,name,cmoney,cbalance,&
//消费功能
case5:
savemoney(cnum,flag,name,cmoney,cbalance,&
num);
break;
//充值功能
case6:
inquiry(cnum,flag,name,cmoney,cbalance,&
//卡信息查询功能
case7:
choose=exitout();
//退出功能
default:
功能选择输入错误!
\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;
输入要销卡的卡号:
"
%d"
cardnumber);
k=findcard(cardnumber,cnum,pflag,num);
if(k>
=0){
dispone(cnum,pname,cmoney,cbalance,k);
//显示卡信息
pflag[k]=1;
\t销卡成功!
elseprintf("
\t查无此卡或为无效卡,销卡失败!
●卡信息修改模块定义
/****************************************************************************
**卡信息修改模块:
本模块修改卡信息,分为修改姓名、修改卡充值、修改余额**
**修改前先输入卡号,并查找卡位置,若卡号正确有效则进入修改信息菜单选择**
**修改,若查找失败,显示“无此卡号”**
****************************************************************************/
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;
确定要退出吗?
(Y/N)"
fflush(stdin);
ch=getchar();
if(ch=='
Y'
||ch=='
y'
N'
n'
)break;
if(ch=='
)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<
stdio.h>
conio.h>
stdlib.h>
#defineMAXNUM100
voiddisp_init();
intselect_menu();
voidaddnew(int*cnum,int*pflag,char*pname[],float*cmoney,float*cbalance,int*num);
floatcmoney[MAXNUM]={0};
intflag[MAXNUM]={0};
charchoose;
choose=select_menu();
//调用模块的语句,若调用非"
建新卡"
,则要给些初始数据
//调试建新卡功能
(4)新建源程文件pubfun.c,将公用函数dispone()和findcard()部分代码输入此文件,需要增加头文件。
CLS"
\t┏━━━━━━━━━━━━━━━━━━━━━━━━┓\n"
\t┃┃\n"
);
\t┃欢迎使用校园一卡通系统V1.1版┃\n"
\t┃由广东科技学院计算机系XXX开发┃\n"
\t┃2014年10月11日版权所有┃\n"
\t┗━━━━━━━━━━━━━━━━━━━━━━━━┛\n"
getch();
//等按任意键继续
//显示菜单并输入功能选择模块定义
\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"
\t┃GK-I校园一卡通系统┃\n"
\t┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"
\t┃1.开新卡┃\n"
\t┃2.销卡┃\n"
\t┃3.卡信息修改┃\n"
\t┃4.卡消费┃\n"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 14 语言程序设计 综合 任务书 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)