当前位置:文档之家› c程序设计大作业(范例)

c程序设计大作业(范例)

c程序设计大作业(范例)
c程序设计大作业(范例)

课程设计说明书

《C 程序设计大作业》

——学生成绩管理系统

班 级: 电信2009级集成班 学 生: 陈颖宏 学 号: 200930251378 序 号: 提交日期: 2010 年 3 月 27 日

成绩评定: 分 任课教师签名: 年 月 日

前言

本课程设计题目是“学生成绩管理系统设计”,其内容是设计一个使用二进制文件方式存储数据,并且以菜单方式工作的管理系统。

设计目的是设计一个能够方便、直观地管理学生相关信息的系统。

该系统可以实现以下功能:

○1能按学期、按班级完成对学生成绩的录入、修改;

○2能按班级统计显示的成绩,计算学生的总分及平均分;

○3能查询学生的成绩,不及格科目及学生名单;

○4能按班级输出学生的成绩单。

正文

1.需求分析:本程序主要用于输入、查询、统计、导入以及导出学生的成绩。主要的输入方式是利用键盘输入,且输入的字符最好是英文及数字,输入中文时有时会出现错误。程序的有效窗口大小一般为半个屏幕,以至于有些功能的版面出现显示方面的错误。

经测试,程序基本可以正常工作:当在主菜单输入“1”时,可以正常初始化,输入余下的菜单选项时也能按要求跳转到指定画面;各子菜单选项也都能正常运行;但是输入班级、姓名等字符时,有时会显示错误的字符。

2概要设计

○1抽象数据类型的定义:学生结构体定义为struct stu,变量为student;学期数组定义为char term[7]; 班别数组定义为char banbie[20]; 学号数组定义为char no[15]; 姓名数组定义为char name[20]; 科目数组定义为int score[MAXSUB]; 总成绩变量定义为int sum; 平均成绩变量定义为float average。

○2抽象函数类型的定义:菜单选择程序“menu_select()”为int型; 初始化函数“initialize(student * [])”为void型;数据输入函数“input(student * [])”为void型;数据编辑函数“editmenu(student * [])”为void型; 数据查询查询函数“searchmenu(student * [])”为void型; 数据统计函数“total(student * [])”为void型; 数据导出函数“save(student * [])”为void型;数据导入函数“load(student * [])”为void型; 数据导出函数“output(student * [])”为void型;添加学生记录函数“add_record(student * [])”为void型;删除学生记录“delete_record(student * [])”为void型;修改学生记录函数“student * edit_record(student * [])”为void型;按学

号查询函数“student * no_search(student * [])”为void型; 按姓名查询函数“student * name_search(student * [])”为void型。

○3主程序的流程如Main()函数流:○4各程序模块之间的层次(调程图用)关系图:

3详细设计

○1各个操作及模块的伪代码:

Main()函数的伪代码算法:

printf("欢迎使用学生成绩管理系统(请按回车键!)......\n");

for(;;)

{

switch(menu_select())

{

选择选项1:

初始化;

break;

选择选项2:

数据录入;

break;

选择选项3:

数据编辑;

break;

选择选项4:

数据统计;

break;

选择选项5:

数据查询;

break;

选择选项6:

数据导出;

break;

选择选项7:

数据显示;

数据导出;

printf("导出成功!\n")

break;

选择选项0:

printf("\n\n\n\n\t\t\t\t^_^感谢您使用本系统!\n");

退出系统;

}

}

退出应用程序;

初始化函数的伪代码:

查找每一个学生记录

{

初始化当前学生记录为空记录

}

printf("记录已经初始化!\n按任意键继续!");

结束初始化函数并返回主菜单;

数据录入函数的伪代码:

对学生信息数组中的每条记录进行循环

{

为数组stuArray[i]分配内存;

如果数组stuArray[i]为空;

{

printf("分配内存失败!");

return;

}

do

{

printf("目前容量可以存储%d条记录,继续请输入y or Y,返回请输入n or N!\n",MAXNUM-i);

接受输入字符;

如果输入字符为'y'或'Y'break;

如果输入字符为'n'或'N'return;

else printf("输入错误!请重新输入\n");

}while输入字符不为'y'、'Y'、'n'、'N'中的一个;

printf("请输入需要录入的班级:");

接收输入的班别;

printf("请输入学期(如08-09-1表示08-09学年第一学期):");

接收输入的学期;

printf("请输入第%d位同学学号(共12位):",i+1);

接收输入的学号;

printf("请输入第%d位同学姓名:",i+1);

接收输入的姓名;

printf("请输入%d门成绩\n",MAXSUB);

for(j=0;j

{

do

{printf("课程%d成绩(语文为1,数学为2,英语为3,计算机为4)",j+1);

接收成绩;

刷新内存缓冲区;

检查输入的成绩是否在要求范围内;

{

printf("错误数据!请重新输入\n");;

}

}while输入的成绩不在要求范围内;

临时统计总成绩;

保存当前学生的总成绩;

算出当前学生的平均成绩;

}

}

结束函数return;

编辑函数的伪代码:

do

{

printf("\n\t请输入菜单项数字(1~4):");

接受输入选项;

}while选项不在范围内;

switch(menuitem)

{

选项 1:

增加记录;

break;

选项 2:

删除记录;

break;

选项 3:

修改记录;

break;

选项 4:

返回主菜单;

}

退出return;

增加记录函数的伪代码:

对学生信息数组中的每条记录进行循环;

{

如果当前记录是空记录;

{

break;

}

}

学生信息数组是否存满;

{

printf("该组已经存满!");getch();

return;

}

为新记录创建一个保存空间;

创建保存空间是否成功;

{

printf("\n内存不足!");getch();

return;

}

printf("输入学号:");

接收输入的学号;

printf("请输入第%d位学生姓名:",i+1);

接收输入的姓名;

printf("请输入%d门成绩\n",MAXSUB);

对各科目进行循环;

{

do

{

printf("科目%d成绩(语文为1,数学为2,英语为3,计算机为4)",j+1)

接收输入的成绩;

输入的成绩是否在范围内;

{

printf("错误数据,请重新输入\n");getch();

}

}while输入的成绩不在范围内;

临时统计总成绩;

}

保存当前学生的总成绩;

算出当前学生的平均成绩;

将当前学生的信息存入学生信息数组;

删除记录函数的伪代码:

printf("\n请输入要删除的学生学号:");

接收输入的学号;

对学生信息数组中每条学生记录进行循环;

{

学生信息数组中是否存在与用户输入学号相同的学生;

{

printf("\n存在要删除的学生记录!");getch();

break;

}

}

是否找遍数组中的所有记录;

{

printf("\n不存在要删除的学生记录!");getch();

return;

}

输出要删除的学生信息

printf("你确定要删除该记录吗?Y or N!\n");

接收删除指令;

{

从当前删除记录位置到最后一个记录循环;

{

将记录向上移动一行;

}

数组stuArray[j]内存为空;

printf("正在删除......\n");

printf("\n.......已经删除学号为%s的学生记录......\n",s); }

else

{

返回编辑子菜单;

}

修改记录函数的伪代码:

printf("\n请输入要修改的学生学号:");

接收输入的学号;

对学生信息数组中的每条学生记录进行循环;

{

学生信息数组中是否存在与输入的学号相同的学生;

{

printf("\n存在要修改的学生记录!");getch();

break;

}

}

是否找遍数组所有记录;

{

printf("\n不存在要修改的学生记录!");getch();

返回菜单选择界面return;

}

开始修改学生信息;

printf("你确定要修改该记录吗?Y or N\n"); scanf("%s",&c); 接收确认指令;

确认修改;

{

修改状态标志为1确认修改;

}

else /*不修改;

{

返回编辑子菜单;

}

while(m==1) /*确认修改;

{

printf("要修改哪个科目的成绩(语文为1,数学为2,英语为3,计算机为4)\n")

接收修改科目的编号;

进入科目修改循环;

{

printf("科目%d成绩",j);

接收新的成绩;

输入的成绩是否在范围中;

{

printf("错误数据,请重新输入!\n");

}

}while输入的成绩不在范围中;

对当前学生每个科目进行循环;

{

临时统计当前学生总成绩;

}

计算当前学生的平均成绩;

printf("还要继续修改此记录吗?Y or N!\n");

接收确认指令;

确认指令;

{

修改状态标志为1确认修改;

}

else

{

跳出确认循环break;

}

返回修改后的学生记录;

数据查询函数的伪代码:

接收选择

{

选择 1:

学号查询;

break;

选择 2:

姓名查询;

break;

选择 3:

返回主菜单return;

}

学号查询函数的伪代码:

printf("\n请输入要查询的学生的学号:");

接收输入的学号;

对学生信息数组中的每条学生记录进行循环;

{

学生信息数组中是否存在与收入的学号相同的记录;

{

printf("\n存在要查询的学生记录!"); getch();

跳出循环,不再查找break;

}

}

是否找遍数组中所有的记录;

{

printf("\n不存在要查询的学生记录!");getch();

返回菜单选择界面return;

}

输出要查询的学生信息开始

do

{

printf("返回请输入b or B!\n");

接收输入字符;

若字符为'b'或'B'返回菜单选择;

else printf("输入错误!请重新输入\n");

}while字符不为'b'或'B';

姓名查询函数的伪代码:

printf("\n请输入要查询的学生姓名:");

接收输入的姓名;

对学生信息数组中的每条学生信息进行循环;

{

学生信息数组中是否存在与输入的学生姓名相同的记录;

{

printf("\n存在要查询的学生记录!");getch();

跳出循环,不再查找;

}

}

是否找遍数组中的所有记录;

{

printf("\n不存在要查询的学生记录!");getch();

返回菜单选择界面;

}

输出要查询的学生信息开始

printf("返回请输入b or B!\n");

接收输入字符;

若字符为'b'或'B'返回菜单选择;

else printf("输入错误!请重新输入\n");

}while字符不为'b'或'B';

数据统计函数的伪代码:

对学生信息数组中的每条学生记录进行循环;

{

把当前学生班别放到班级变量中;

把当前学生学期放到学期变量中);

把当前学生总分放到班级总分变量中;

把当前学生平均分放到班级平均分变量中;

把当前学生各科成绩分别计算总分;

记录班级学生数;

从学生信息数组中的第i+1条记录循环到最后一条记录;

当学生记录存在

{

把当前l另一学生班别放到班级变量中;

把当前l另一学生学期放到学期变量中);

比较两个学生是否同一班级;

{

将当前学生成绩加入本班总成绩;

将当前学生平均成绩加入本班平均成绩;

计算各科成绩的总分;

统计班级学生数;;

}

不是同一班级;

{

跳出循环,结束当前统计break;

}

}

输出统计界面;

如果同一班级下条记录没有,跳出循环;

{

break;

}

else

{

否则将当前记录作为新的班级的第一条记录开始新的比较;

}

○2函数和过程的调用关系图:

4调试分析

○1每个选择界面之后,前一屏幕的内容依旧存在,影响界面的美观;经过同学的帮助及上网搜索,发现利用“system(“cls”);”可以消去前一屏幕的内容;然而接下来又出现新的问题:有些函数会出现错误;经过多次调试和修改,才发现把“system(“cls”);”放在调用的函数之前以及适当的位臵可以解决此问题。○2有些显示画面中,本该在同一行出现的内容会由于太长以至于在两行中出现;于是不停地改动该行的内容使之能够出现在同一行中。

○3在数据录入界面中,原来是先输入班级、学期及学号后判断输入的内容是否为“no”,然后根据输入选择是返回还是继续输入数据,然而会导致查询及导出界面查询乱码;经调试,在录入数据之前加上

“do

{ printf("目前容量可以存储%d条记录,继续请输入y or Y,返回请输入n or N!\n",MAXNUM-i);

c=getch();

if(c=='y'||c=='Y')break;

else if(c=='n'||c=='N')return;

else printf("输入错误!请重新输入\n");

}while(c!='y'&&c!='Y'&&c!='n'&&c!='N');”可以先判断再输入。

5用户使用说明本程序在VC++软件中运行无误,主要运行系统为windows xp、windows Vista和windows 7,但是在windows 7中运行有时会出现兼容性错误,故推荐在windows Xp中使用。

使用方法:双击启动程序student.exe,会出现欢迎界面,按回车键继续;出现主菜单界面,第一次使用时要进行初始化:输入1回车可成功初始化;回到主菜单界面,输入2回车进行学生成绩输入,最多可输入70位学生的成绩,输入过程中输入y回车可返回主菜单界面;输入3回车可进行学生成绩的编辑,在出现的子菜单界面可以选择“1增加数据、2删除数据、3修改数据”中任一项进行编辑,输入4回车可返回主菜单;在主菜单界面输入4可进行学生成绩的统计,统计结果包括每班各科成绩的总分、平均分;在主菜单界面输入5可进行学生成绩的查询,在子菜单界面可以选择“1按学号查询和2按姓名查询”中的任一项,输入3回车返回主菜单界面;在主菜单界面输入6可以把已经保存的数据导入到系统中(前提是已经有保存的文件);在主菜单界面中输入7可以进行数据的保存;在主菜单界面中输入0会退出系统。

6测试结果(列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中所列。)错误1(如图1):查询时出现乱码;

7本次课程设计总结(个人收获和体会:在程序设计中碰到的问题及其解决方法;学习C 语言的体会,和老师分享你对这门课程的见解,提出你的建议和意见)

附录

带注释的源程序:

#ifndef _STUDENT_H /*是否编译过STUDENT_H 段*/ #define _STUDENT_H /*声明STUDENT_H 条件编译段*/ /*头文件*/

#include

#include /*引入动态存储分配函数库*/ #include /*引入输入输出函数库*/ #include "string.h" /*引入字符和字符串函数库*/

/*定义常数名*/

#define MAXNUM 70 /*定义最大学生记录数*/ #define MAXSUB 4 /*定义最大科目数*/

/*定义学生结构变量*/

typedef struct stu /*定义学生结构体*/ { char term[7]; /*定义学期数组*/ char banbie[20]; /*定义班别数组*/ char no[15]; /*定义学号数组*/ char name[20]; /*定义姓名数组*/ int score[MAXSUB]; /*定义科目数组

*/

图1

int sum; /*定义总成绩变量*/

float average; /*定义平均成绩变量*/

}student; /*定义一个学生结构体变量student*/ /*定义菜单选项*/

int menu_select(); /*菜单选择程序*/

void initialize(student * []); /*初始化*/

void input(student * []); /*数据输入*/

void editmenu(student * []); /*数据编辑*/

void add_record(student * []); /*添加学生记录*/

void delete_record(student * []); /*删除学生记录*/

student * edit_record(student * []); /*修改学生记录*/

void search_select(struct stu * stuArray[MAXNUM]); /*数据查询*/

student * no_search(student * []); /*按学号查询*/

student * name_search(student * []); /*按姓名查询*/

void total(student * []); /*数据统计*/

void save(student * []); /*数据导出*/

void load(student * []); /*数据导入*/

void output(student * []);

#endif /*STUDENT_H条件编译段结束*/ #include"student.h" /*引入预定义文件*/

int main()

{

student * p; /*保存单个学生信息*/ student * stuArray[MAXNUM]; /*保存所有学生信息的数组*/ p=(student * )malloc(sizeof(student)); /*创建一个空的学生记录*/ stuArray[0]=p; /*将该学生信息放入数组第一个位臵*/ printf("欢迎使用学生成绩管理系统(请按回车键!)......\n"); /*输出提示信息*/

getch(); /*等待使用者回应*/ for(;;) /*进入主菜单*/ {

switch(menu_select()) /*等待使用者输入选择*/ {

case 1: /*选择选项1*/ system("cls");

initialize(stuArray); /*初始化*/

break; /*跳出,重新进行菜单选择*/ case 2: /*选择选项2*/ system("cls");

input(stuArray); /*数据录入*/

break; /*跳出,重新进行菜单选择*/ case 3: /*选择选项3*/

system("cls");

editmenu(stuArray); /*数据编辑*/

break; /*跳出,重新进行菜单选择*/ case 4: /*选择选项4*/ system("cls");

total(stuArray); /*数据统计*/

getch();

break; /*跳出,重新进行菜单选择*/ case 5: /*选择选项5*/ system("cls");

search_select(stuArray); /*数据查询*/

getch();

break; /*跳出,重新进行菜单选择*/ case 6: /*选择选项6*/ system("cls");

load(stuArray); /*数据导出*/

break; /*跳出,重新进行菜单选择*/ case 7: /*选择选项7*/ system("cls");

output(stuArray); /*数据显示*/

save(stuArray); /*数据导出*/

printf("导出成功!\n");getch();

break; /*跳出,重新进行菜单选择*/ case 0: /*选择选项0*/ system("cls");

printf("\n\n\n\n\t\t\t\t^_^感谢您使用本系统!\n");getch();

exit(0); /*退出系统*/ }

}

return 0; /*退出应用程序*/

}

int menu_select()

{

int menuItem=-1;

system("cls");

printf("\n\n\n\n\n");

/*输出开始菜单界面*/

printf(" |****************学生成绩管理系统****************| \n");

printf(" |------------------------------------------------| \n");

printf(" | 主菜单项| \n");

printf(" |------------------------------------------------| \n");

printf(" | 1---初始化| \n");

printf(" | 2---数据录入| \n");

printf(" | 3---数据编辑| \n");

printf(" | 4---数据统计| \n");

printf(" | 5---数据查询| \n");

printf(" | 6---数据导入| \n");

printf(" | 7---数据导出| \n");

printf(" | 0---退出系统| \n");

printf(" |------------------------------------------------| \n");

printf("\n 请输入菜单项数字(0~7)(第一次进入系统请先初始化!):");

do /*进入菜单选择循环*/ {

scanf("%d",&menuItem);

if((menuItem<0)||(menuItem>7))

{

puts("输入有误,请重新输入:");

}

}

while((menuItem<0)||(menuItem>7));

return menuItem;

}

void initialize(student * stuArray[MAXNUM])

{

int i=0; /*学生记录行号*/ for(i=0;i

stuArray[i]=NULL; /*初始化当前学生记录为空记录*/ }

printf("记录已经初始化!\n按任意键继续!");

getch();

return; /*结束初始化函数并返回主菜单*/

}

void input(student * stuArray[MAXNUM])

{

int i=0; /*学生记录行号*/ int j=0; /*学生功课号*/

int s=0; /*总成绩*/

char c;

for(i=0;i

s=0;

stuArray[i]=(student * )malloc(sizeof(student));

if(stuArray[i]==NULL)

{

printf("分配内存失败!");getch();

return;

}

do

{

printf("目前容量可以存储%d条记录,继续请输入y or Y,返回请输入n or N!\n",MAXNUM-i);

c=getch();

if(c=='y'||c=='Y')break;

else if(c=='n'||c=='N')return;

else printf("输入错误!请重新输入\n");

}while(c!='y'&&c!='Y'&&c!='n'&&c!='N');

printf("请输入需要录入的班级:"); /*提示输入班级*/

scanf("%s",&stuArray[i]->banbie); /*接收输入的班别*/

printf("请输入学期(如08-09-1表示08-09学年第一学期):"); /*提示输入学期*/

scanf("%s",&stuArray[i]->term); /*接收输入的学期*/

printf("请输入第%d位同学学号(共12位):",i+1); /*提示输入学号*/

scanf("%s",&stuArray[i]->no); /*接收输入的学号*/

printf("请输入第%d位同学姓名:",i+1); /*提示输入姓名*/

scanf("%s",&stuArray[i]->name); /*接收输入的姓名*/

printf("请输入%d门成绩\n",MAXSUB); /*提示输入成绩*/

for(j=0;j

{

do

{

printf("课程%d成绩(语文为1,数学为2,英语为3,计算机为4)",j+1); /*提示输入的是第几门课程成绩*/

scanf("%d",&stuArray[i]->score[j]); /*接收成绩*/

fflush(stdin); /*刷新内存缓冲区*/ if((stuArray[i]->score[j]>100)||(stuArray[i]->score[j]<0))/*检查输入的成绩是否在要求范围内*/ {

printf("错误数据!请重新输入\n"); /*提示出错*/

}

}while((stuArray[i]->score[j]>100)||(stuArray[i]->score[j]<0));

s+=stuArray[i]->score[j]; /*临时统计总成绩*/

stuArray[i]->sum=s; /*保存当前学生的总成绩*/

stuArray[i]->average=s/MAXSUB; /*算出当前学生的平均成绩*/ }

}

return; /*结束函数*/

}

void editmenu(struct stu *stuArray[MAXNUM])

{

int menuitem=-1;

printf("\n\n\n");

printf("\t|---------------*********----------**********---------------|\n");

printf("\t|---------------*********编辑子菜单**********---------------|\n");

printf("\t|---------------*********----------**********---------------|\n");

printf("\t| 1---增加记录|\n");

printf("\t| 2---删除记录|\n");

printf("\t| 3---修改记录|\n");

printf("\t| 4---返回主菜单|\n");

printf("\t|---------------*********----------**********---------------|\n");

do

{

printf("\n\t请输入菜单项数字(1~4):");

scanf("%d",&menuitem);

}while((menuitem<1) || (menuitem>4));

switch(menuitem)

{

case 1:

add_record(stuArray);

break;

case 2:

delete_record(stuArray);

break;

case 3:

edit_record(stuArray);

break;

case 4:

return;

}

return;

}

void add_record(student * stuArray[MAXNUM])

{

int i=0; /*学生记录行号*/ int j=0; /*科目号*/

student * info; /*临时保存当前学生的信息*/ int s=0; /*临时保存总成绩*/ system("cls");

/*搜查最新记录*/

for(i=0;i

if(stuArray[i]==NULL) /*当前记录是空记录*/ {

break;

《C程序设计》作业内容

实验一C语言的运行环境的使用 一、目的与要求 1. 了解Windows系统下C语言的运行环境,熟悉C程序调试、运行的基本操作方法。 2. 熟练掌握编辑、编译、连接和运行C程序的方法。 3. 通过运行简单的C程序,初步了解C源程序的特点。 4. 初步理解C语言的数据类型,了解变量定义、变量赋值以及简单运算方法,了解程序运 行结果的基本输出方法。 二、实验例题 在C语言运行环境下,按以下例题要求完成程序的编辑、编译、连接和运行,直至取得正确的运行结果。 【例1】编程实现在屏幕上显示如下三行文字 Hello, world ! Wolcome to the C language world! Everyone has been waiting for. (1)输入如下程序: #include int main() { printf("Hello,World!\n"); printf("Wolcome to the C language world!\n"); printf("Everyone has been waiting for.\n"); return 0; } (2)将输入的程序以文件名example.c存盘。 (3)编译:通过“组建”(Build) 下拉菜单中的“编译”(compile)命令,编译example.c,若出现编译错误,则修改程序,重新编译,直至编译成功,系统自动生成目标文件example.obj。 (4)连接:通过“组建”(Build)下拉菜单中的“组建”(Build)命令,生成以.exe为扩展名的可执行文件example.exe。 (5)运行:通过“组建”菜单下的“执行”(Excute)命令运行程序并观察运行结果。 【例2】编写程序,将两个整数相加,并输出结果。 #include int main() { int a,b,sum; a=123;b=456; sum=a+b; printf(“sum is %d\n”,sum); return 0;}

C语言程序设计大作业报告模板

《C语言程序设计》大作业报告 1.目的 掌握所学C语言程序设计的方法,熟悉所学语言的开发环境及调试过程,熟悉所学C语言中的数据类型,数据结构、语句结构、运算方法,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。通过综合设计要求达到下列基本技能: 1.培养查阅参考资料、手册的自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。 2.通过对所选题目方案分析比较,确立方案,编制与调试程序,初步掌握程序设计的方法,能熟练调试程序。 2.作业内容

熟练掌握所学语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用等。 3.要求: 1.要求每个同学都要认真对待,积极参与。 2.独立完成,不能抄袭。 3.课程设计结束时每位同学必须完成《大作业报告册》,其中包含设计源 代码和设计思路。 4.不符合要求的程序、设计报告、抄袭的设计报告或源程序代码、在设 计中完全未参与的将作不及格处理。 5.统一格式,A4打印,按时提交。 4.题目:设计要求:编写一个程序,求3x4数组的转置矩阵。要求在main函数里面读数,在change函数里面把矩阵转置。 5.程序设计 设计思路:1是先定义两个数组,一个是a[3][4],另一个是b[4][3]。2是将随便输入的12个数输入到a[3][4]。3是在change函数中将a[3][4]中值通过for循环的镶嵌将数组a[3][4]的值赋值给数组b[4][3]。4在主函数中将数组b[4][3]通过for循环的嵌套输出。 代码

C语言程序设计作业参考答案

《C语言程序设计》作业参考答案 作业一 C语言概述 一、选择题: 1-5 ACDCB 二、编程题: main() { printf(“****************************************\n”); printf(“ Hello,world! \n”); printf(“****************************************\n”); } 作业二程序的灵魂——算法 一、填空题: 1.确定性有效性有零个或多个输入有一个或多个输出 2.顺序结构选择结构循环结构 3.函数 作业三数据类型、运算符与表达式 一、选择题: 1-5 BDDAB 6-10 BCAAB 11-15 BCADC 16-20 DACCA 21-25 ADDBA 26-30 DDDDD 作业四顺序结构 一、选择题: 1-5 BCDDD 6-10 BDADD 二、填空题: 1.【31.415920,3.14159e+01】 2.【c=k】 3.【a=1,b=空格,c=2】 4.【a=12,b=345】 5.【c=A】 作业五选择结构 一、选择题:1-5 ADCBC 6-10 BBBBA 11-15 DBAAC 16-17 CB 二、填空题: 1.【-1】 2.【3】 3.【4】 4.【11】 5.【97或'a'】 作业六循环结构 一、选择题: 1-5 CBAAC 6-10 CBCCB 11-15 DBDDB 16-20 BCAAC 21-25 CDBBB

作业七数组 一、选择题: 1-5 CDDAC 6-10 CCDBC 11-15 DDBCA 16-20 DCBDD 21-23 BDB 二、填空题: 1. LBLMNP 2. SW* 3. mo 4. a=2,b=1 作业八函数 一、选择题: 1-5 AAACA 二、填空题: 1.【编程中的main( )函数】 2.【函数说明部分】和【函数体】 3.【–125= –5*5*5】 4.【void add (float a, float b)】【float add (float a, float b)】 5.【i=7; j=6; x=7 i=2; j=7; x=5】 6.【111】 三、编程题: 1.参考代码 main() { int score,temp,log; char grade; log=1; while (log) { printf(“enter score:”); scanf(“%d”,&score); if ((score>100)||(score<0)) printf(“\n error,try again! \n”); else log=0; } if (score==100)temp=9; else temp=(score-score%10)/10; switch(temp) { case 0:case 1:case2: case 3:case 4:case 5:grade=’E’;break; case 6:grade=’D’;break; case 7:grade=’C’;break; case 8:grade=’B’;break; case 9:grade=’A’; } printf(“score=%d,grade=%c\n”,score,grade); } 2.解:设计以高度n为参数的函数trangle(int n),打印等边三角形。参考程序如下: #include

C语言大作业报告

目录 一、设计题目 二、目标和需求分析 三、开发工具 四、应用平台 五、程序模块 1、游戏盒子 2、2048 3、扫雷 4、贪吃蛇 六、开发日志 七、程序调试及运行 八、程序开发总结 总结:虽然做出来的东西真的没什么技术水平,但是我们尽量把这个东西的每个方方面面做完整。

目标和需求分析一个小的游戏盒子,可以用来启动其它游戏,当然,其它游戏也是我们大作业的编写内容,平时可以玩玩用来打发时间 用到的工具VS2005 Easyx图形库 Pthread线程库 Hge 分工 秦贤康 组织大家,编写主程序,及构思计划,技术指导 王尧 所有的文件处理,数据算法方面优化 王懿晨 合作2048模块 杨梓晗 图片资源加工,音乐裁剪,按钮制作 程维驰 合作扫雷模块 应用平台:WINDOWS X64

程序功能模块: 一、 安装包:(写入开始菜单快捷方式,桌面快捷方式,开机启动等)//pascal 脚本编写 #define MyAppName "C 大作业" #define MyAppVersion "2.0" #define MyAppPublisher "五人小组" #define MyAppExeName "1.exe" [Setup] AppId={{49DB1DB4-FAE9-4ACB-A4B9-E5C420C5F10B} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} DefaultDirName={pf}\{#MyAppName} DisableDirPage=yes DefaultGroupName={#MyAppName} DisableProgramGroupPage=yes (剩余代码未全部给出) 安装包 内嵌:C 语言报告 游戏盒子 开机启动,桌面快捷方式等 进入动画,左侧动画 启动模块 通知,和显示游戏信息 2048 扫雷 贪吃蛇 主界面信息显示 通知栏信息显示 意见箱

C程序设计作业样本

第一章作业 答案:一,59,14.4,28.e 二1小题,59 2,15 一、将数89、20.25、40.875用十六进制表达 二、填空 1.在C语言中,数值常量0x3b十进制值是。 2.字母f ASCII码为十进制数___________。 第三章作业 一、选取题: 1、下列变量名中, B 是非法。 A) Tom B) 3n C) little_boy D) c10 2、若有如下类型阐明 char a; int b; float c; double d;则表达式a*b+d-c成果类型是(A ) A)float B)char C)int D)double 3、若x为整型,则逗号表达式(x=4*5,x*5),x+25成果及x值分别是(C )对的答案是100,45 A)45 20 B)125 20 C)125 45 D)100 100 4、假设所有变量均为整型,则表达式(a=3,b=2,b++,a+b)值是 C 。 A) 5 B) 8 C) 6 D)7 5、已知c2为字符型,则执行语句c2=’E’+’8’-‘A’后,c2值为 C 。 A) 12 B) 11 C)不拟定值D) 10

6、设a为double变量,b为int型变量,c为字符型变量,则a+b+c为( C )型 A) int B) float C) double D) char 7、C语言中不可用作标记符字符有( C ) A下划线 B % C数字 D字母 8、下面四个选项中,均是合法整型常量是(D ) A)160 B)- 0xcdf C)- 01 D)0x - 0xffff 01a 0668 2e5 9、设a为字符变量,b为int型变量,c为double型变量,则a*b+c为( C )型 A. int B. float C. double D. char 10.若a是int型变量,则表达式(a=4*5,a*2),a+4值为( C ) A. 20 B.22 C. 24 D. 44 第四章作业 一、选取题 1、若x为int型变量,则执行如下语句后x= C 。 x=5; x-=x-=x+x; A. -10 B. -5 C.0 D.10 2、在printf()函数格式阐明符中,字符型数输出格式阐明符是 D 。

C语言大作业设计-

CHANGZHOU INSTITUTE OF TECHNOLOGY C语言大作业 设计说明书 题目: 通讯录管理系统 二级学院(直属学部):计算机信息工程学院 专业: 软件工程(中英合作)班级: 12软件二: 学号: 2013年7月 目录

1 概述 (1) 1.2设计分析 (1) 1.3开发工具 (1) 1.4应用平台 (1) 2 系统设计 (2) 2.1功能模块设计 (2) 2.2数据结构设计 (4) 2.3函数功能设计 (4) 3 实现与测试 (7) 3.1关键技术实现 (7) 3.2测试运行结果 (8) 4 开发日志 (14) 5 设计总结 (14) 6 参考文献 (14)

1 概述 1.1 小组构成及分工 1.2 设计分析 本程序设计共包含六个函数模块,分别是添加记录、显示记录、删除记录、查询记录、修改记录、保存记录等信息模块,完成通讯录的功能。在主函数中可以以1、2、3、4、 5、6数字键分别可以执行某个功能模块。 1.3 开发工具 Visual C++ 6.0 和window32 1.4 应用平台 Windows XP 32位 2 系统设计 2.1功能模块设计

1.系统模块图 本系统包括6个模块,分别是添加模块、显示模块、删除模块、查询模块、修改模块、保存模块等,各模块的功能如图2.1所示。各个模块的功能描述如下: (1)添加模块:可以添加通讯录记录,依次输入、年龄、、地址、电子后,并会提示是否继续添加。 (2)显示模块:可以以表格形式输出所有通讯录里的记录。 (3)删除模块:输入欲删除的那个人的名字后,会自动删除他(她)的记录容。 (4)查询模块:可以选择用、、地址三种方式查询。 (5)修改模块:输入欲修改的那个人的名字后,再依次输入、年龄、、地址、电子完成修改。 (6)保存模块:输入文件名(带后缀名)后,即可将通讯录信息保 存到文件。 图2.1 系统模块图 2.任务执行流程图

C语言课程设计大作业62994

郑州大学 课程报告 课程名称:C语言程序设计 专业班级:(15)班 学生姓名:谢* 学号: 20127611*** 任课教师:赵** 学期: 2012-2013-2 课程报告任务书

开发一个通讯录管理系统,基本信息包括:编号、姓名、性别、出生年月、固定电话、手机号、电子邮件等基本信息(也可以根据自己情况进行扩充)。使之能提供以下基本功能: (1)通讯录等信息录入功能(注:数据等要求用文件保存)--输入 (2)通讯录信息的浏览功能--输出 (3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式): ①按电话号码进行查询②按姓名查询等③按照年龄排序④按姓名排序等(4)通讯录条目的删除与修改等 扩展功能:可以按照自己的程度进行扩展。比如(1)简单的权限处理(2)报表打印功能(3)模糊查询,如姓张的人员等;或者给定电子邮件的部分进行查询等(4)给定指定年龄范围之内的查询等等。 总之,可以根据自己需求进行分析功能,成绩评定按照难度进行区分。 成绩评定教师:

一. 需求分析 1,具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。 2,数据包括:人名、工作单位、电话号码和E-MAIL地址。 3,可对记录中的姓名和电话号码进行修改。 4,可增加和删除记录。 5,可显示所有的保存记录。 6,可按人名或电话号码进行查询。 分析 建议采用结构体数组和文件系统实现。结构体成员包括人名、工作单位、电话号码和E-MAIL地址。 根据题目的要求程序应该采用结构体数组和文件系统实现。应该有文件的操作功能;在程序中应该包括输入、显示、删除、查询、添加、修改、保存、加载和退出的功能。 二、概要设计 (1).程序的模块组成及各个函数的功能: 程序的模块组成: 主函数:main(); 输出数据函数:printf(); 读取数据函数:scanf(); 显示记录函数:Display(); 删除记录函数:shanchu(); 查找记录函数:chaxun(); 自定义清屏函数:system(“cls”); 自定义输入函数:input(); 字符输入函数:getchar(); 修改数据函数:xiugai(); 保存数据函数:baocun(); 排序数据函数:paixu(); 各函数的主要功能:

c程序设计作业

1、分析下面程序: # include int main() { char c1,c2; c1=97; c2=98; printf("c1=%c,c2=%c\n"c1,c2); printf("c1=%d,c2=%d\n",c1,c2); return 0; } (1)运行时会输出什么信息?为什么? (2)如果将程序第4,5行改为 c1=197; c2=198; 运行时会输出什么信息?为什么? (3)如果将程序第3行改为 int c1,c2; 运行时会输出什么信息?为什么? 答:(1)程序运行不了,因为程序存在错误。正确的程序为:#include int main() { char c1,c2; c1=97; c2=98; printf("c1=%c,c2=%c\n",c1,c2); printf("c1=%d,c2=%d\n",c1,c2); return 0; } (2)如果将程序第4,5行改为 c1=197; c2=198; 运行时会输出: (3)如果将程序第3行改为 int c1,c2; 运行时会输出:

因为int表示整型,%c是输出字符,a的ASCLL代码是97,b的是98,所以输出 c1=a,c2=b.%d是表示输出十进制整型,所以输出c1=97,c2=98 2、用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。 问在键盘上如何输入? #include int main() { int a,b; float x,y; char c1,c2; scanf("a=%db=%d",&a,&b); scanf("%f%e",&a,&y); scanf("%c%c",&c1,&c2); return 0; } 答:输入如图: 输出如图: (此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容, 供参考,感谢您的配合和支持)

C语言大作业报告范文

学院XX学院

目录 1 摘要 (3) 1.1设计题目 (3) 1.2设计容 (3) 1.3开发工具 (3) 1.4应用平台 (3) 2 详细设计 (3) 2.1程序结构 (3) 2.2主要功能 (3) 2.3函数实现 (3) 2.4开发日志 (4) 3 程序调试及运行 (4) 3.1程序运行结果 (4) 3.2程序使用说明 (4) 3.3程序开发总结 (4) 4 附件(源程序) (4)

1 摘要 1.1 设计题目 (A)求最大数;(B)高次方数的尾数 1.2 设计容 (A)求555555的约数中最大的三位数; (B)求13的13次方的最后三位数1.3 开发工具 Visual C++ 6.0和Win32。 1.4 应用平台 Windows XP 32位 2 详细设计 2.1 程序结构 (A)求最大数

定义变量a、b、c,a从100至999递增,b为555555,用b除以a,判断是否可以整除,若可以,则把a的值赋给c,a自加1;若不可,a自加1。重复以上步骤,直到a>999,输出c。循环语句采用for 循环。 (B)高次方数的尾数

定义变量i、j,i从1至13递增,j初值为1。用j乘以13,用得到的乘积除以1000并取其余数,赋给j,i自加1。重复以上步骤,直到i>13,输出j。循环语句采用for循环。

2.2 主要功能 程序功能:(A)求555555的约数中最大的三位数; (B)求13的13次方的最后三位数。 原理和方法: (A)题目的原理和方法:因为要求的是三位数,就用555555从小到大依次除以100到999的所有数,并判断能否整除,最后一个可以整除555555的数即为所求。循环语句采用for循环。 (B)题目的原理和方法:乘积的最后三位数只与乘数和被乘数的后三位数有关,因此用1乘以13,再除以1000并取余数,用余数乘以13,再除以1000并取余数,依次进行下去,累乘13个13后除以1000取得的余数即为所求。循环语句采用for循环。 2.3 函数实现 (A)求最大数 int a,b=555555,c; /*定义变量,赋初值*/ for(a=100;a<=999;a++) /*FOR循环*/ { if(b%a==0) /*利用IF语句判断b是否可以被a整除*/ c=a; /*将555555的约数赋给c*/ } printf("%d\n",c); /*输出c*/ (B)高次方数的尾数 int i,j=1; /*定义变量,赋初值*/ for(i=1;i<=13;i++) /*FOR循环*/ { j=j*13%1000; /*将j乘以13的乘积的后三位数赋给j*/ } printf("%d\n",j); /*输出j*/ 2.4 开发日志 (A)选定这个题目后,我先分析此题用何种算法完成,确定了使用FOR循环并限定除数围,然后画出程序框图,再一步步编写源代码。调试过程很顺利,只有一个地方忘加了“;”。运行程序后,结果非常满意。 (B)这个题目不难,但是也不简便,我想到只取三位数的方法,并使用FOR循环,然后画出程序框图,再一步步编写源代码。调试过程发现对其中一个变量的初值是1还是13有待解决,分析程序后发现应该用1,然后进一步调试,运行,直至结果正确。

C语言程序设计-作业与答案

《C 语言程序设计》课程作业 适用层次:专升本 培养类型:理工科专业 专业班级: 姓名: 学号: 作业要求:题目可打印,答案要求手写,考试时交作业。 第1次: 1.编写程序,分别计算1到100之间的奇数之和及偶数之和,并输出。 2.输入三角形的三条边a 、b 、c ,如果能构成一个三角形,则计算并输出三角形的周长和面积(结果保留两位小数);否则输出“无效的边长!”。 三角形面积计算公式为: s=))()((c x b x a x x ---,其中,x=(a+b+c)/2。 3.输入一个整数,求它的各位数字之和。例如,123的各位数字之和为6,-63的各位数字之和为9。 4.使用格里高利公式求π的近似值,精确到最后一项的绝对值小于10-6 。 +-+-=71 513114π …… 5.中国古代数学史上著名的“百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三,鸡雏三,值钱一。百钱买百鸡,问翁、母、雏各几何? 6.编写程序,键盘输入正整数n (0= 2 2. 编写一个函数prime(int n),判断一个整数是否是素数,若是素数,函数值返回1,否则返回0。利用该函数找出100-200之间的所有素数。素数是只能被1和自身整除的正整数,2是最小的素数。 3.写一函数int strlength(char *s)求一个字符串的长度。主函数中输入一个字符串,调用函数strlength 求其长度并输出。

西北工业大学C语言大作业实验报告

学院*****************

目录 1 摘要 (3) 1.1设计题目 (3) 1.2设计内容 (3) 1.3开发工具 (3) 1.4应用平台 (4) 2 详细设计 (4) 2.1程序结构 (4) 2.2主要功能 (10) 2.3函数实现 (13) 2.4开发日志 (18) 3 程序调试及运行 (20) 3.1程序运行结果 (20) 3.2程序使用说明 (22) 3.3程序开发总结 (22) 4 附件(源程序) (22)

1 摘要 1.1 设计题目 折半法查找演示程序 1.2 设计内容 本程序是一个演示折半查找算法的演示程序。由用户输入查找的数据表列和查找的数据,系统在将数表排序后可以在屏幕上演示在排序后的表列中按折半查找法查找该数据的具体过程(通过每次查找的中间数据、下次查找表列等,具体效果见下图),支持多次演示、错误提醒,程序暂停演示功能。 1.3 开发工具 Visual C++ 6.0和Win32。

1.4 应用平台 Windows 2000/XP/Vista 32位 2 详细设计 2.1 程序结构 程序功能模块: 本程序主要由五大模块组成:程序说明模块、输入模块、排序模块、折半法查找及显示模块、进程选择模块。各模块的主要功能如下: 程序说明模块:给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。 此部分模块主函数源代码如下: int a[N]; /*存储要查找的数表,用户输入*/ int i,n,num,count; /*count为折半次数计数器,n为数表数据个数,num存储所查数据*/ int top,bottom,mid; char c; /*存储选择函数中的输入的字符y或n*/ int flag=1; /*折半法循环标志变量*/ int loc=-1; /*存储所查找数据位置*/ double k=0; p_s(76);puts("\n"); /*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文) printf("****欢****迎****使****用****折****半****查****找****法****演****示****器****\n"); puts("\n"); /*程序欢迎语*/ p_s(13); printf("制作者:***************** "); /*作者信息*/ p_s(4); printf("Email:************************ "); /*电子邮件*/

C语言大作业学生信息管理系统

《程序设计综合课程设计》报告 学生姓名: ______ ______ ______ ______________________ 学生班级: ______________________ ____________ ____________ 学生学号: ____________ 指导教师: ______ 2014年6 月 22 日

目录 前言 (2) 第1章Visual C++6.0简介及其优点 (3) 第2章课程设计的目的和要求 (4) (4) 2.2课程设计的要求 (5) 第3章课程设计任务内容 (6) 3.1 需求分析 (6) 3.2可行性分析 (6) 第4章软件使用说明 (7) 第5章总结 .................................................. 错误!未指定书签。附录源程序 学生信息管理系统 前言 学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项 数据资源,是一个教育单位不可缺少一部分。特别是近几年来,国家政策的调整,我国高等 院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。 其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依靠人 工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,目前我国各类高等院 校中还有相当一部分学生档案管理还停留在纸介质的基础上,尤其是中、小学对学生档案的 管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力 和物力。随着科学技术的不断提高,计算机科学与技术日渐成熟,计算机应用的普及已进入 人类社会生活的各个领域,并发挥着越来越重要的作用。这种传统的手工管理模式必然被以 计算机为物质基础的信息管理方法所取代。 作为计算机应用的一部分,使用计算机对学生档案进行管理,有着手工管理所无法比拟 的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。 这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要 条件,更是各个高等院校与世界接轨的重要条件。

C程序设计作业

第一章作业 答案:一,59,14、4,28、e 二1小题,59 2,15 一、将数89、20、25、40、875用十六进制表示 二、填空 1、在C语言中,数值常量0x3b得十进制值就是。 2、字母f得ASCII码为十进制数___________。 第三章作业 一、选择题: 1、下列变量名中, B 就是非法得。 A) Tom B) 3n C) little_boy D) c10 2、若有以下类型说明 char a; int b; float c; double d;则表达式a*b+d-c得结果类型就是( A ) A)float B)char C)int D)double 3、若x为整型,则逗号表达式(x=4*5,x*5),x+25得结果及x得值分别就是(C )正确答案就是100,45 A)45 20 B)125 20 C)125 45 D)100 100 4、假设所有变量均为整型,则表达式(a=3,b=2,b++,a+b)得值就是 C 。 A) 5 B) 8 C) 6 D)7 5、已知c2为字符型,则执行语句c2=’E’+’8’-‘A’后,c2得值为 C 。 A) 12 B) 11 C)不确定得值D) 10 6、设a为double变量,b为int型变量,c为字符型变量,则a+b+c为( C )型 A) int B) float C) double D) char 7、C语言中不可用作标识符得字符有( C ) A下划线 B % C数字 D字母 8、下面四个选项中,均就是合法整型常量得就是(D ) A)160 B)- 0xcdf C)- 01 D)0x - 0xffff 01a 0668 2e5 9、设a为字符变量,b为int型变量,c为double型变量,则a*b+c为( C )型 A、int B、float C、double D、char 10、若a就是int型变量,则表达式(a=4*5,a*2),a+4得值为( C ) A、20 B、22 C、24 D、 44 第四章作业 一、选择题

C语言程序设计课程作业

C语言程序设计课程作业_A 一、单选题 1. (4分)设有以下定义int k=7, x=12;,则能使值为3的表达式是() ? A. x%=(k%=5) ? B. x%=(k-k%5) ? C. x%=k ? D. (x%=k)-(k%=5) 答案D 解析C语言程序设计/数据类型与运算/整型算术表达式 2. (4分)以下程序的输出结果是? #include main() { int x=020,y=0x20,z=20; printf('%d,%d,%d ', x,y,z); } ? A. 20,20,20 ? B. 32,16,20 ? C. 16,32,20 ? D. 20,32,20 答案C 解析C语言程序设计/数据类型及运算 3. (4分)C语言中while和do while循环的主要区别是( ) ? A. do-while的循环至少无条件执行一次

? B. while循环控制条件比do-while的循环控制条件严格 ? C. do-while允许从外部转入到循环体内 ? D. do-while的循环体不能是复合语句 答案A 解析C语言程序设计/循环程序设计/while语句与do-while语句 4. (4分)执行语句scanf('%d,%d',&m,&n);使m和n的值分别为1和2,正确输入是( ) ? A. 1 ? B. 1 2 ? C. 1,2 ? D. 12,2 答案C 解析C语言程序设计/顺序程序设计/整型数据的格式输入 5. (4分)sizeof(float)是( ) ? A. 一个双精度型表达式 ? B. 一个整型表达式 ? C. 一种函数调用 ? D. 一个不合法的表达式 答案B 解析C语言程序设计/数据类型与运算/实型变量存储 6.

C程序设计与训练课程大作业2016

“C++程序设计与训练”课程大作业(2016) 作业题目: 简易铁路票务系统 作业描述: 同学们在平时出门旅行的过程中经常会选择使用铁路这一交通运输方式,对铁路票务系统应该也有所了解。本次作业希望同学们能够自己设计并实现一套简易的铁路票务系统。 主要功能: 旅客可以注册账号、登录系统并管理个人信息,在登录系统之后可以根据自己的需求订票。这里给出一个标准的订票流程用作参考: (可以不用完全按照这个流程来实现,只需要逻辑清晰、功能完善、用户界面友好即可) 1.旅客根据起始车站、到达车站、出行时间等条件查询符合的车次,车次信息 需要显示始达车站、始达时间、余票数量等等; 2.旅客根据查询结果选择自己满意的车次并进行订票; 3.系统确认旅客订票成功,并显示具体的票面信息; 4.旅客可以随时查看自己已经预订成功的车票相关信息。 要求: 1.列车发车前半小时关闭该趟车的订票功能 2.同一位旅客同一车次只能购买一张票 3.同一车次的每个座位只能卖给一位旅客,不能出现两人买到相同座位号车票 的现象 4.用数据库管理、维护车次、车票及旅客账号等信息

核心对象 1)车次: 座位布局: 火车通常有两种座位布局,坐铺车厢与卧铺车厢。为了简化实现,我们假定每一班列车仅有一节车厢,为坐铺车厢或者卧铺车厢中的一种。 坐铺列车一节车厢120个座位,座位号为1~120;卧铺列车一节车厢60个席位,座位号为1上/中/下~20上/中/下。 车次信息: 车次信息至少包括:车次编号、列车类别(特快(坐/卧),普快(坐/卧),高铁等)、始发车站、终点车站、发车时间、预计运行时间/预计到达时间、车票价格、余票数量 2)普通用户: 普通用户账户信息至少包括:账号(用户名)、姓名、性别、身份证号(或者其他有效证件及证件号码)、联系方式、附加信息(学生证等其他信息,可为空) 3)票务管理人员: 票务管理人员登录系统之后可以维护管理所有车次信息。 管理员登录需要的用户名、密码提前录入在数据库中。 扩展功能(选做): 1.车次信息增加途经车站信息(里程及到发时间),如有多个途经车站则根据里 程数分段计价。 2.添加“虚拟的”账户充值功能与支付功能,在用户确认订票之后需要扣除相 应的账户余额才能成功购票,否则提示用户充值;或者余额不足时可以通过在购票付款时选择“其他方式支付”来代替。 3.添加选座功能,旅客可以在图形界面上方便地看到当前车次每个座位票的售 卖情况,并可以选择自己想要的空闲座位。 4.普通用户增加其他旅客信息,可以帮助他人购票。 5.分开实现服务器端与客户端功能,客户端与服务器通过网络连接,经由服务 器端访问数据库。

C语言程序设计课后习题作业

第一章习题 1、对C语言来说,下列标示符中哪些是合法的,哪些是不合法的? Total, _debug, Large&Tall, Counter1, begin_ 答:合法的:_debug、Counter1、begin_。 不合法的:Total、Large&Tall。 2、改写1.4节中的流程图1.2,求1—100中能被6整除的所有整数的和。 3、改写1.4节中的程序,求1—100中能被6整除的所有整数的和,并在编程环境中验证该程序的运行结果。 答:程序为: #include int main(void)

{ int i,sum=0; for(i=1;i<=100;i++) if(i%6==0)sum=sum+i; printf("sum=%d\n",sum); return 0; } 4、对于给定的整数n(n>1),请设计一个流程图判别n是否为一个素数(只能被1和自己整除的整数),并分析该流程图中哪些是顺序结构、哪些是分支结构和循环结构。

第二章作业 1.编写程序,输入两个整数num和num2,计算并输出她们的和、差、积、商。 答:程序: #include void main() { int num1,num2,y1,y2,y3,y5; double y4; printf("请输入两个数:num1,num2\n"); scanf("%d%d",&num1,&num2); y1=num1+num2; y2=num1-num2; y3=num1*num2; y4=num1*1.0/num2; y5=num1%num2; printf("num1,num2和y1=%d\nnum1,num2差y2=%d\nnum1,num2积y3=%d\nnum1,num2商y4=%lf\nnum1,num2余y5=%d\n",y1,y2,y3,y4,y5); } 2.为了倡导居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时以内的,电价为0.53元/千瓦时;超出50千瓦时的用电量,电价上调0.05元/千瓦时。编写程序,输入用户的月用电量(千瓦时),计算并输出该用户应支付的电费(元)。 答:程序: #include void main() { double x,y; printf("请输入月用电量:x\n"); scanf("%lf",&x); if(x<=50){ y=0.53*x; printf("电费y=%lf\n",y); } else { y=0.58*x; printf("应支付电费y=%lf\n",y); } } 3.编写程序,输入实数x和正整数n,计算x n,,不允许调用pow()函数求幂。 答:程序:

C语言期末大作业

伊犁师范学院计算机科学系 实验训项目报告 一、小组成员及分工: 姓名:张雁 学号: 二、指导老师:王慧玲 三、说明程序编制要点,以及自己在项目制作中的难 点及解决办法: 编写的要点:编写N个函数分别用来求平均分;总分按降许序排列;按姓名查找学生的成绩;找出各科 最高分的学生姓名,学号等。编写主函数提供不 同的选择途径。 难点:函数之间的调用,姓名的比较和交换。 解决办法:通过参数的传递;用字符串处理函数。 四、说明项目中所涉及的知识点及难点: 知识点:基础知识,结构体,选择结构程序设计,循环结构程序设计,数组,字符数组,常用的字符串处理函数,函数的调用。 难点:函数的调用,循环程序设计。 五、附录源程序: 注:必须有一定的注释,说明函数功能以及主要语句所起的作用 #include "" #include "" #define m 5 void search(); /*声明按姓名查找学生的信息*/

void ave(); /*声明turn out average*/ void paixu(); /* 声明score pai mingci*/ void maxandmin(); /*声明maxandmin score student's number,name and every course score*/ struct student /*声明define a struct*/ { int num; /*student’s number */ char name[10]; int math,english,chinese; /*three course score*/ int no; /* student mingci*/ float sum; float ave; }stu[m]; main() { int i; int q=0,p; for(i=0;i

C程序设计作业

2009年春季学期《C程序设计》作业 作业提交格式要求:请同学们把答案集中单独写在一个.doc文档中,作为附件上传(不要把答案直接填写在题目的空中)。特规定格式如下: 一、选择题 1. C 2. A 3. B 4.C 5.A 二、填空题 1. 3.14 2.–5 三、程序填空题 1.(1)x,y (2)x 四、分析下列程序的输出结果。 1) a=7 2) 110,a 95,a …… 以上只是举例,不是正确的输出结果。请按上述规定书写和提交作业结果,不符合以上规定的作业将作为0分处理。 鼓励独立完成作业,严惩抄袭。 第一部分(一、三、四、五章) 一、选择题 1、若n 、a 、b 和c 都是int 型的变量,则执行表达式n=( a=1 ,b=12 ,c=24)后n 值为。 A. 12 B. 24 C. 1 D. 45 2、下列常量中,是十六进制表示的int型常量。 A. 78 B. 0x70 C. x56 D. 063 3、设ch 是char 型的变量,其值是…E?,则表达式ch= (ch>= ' A ' && ch<= ' Z ') ?(ch+32):ch 的值是。 A. ?e? B. ?A? C. ?F? D.?Z? 4、已知c2为字符型,则执行语句c2=?A?+?9?-…5?后,c2的值为。 A. …E? B. 此运算不合法 C.不确定的值 D. …D? 5、设a为整型变量,b为字符型变量,c为double型变量,则a*b+c为( )型 A. double B. float C. int D. char 6、在scanf()函数的格式说明符中,长整型数的输入格式符是。 A. %lf B. %ld C. %d D. %x 7、要使用putchar()函数必须在程序前加语句。 A. include "stdio.h" B. #include C. include

C 语言程序设计 大作业题目

哈尔滨工业大学(威海)2019 / 2020 学年 春 季学期

比赛结果,因而成为乒乓球比赛经常采用的方法。其不足之处在于相对来讲耗时较多,特别是在参赛人数多而比赛时间短的情况下不宜采用。乒乓球比赛一般多采用单循环和分级循环:1.1、单循环 参赛的人或队都要互相轮流比赛1次的方法。单循环比赛的轮数计算:当参赛人数或队数为单数时,轮数等于人(队)数;参赛人数为双数时,轮数等于人(队)数减1。单循环比赛的计算方法是:获胜次数多者名次列前,如有2个或2个以上的运动员获胜次数相同时,则依次由他们之间场数胜负比率、局数胜负比率、分数胜负比率的顺序来决定。 1.2、分组循环 这是将若干人(队)分成几个小组,在各小组内进行循环方法,其特点是要以节省时间,在参赛人数多且比赛时间短的情况下采用。分组循环一般用于团体赛,可将所有参赛队用蛇形方法分组,如12个队参赛可分成A、B两组: A组:1 4 5 89 12 B组:2 367 10 11 上列数字是各队的顺序号,它是按各队实力强弱排列的,序号小者实力强,反之实力弱。 2、淘汰制 淘汰制就是比赛中失败一次即退出比赛,获胜者继续比赛,直到决出冠亚军为止。这种竞赛方法的特点是节省时间,竞争性强,能使比赛越来越精彩,但也有偶然性。 2.1 单淘汰 所谓单淘汰是指将所有参赛选手编成一定的比赛顺序,由相近的两名选手进行比赛,胜者进

入下一轮,负者即遭淘汰。 2.2双淘汰 双败淘汰制与普通的淘汰制输掉一场即被淘汰不同,参赛者只有在输掉两场比赛后才丧失争夺冠军的可能。双败淘汰制的比赛一般分两个组进行,胜者组与负者组。在第一轮比赛后,获胜者编入胜者组,失败者编入负者组继续比赛。之后的每一轮,在负者组中的失败者将被淘汰;胜者组的情况也类似,只是失败者仅被淘汰出胜者组降入负者组,只有在负者组中再次失败(即总共有两次失败)后才会被淘汰出整个比赛。 每一轮败者组的比赛又分为两个阶段。第一个阶段,由当前败者组中的幸存者相互对阵,负者被淘汰,胜者进入第二个阶段;第二个阶段,由第一阶段中败者组的胜者对阵刚刚在本轮由胜者组中淘汰下来的选手。 以一个8名选手参加的双败淘汰制比赛为例: 第一轮比赛:四场比赛后,各自有4名选手依据结果编入胜者组或败者组 第二轮比赛:胜者组4名选手相互比赛,败者编入败者组,败者组选手在第一阶段先相互比赛,并淘汰掉2名选手,剩下的2名选手再进入第二阶段,与刚在胜者组淘汰到败者组的2名选手比赛,获胜的2名进入第三轮。 第三轮比赛(即败者组决赛):败者组剩下的这2名选手在第一阶段先淘汰掉1名(已累积二败绩),剩下1名进入第二阶段,对阵胜者组决赛中的失败者,败者组决赛中的胜者(到此仅败过1场)将与胜者组决赛中的胜者(到此从未败过),争夺最后的冠军。

相关主题
文本预览
相关文档 最新文档