文档库 最新最全的文档下载
当前位置:文档库 › C语言课程设计学生宿舍管理系统

C语言课程设计学生宿舍管理系统

C语言课程设计学生宿舍管理系统
C语言课程设计学生宿舍管理系统

程序设计工程训练

报告

学生宿舍管理系统

课程名称程序设计工程训练

姓名

院(系)信息科学与技术学院

专业班级

学号

指导教师

教务处制

目录

1 需求分析 (1)

2 系统总框图和功能模块说明 (2)

2.1 系统总框图。 (2)

2.2 功能模块说明 (3)

2.3 程序总体框架 (4)

3 系统设计 (10)

3.1 主要结构体 (10)

3.2主要功能函数 (10)

4 调试情况 (11)

4.1输入密码进入程序 (11)

4.2主界面 (11)

4.2.1输入学生信息 (11)

4.2.2输出学生信息 (12)

4.2.3更新学生信息 (12)

4.2.4查询学生信息 (13)

4.2.5排序 (13)

4.2.6统计学生信息 (14)

5 设计总结 (14)

6 源程序清单 (15)

1 需求分析

输入正确密码后进入系统,用read_message()函数先读取文件内容,再在do while 循环中用switch语句进行选择(选一进入输入模块;选二进入输出模块;选三进入更新模块,在更新模块中又包含了三个小的模块:删除,修改,插入;选四进入查询模块,在查询模块中可以根据信息中的学号,姓名,宿舍,楼层,楼号来进行查询;选五进入排序模块,在排序模块中可以根据学号,宿舍,楼层,楼号进行排序;选六进入统计模块,可以根据宿舍,楼层,楼号进行统计。)退出程序时,对信息进行保存,以便下次调用。

2 系统总框图和功能模块说明2.1 系统总框图

2.2 功能模块说明

1.输入函数:用来录入数据和有关信息。

2.输出函数:用来输出录入的相关信息。

3. 读函数:将文件中的数据读入。

4.更新模块:对以存信息进行更新.有以下几个选项:

(1)删除函数:用来删除已离校的学生信息。

(2)修改函数:用来修改改变宿舍的学生信息。

(3)插入函数:用来插入新同学的宿舍信息。

5.查询模块:输入一项信息,可以得到存入的整条信息,具体有以下:

(1)按姓名查询:输入学生姓名,可得到整条学生信息。

(2)按学号查询:输入学生学号,可得到整条学生信息。

(3)按宿舍查询:输入宿舍号,可得到所有住在该宿舍号中的学生的所有信息。

(4)按楼层查询:输入楼层数后,可得到所有住在该层的学生信息。

(5)按宿舍楼查询:输入宿舍楼数,可得到所有住在该楼的学生信息。

6.排序模块:用来对录入的信息进行整理,使其排列有规律性。

(1) 按学号排序:把输入的学号从小到大进行排序。

(2) 按宿舍排序:把输入的宿舍从小到大进行排序。

(3) 按楼层排序:把输入的楼层从小到大进行排序。

(4) 按宿舍楼排序:把输入的宿舍楼从小到大进行排序。

7.统计模块:用来把录入的信息进行统计,使使用者清楚明了。

(1) 按宿舍统计:输入要统计的宿舍号,把这个宿舍里的所有成员输出,并显示

在这个宿舍里的总人数。

(2) 按楼层统计:输入要统计的楼层,把所有住在这个楼层上的学生信息输出,

并显示总人数。

(3) 按楼号统计:输入要统计的楼号,把所有住在该楼的学生信息输出,并显示

总人数。

8.保存信息:对信息进行保存,使下次打开时还存在。

9.退出系统。

2.3 程序总体框架

主函数流程图:

修改模块流程图:

查询模块流程图:

更新模块流程图:

删除模块流程图:

按姓名查询流程图:

(按学号、宿舍号、楼层、宿舍楼的流程图类似于按姓名查询的流程图)

排序模块流程图:

3 系统设计

3.1 主要结构体

struct stud

{

int num;

char name[10];

char sex[8];

int age;

char major[18];

int grade;

int classes;

int building;

int floor;

int dormitary;

struct stud *next;

};

3.2主要功能函数

input_message()/*输入模块*/

read_message()/*读取信息*/

output_message(struct stud *p)/*输出模块*/

del_message(struct stud *h)/*删除学生信息*/ revise_message()/*修改学生信息*/

insert_message(struct stud *h)/*插入学生信息*/ renew_message()/*更新模块*/

inquire_name()/*按姓名查询*/

inquire_num()/*按学号查询*/

inquire_dormitary()/*按宿舍号查询*/

inquire_floor()/*按楼层查询*/

inquire_building()/*按宿舍楼查询*/

inquire_message()/*查询模块*/

sort_num()/*按学号排序*/

sort_dormitary()/*按宿舍排序*/

sort_floor()/*按楼层排序*/

sort_building()/*按宿舍楼排序*/

output(struct stud *p)/*用于输出排序的模块*/ sort_message()/*排序模块*/

count_floor()/*按楼层统计*/

count_building()/*按宿舍楼统计*/

count_message()/*统计模块*/

save_message(struct stud *h)/*保存信息*/

4 调试情况

4.1输入密码进入程序

4.2主界面

4.2.1输入学生信息

4.2.1.1输入一共有多少个学生信息

4.2.1.2完成一个学生信息登记

4.2.2输出学生信息

4.2.3更新学生信息

可如图:(修改王安的性别)

4.2.4查询学生信息

可如图:(按宿舍楼查询)

4.2.5排序

4.2.6统计学生信息

如图:(按楼层统计)

该程序中可能还存在一些小问题,比如有的时候它会主动清屏,有的时候不会。并且我在编译的过程中发现自己存在好多毛病,有粗心了等,不注意细节,其实自己也知道细节决定成败,以后我会注意。

5 设计总结

通过两周的编程,我完成了学生宿舍管理这个小系统。进一步理解并掌握了C 语言中的精华指针和键表。程序可以流畅运行,实现对数据的录入、修改、插入、删除、排

序、查询、统计等基本功能。程序开始时从文件中读取数据,结束时对新数据或更新的数据进行保存,以便下次再次调用。

在编程中也不是一帆风顺的,开始时由于对C语言的许多知识点都遗忘了,导致编程过程中相当吃力,经过一两天的适应后,模块基本上编的得心应手。但当我编写读数据这个模块时遇到了一点问题,程序总是读出一些乱码,并不是我先前存入的数据。经过指导老师耐心的指点下,终于解决了这个问题。

这次高级语言程序设计,不仅巩固了我所学到的C语言知识,还让我认识到了编写一个完整的程序不仅要有必备的基础知识,还要耐心,细心,遇到问题不能轻言放弃,灵感可能就会出现在下一秒。

课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。在此对老师和同学们表示感谢!

6 源程序清单

#include

#include

#include

#define N sizeof(struct stud)

/*先用结构体定义学生信息*/

struct stud

{

int num;

char name[10];

char sex[8];

int age;

char major[18];

int grade;

int classes;

int building;

int floor;

int dormitary;

struct stud *next; /*next是指向本结构体的类型的指针类型*/

};

struct stud *h,*p; /*定义指向结构体的指针变量*/

FILE *fp; /*定义文件指针*/

/*建立和输出链表*/

struct stud *creat(void)

{ struct stud *p1,*p2,*head;

int i,k;

printf("Please input the total number of students:\n");

scanf("%d",&k);

head=NULL;

printf("Please input the message of the student:\n\n");

if(k>0)

{ head=p2=p1=(struct stud*)malloc(N); /*为head,p2,p1申请存储空间,并都指向首结点*/ for(i=1;i<=k;i++)

{ p1=(struct stud*)malloc(N);

printf("Please input the number of the student:\n");

scanf("%d",&p1->num);

printf("Input the name:\n");

scanf("%s",p1->name);

printf("Input the sex(man or female):\n");

scanf("%s",p1->sex);

printf("Input the age:\n");

scanf("%d",&p1->age);

printf("Input the major:\n");

scanf("%s",p1->major);

printf("Please input the grade and class:\n");

scanf("%d%d",&p1->grade,&p1->classes);

printf("Please input the building floor and dormitary:\n");

scanf("%d%d%d",&p1->building,&p1->floor,&p1->dormitary);

p2->next=p1; /*将新结点连到表尾*/

p2=p1; /*p2指向新的表尾*/

}

p2->next=NULL;

head=head->next;

}

save_message(head); /*将输入的数据存入文件*/

return head;

}

/*输入模块*/

input_message()

{ char v;

system("cls");

h=creat();

fflush(stdin);

printf("\n\n\n\n\ press any key to the main meue!!!!\n");

v=getchar();

return;

}

/*读取信息*/

read_message()

{ struct stud *p1,*p2;

h=p1=(struct stud*)malloc(N); /*为了p1申请存储空间,并指向首结点*/

if((fp=fopen("gx1.txt","rb"))==NULL)

{ printf("\n\n\n There is no data for the monent!\n");

return;

}

if(fread(p1,N,1,fp)!=1) return; /*先向p1读入一个数据,若不能读,返回*/

while(1)

{ p2=(struct stud*)malloc(N); /*为了p2申请存储空间*/

if(fread(p2,N,1,fp)!=1) break;

p1->next=p2;

p1=p2;

}

fclose(fp);

return;

}

/*输出模块*/

output_message(struct stud *p)

{ char v;

p=h;

system("cls");

if(p==NULL)

printf("\n\n\n\n\n There is no datas right now!\n");

printf("number name sex age major grade class building floor dormitary\n\n");

while(p!=NULL)

{

printf("%6d%7s%7s%6d%8s%8d%8d%10d%7d%11d\n",p->num,p->name,p->sex,p->age,p->major,p->gr ade,p->classes,p->building,p->floor,p->dormitary);

p=p->next;

}

fflush(stdin);

printf("\n\n\n\n\ press any key to the main meue!!!!\n");

v=getchar();

return;

}

/*删除学生信息*/

del_message(struct stud *h)

{ int num;

struct stud *p,*p0;

system("cls");

if(h==NULL) return 0;

printf("\n\n Please input the number who you what to delete?\n");

scanf("%d",&num);

p0=h;

if(p0->num==num)

{ h=p0->next;

free(p0); /*若首结点是所要删除的数据,则释放首结点*/ return 1;

}

p=p0->next;

while(p!=NULL)

{ if(p->num==num)

{ p0->next=p->next;

free(p);

return 1;

}

p0=p;

p=p->next;

}

return 0;

}

/*修改学生信息*/

revise_message()

{ int num1,choice;

struct stud *p0;

system("cls");

printf("\n\n Please input the number who you what to revise:\n");

scanf("%d",&num1);

system("cls");

p0=h; /*将头结点赋给p0*/

do

{ if(p0->num==num1)

{ printf("\n Which you what to revise?\n");

printf("\n 1.number\n");

printf("\n https://www.wendangku.net/doc/b617636580.html,\n");

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

学生宿舍管理系统C语言

《C 语言程序设计》课程设计报告 题 目: 学生宿舍管理系统 专 业: 软件技术 班 级: 软件技术1班 姓 名: 李桦楠 齐忠春 周滨滨 徐烨 潘喜隆 郑竹强 学 号: 124109124 124109131 124109150 124109143 124109127 124109148 指导老师: 陈自力 设计时间: 2013 年 1 月 14 日 ~ 2013年 1 月 18 日 信息工程系

目录 《C程序设计》课程设计报告 (1) 1.课程设计计划 (3) 2.系统需求分析与功能设计 (4) 3. 总体设计 (6) 4. 程序模块设计 (8) 5. 技术难点与分析 (10) 6.系统测试 (11) 7. 心得体会 (17) 8. 系统实现源代码 (18)

1.课程设计计划 主要成员分配任务: 1.李桦楠,齐忠春(C程序设计课程设计报告) 2.周滨滨(系统测试) 3.潘喜隆(注册密码导入,登陆) 4.郑竹强(排序,账号信息导入) 5.徐烨(完成导入,注册模块) 6. 李桦楠(完成其它模块功能实现) 2013-1-14 早上: 完成整个系统架构,各菜单的函数实现。 函数的实现。 2013-1-15 早上 实现“Login(),huChe(),huChe(),ZhuChe(),UpMiMa(),Input(),Addto()”函数完成。 2013-1-16早上 实现“Modify(),Del(),Query(),Sta(),Px(),DaoRu(),Linen() ZhuZhecodeDaoru(),MiMaDaoRu()”函数完成。 2013-1-17早上 系统进行最后的测试。

C语言课程设计-学生成绩管理系统-完整版

#include<> #include<> #include<> #include<> /* strcmp函数原型包含*/ #define N 100 /*定义最大学生人数为100*/ struct student /*学生结构体定义*/ { char no[11]; /*学号,10位*/ char name[10];/*姓名,3个汉字*/ char grade[10];/*班级*/ char pro[20];/*专业*/ float score[5];/*储存5门功课的成绩*/ float ave;/*储存平均分*/ int year;/*入学年*/ }stu[N]; int num; void panduani(int); /*通过i的值,判断信息要查找的信息是否存在*/ void output(); /*输出学生成绩函数(公共函数)*/ void init(); /*系统初始化函数*/ void newfile(); /*建立新的数据文件*/ void read1(); /*从数据文件中读取数据*/ void weihu(); /*维护界面函数*/ void new1(); /*新增一个学生成绩函数*/ void xiugai(); /*修改学生成绩*/ void xgcj(int); /*修改成绩*/

void delete1(); /*删除学生信息函数*/ void tongji(); /*统计界面函数*/ void tongji1(); /*计算每个学生平均分*/ void tongji2(); /*计算每门课程的平均分*/ void paixu1(); /*排序函数*/ void paino(); /*按学号排序*/ void paiave(); /*按平均分排序*/ void paidkcj(); /*按单科成绩排序*/ void change(int,int); /*交换结构体数组中的两个记录*/ void outputx(int); /*选择输出单科成绩*/ void find1(); /*查找界面函数*/ int find(char sno[]); /*按学号查找*/ int findname(char cname[]);/*按姓名查找*/ void findyear(int cyear); /*按入学年查找*/ void save(); /*保存文件*/ void stop(); /*停顿函数*/ void stop() /*停顿函数(公共函数)*/ { printf("Press Any Key To Continue...\n"); getchar(); } void output() /*输出学生成绩函数(公共函数)*/ { int i,j;

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

宿舍管理系统c语言

#include"stdio.h" int main_menu_select() /*主菜单选择*/ {char s; printf("\n1 Administrator in charge of the students and books' information\n"); printf("\n2 Administrator in charge of lend books\n"); printf("\n3 Administrator in charge of receive books\n"); printf("\n4 Student\n"); printf("\n5 Guest\n"); printf("\n6 exit\n\n"); printf("\n input 1-6 to choice the function\n"); do { s=getche(); printf("\n"); }while(s<49||s>54); return s; } int administrator_menu_select() /*管理员菜单选择*/ {int s; printf("input 1-6 to choice the function\n"); printf("1 input the information of books\n"); printf("2 recompose the information of the books\n"); printf("3 cancel the information of books \n"); printf("4 input the information of students\n"); printf("5 recompose information of the students\n"); printf("6 cancel the information of students\n"); printf("7 return main menu\n"); printf("8 exit\n\n" ); do { s=getche(); printf("\n"); }while(s<49||s>56); return s; } hello_main() /*返回主菜单*/ {for(; ;) {switch(main_menu_select()) {case 49:adm_information();break;

C语言程序设计课程设计题目

1一元稀疏多项式的运算 问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。 实现要求: ⑴输入并建立多项式; ⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n 是多项式的项数,c i,e i分别为第i项的系数和指数。序列按指数降序排列; ⑶多项式A和B相加,建立多项式A+B,输出相加的多项式; ⑷多项式A和B相减,建立多项式A-B,输出相减的多项式; ⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(x+x2+x3)+0 (4)(x+x3)-(-x-x-3) 2成绩排序 假设某年级有4个班,每班有45名同学。本学期有5门课程考试,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求: ⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩; ⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中; ⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进

行班内排序; ⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序; ⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 3迷宫问题 问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵编写递归形式的算法,求得迷宫中所有可能的通路; ⑶以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。 1 2 3 4 5 6 7 8 实现提示:

C语言课程设计学生选修课程系统设计

学生选修课系统设计 一、设计目的 当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息系统的环境。计算机的最到好处的于利用它能够进行信息管理,使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。 尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好学生选课信息而设计的。 数据处理手工操作,工作量大,出错率高,出错后不易更改,造成了时间上的浪费。 基于这个问题,我认为有必要建立一个学生选课系统,使学生选课信息管理工作规范化、系统化、程序化,避免学生选课管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况。 二、题目说明 假定有n门课程,每门课程都有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供一下功能: (1)系统以菜单方式工作; (2)课程信息和学生信息的录入功能(课程信息有文件保 存)----输入; (3)课程信息浏览功能----输出; (4)查询功能(至少一种查询方式)---算法; (5)按学分查询; (6)某门课程学生选修情况(可选项)。 [提示] 数据结构可用结构体,包括课程和选秀两个结构体,其中课程结构体包括课程编号、课程名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期。选修结构体成员包括学号,课程编号,该结构体的建立主要是为了查询某门课程学生选修情况.。 三、数据结构设计 本系统的实现,全部采用链表这种数据结构,用链表实现课程的查找、添加、删除、课程的选修、追加选修的课程,课程信息采用结构体这种数据结构。 typedef struct subjects {

c语言程序设计第五版习题答案

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。

#include main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** * 思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* I love C programs! ************************* 【分析与提示】 ①要有文件包含语句#include 。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include main() { printf("************************\n"); printf(" I love C programs! \n"); printf("************************\n"); }

学生宿舍管理软件C语言源代码完整版

scanf( "%s" ,S[flag].S_name); _name); getchar(); _class); getchar(); printf( " 请输入学生的学号 (15个字符以内 ):" ); scanf( "%s" ,S[S->Total].S_number); getchar(); S_number_Judge(S,S->Total);_number); getchar(); printf(" 请输入学生地址 :"); scanf("%s",S[S->Total].S_address); getchar(); printf( “请输入学生电话号码 : ”); scanf("%s",&S[S->Total]. S_phone); getchar(); dirty=1; printf( " 添加成功 !\n\n" ); _name,name)==0) flag=i; if (!flag) printf( else " 你所要修改的学生信息在表中不存在! \n" ); printf( printf( " 新信息如下 :\n" ); " 请输入学生姓名 (30个字符以内 ):" ); getchar(); printf( “请输入学生班级 (30 个字符以 内 ): ”); scanf("%s",S[flag].S_class); getchar(); 源程序代码: int dirty=0; _number,S[t].S_number)==0) printf( "学号输入失败 , 该学号已存在 ,请重新输入学号 !\n" ); printf( "请输入学生的学号 (15 个字符以内 ):" ); getchar(); i=1; #include <> #include <> #include <> #define M 100 scanf( "%s",S[t].S_number);

C语言程序设计课程设计报告

C语言程序设计课程设 计报告 内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)

《C语言程序设计》课程设计报告 (2013— 2014学年第 3 学期) 题目: C语言课程设计 专业:软件工程 班级:软件工程技术2班 姓名学号: 1 林燕萍 指导教师:吴芸 成绩: 计算机科学与技术系 2014 年6月23日

目录 一、课程设计的目的与要求 (1) 二、方案实现与调试 (3) 2.1 掷骰子游戏 (5) 2.2 射击游戏 (7) 2.3 计算存款本息之和 (8) 2.4肇事逃逸 (10) 2.5 礼炮 (12) 2.6 汽车加油 (14) 2.7 大优惠 (16) 2.8 金币 (19) 三、课程设计分析与总结 (23) 附录程序清单 (25) 一、课程设计的目的与要求(含设计指标) C语言是一种编程灵活,特色鲜明的程序设计语言。C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的动手和编程能力,从应试课程转变为实践工具。这是学习语言的最终目的。结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C 语言程序设计任务书》,以在实训过程中给学生提供帮助。达到如下目的: 1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能;

2.让学生扎实掌握C程序设计语言的相关知识; 3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。 编写程序要求遵循如下基本要求: ①模块化程序设计 ②锯齿型书写格式 ③必须上机调试通过 二、方案实现与调试 2.1掷骰子游戏 2.1.1 题目内容的描述 1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。 2) 将每人每次的分值累加计分 3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。最后显示双方分数并判定优胜者。 2.1.2输入数据类型、格式和内容限制和输出数据的说明 数据类型:整型;内容限制:随机数的产生;输入数据结果:胜利的一方 2.1.3主要模块的算法描述

(完整版)C语言程序设计练习及答案

《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型

学生宿舍管理软件C语言源代码

源程序代码: #include #include #include #define M 100 int dirty=0; //用来判断是否已保存操作 //定义一个存储学生相关信息的结构体 typedef struct { char S_name[31]; //学生姓名 char S_class[31]; //学生班级 char S_number[16]; //学生学号 int D_number; //学生所在寝室的宿舍号 char S_address[500]; //学生地址 int S_phone[20]; //学生电话号码 int Total; //学生总数 }Student[M],St; //判断学号是否与表中所存学号重复 void S_number_Judge(Student S,int t) { int i; for(i=1;i<=(S->Total)-1;i++) while(strcmp(S[i].S_number,S[t].S_number)==0) { printf("学号输入失败,该学号已存在,请重新输入学号!\n"); printf("请输入学生的学号(15个字符以内):"); scanf("%s",S[t].S_number); getchar(); i=1; } } //添加学生信息函数 void Add(Student S) { printf("请输入学生姓名(30个字符以内):"); scanf("%s",S[++(S->Total)].S_name); getchar();//获取换行符 printf(“请输入学生班级(30个字符以内):”);

C语言程序设计课程设计

《C语言程序设计》课程设计 1课程设计目的 C语言课程设计是在“C语言程序设计”课程后集中安排的1周相关的实践技能训练环节。它的目的是通过实践环节的训练,培养学生查阅资料的能力、分析与解决问题的能力、应用C语言开发与设计程序的能力。 2课程设计选题 2.1 题目1 必做题目,其余题目任选一题完成 题目1:年历显示。 功能要求: (1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。 (2)输入年月,输出该月的日历。 (3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。 题目2:小学生测验 面向小学1-2年级学生,随机选择两个整数和加减法形成算式要求学生解答。 功能要求: (1)电脑随机出10道题,每题10分,程序结束时显示学生得分; (2)确保算式没有超出1-2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0-50的范围,负数更是不允许的; (3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案; (4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分; (5)总成绩90以上显示“SMART”,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN” 题目3:学生学籍管理系统(可以2人合作完成) 用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。 功能要求: (1)系统以菜单方式工作。 (2)登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息; (3)删除已知学号的学生信息; (4)查找已知学号的学生信息; (5)按学号,专业输出学生籍贯表。 (6)查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业。 题目4:通讯录程序设计 设计一个实用的小型通讯录程序,具有添加,查询和删除功能。由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。电话号码可由字符和数字组成。实现功能:(1)系统以菜单方式工作 (2)信息录入功能 (3)信息浏览功能

C语言课程设计学生考勤系统

附件:《学生考勤系统》主要源程序代码 #include #include /*头文件。*/ int SIZE; /*宏定义。*/ int CLASS;

struct student /*定义一个结构体数组,包含学生信息。*/ { char name[9]; char sex[4]; int number; int count; int score; }stu[300]; void main() /*主函数,选择界面。*/ { void start(); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("######################################\n"); printf("# 学生考勤系统 #\n"); printf("# 欢迎您 #\n"); printf("######################################\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("######################################\n"); printf("\t请输入班级人数:\n"); printf("######################################\n"); scanf("%d",&SIZE); printf("\n"); printf("######################################\n"); printf("\t请输入课程节数:\n"); printf("######################################\n"); scanf("%d",&CLASS); printf("\n"); printf("\n"); printf("\n"); printf("\n"); start(); } void start() /*主函数的辅助函数——start函数。*/ { char x; void found(); void search();

C语言程序设计第二版习题参考答案

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

学生宿舍管理系统设计(C语言)

计算机程序设计基础(C语言)课程设计题目:学生宿舍管理系统设计 班级:计121 学号:120502120504120506120505 姓名:贾文超杨晓红张永康陆秀和 指导教师:刘喜梅孙强范周瑜 2013年7月1 日·北京 信息工程学院 信息技术教学与实验中心 学生宿舍管理系统设计 功能:实现简单的学生宿舍基本信息管理,宿舍的

基本信息包括楼号、房间号、面积、所容纳 人数、已入住人数等。 基本要求: 1.设计简单的菜单,能够进行系统功能选择。 2.实现信息的录入功能。 3.在已有信息的基础上添加新的纪录。 4.删除指定房间号的记录。 5.修改指定房间号的记录。 6.实现信息的浏览功能。 7.按房间号查询功能。 8.按已入住人数排序功能。 1.学生宿舍管理系统概述 (4) 1.1需求分析 (4) 1.2基本功能 (4)

2.学生宿舍管理系统总体设计 (5) 1.1管理流程图 (5) 1.2管理员操作 (5) 3.模块划分 (6) 1.1第一选择模块 (6) 1.2第二录入模块 (7) 1.3第三添加模块 (8) 1.4第四删除模块 (8) 1.5第五修改模块 (9) 1.6第六浏览模块 (9) 1.7第七查询模块 (10) 1.8第八排序模块 (11) 4.算法说明 (11) 5.各函数模块功能 (11) 1.1各自定义函数功能 (11) 6.程序测试 (12) 7.结论 (14) 1.1对调试中主要问题进行总结 (14) 8.体会及建议 (14) 1.1对自己设计进行评价,指出合理和不足之处,提出改进的方案 (14) 9.学生宿舍管理系统设计参与者 (14) 1.1 小组成员信息 (14) 1.学生宿舍管理系统概述 1.1需求分析

c语言-学生宿舍管理系统(难度系数:3级)

C语言:学生宿舍管理系统 (难度系数:3级) (附加清屏操作) 设计一个学生宿舍管理程序。该程序应该具有以下功能: (1)录入学生宿舍信息; (2)修改、删除学生宿舍信息; (3)统计当前未住学生宿舍的个数并显示宿舍编号; (4)统计当前空闲的男生、女生床位数; (5)按宿舍编号由小到大显示已住学生的宿舍信息; (6)分别显示男生、女生有空床位的宿舍信息; (7)按宿舍编号、可住人数、空床数、宿舍性质(男生还是女生)等信息进行查询,若查询信息不存在,输出没找到的信息。 题目要求: (1)按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序,即在程序中加入异常处理,检查用户输入数据的有效性,以保证程序的健壮性; (2)宿舍信息应该包括宿舍编号、可住人数、空床数、宿舍性质等; (3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单选项选则所需进行的操作项目,菜单要界面友好、清晰; (4)将所有宿舍信息存储在一个文件中,并实现文件的读写操作,即将输入的数据以文件的形式存盘,将原来已经存盘的文件读入内存,进行管理; (5)应保证测试用例测试程序的各种边缘情况。 输入要求: 应用程序运行后,在屏幕上显示一个菜单。用户可以根据需要,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。 输出要求: (1)应用程序运行后,在屏幕上显示一个菜单。 (2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。 代码: #include"stdio.h" #include"stdlib.h" #include"conio.h" #include"process.h" #define max 2 //最大容量

C语言程序课程设计猜数字游戏

C语言程序设计课程设计 : 自 动 化 级 : 名: 学号: 指导教师: 兰州交通大学自动化与电气工程学院 2015年07月21日

一.引言 设计目的 复习和巩固C语言基础知识,进一步加深对C语言的理解和掌握。提高同学将课本上的理论知识和实际结合的能力,锻炼同学的分析解决实际问题的能力,提高同学团队合作的能力。使同学们善于观察和思考,善于合作,具备实践编程的基础素质,和实际问题分析的思考方式。 设计要求 在设计时充分地分析和理解问题本身,综合考虑系统功能,怎样使系统结构清晰、合理、简单和易于调试。然后详细设计,确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系。最后认真完成课程设计说明书,并对设计方法,结果等进行总结。 充分地分析和理解问题本身,弄清要求做什么(What to do)。在确定解决方案框架过程中(How to do),综合考虑系统功能,考虑怎样使系统结构清晰、合理、简单和易于调试。最后确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系。 确定算法的主要流程,在此基础上进行代码设计(Coding),每个明确的功能模块程序一般不超过60行,否则要进一步划分。 上机前程序静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。静态检查主要有两种途径:(1)用一组测试数据手工执行程序;(2)通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。 二.基础题 题目 用选择法对10个数进行排序。 有一个已排好序的数组。现输入一个数,要求按原来的规律插入到原数组中。解题思路 程序的主要功能是对数组元素用排序函数按从小到大的顺序进行排序。 先定义一个10个元素的一维数组a[10],然后从电脑输入10个数(也就是对数组赋值),然后使用一次fun()函数,对这10个数进行排序;然后再定义一个11个元素的一维数组b[11],同时再从电脑输入一个数同a[10]一起赋值给b[11],然后再使用fun()函数,重新排序的到最后的有顺序的一组数据。 流程图 子函数流程图如图1所示:

C语言课程设计小学生四则运算

#include"stdio.h" #include"stdlib.h" void main() { int a,b,c,d,e,f,g,t; printf("****************************欢迎使用!************************\n"); printf("\n"); printf("1.加法运算\n"); printf("2.减法运算\n"); printf("3.乘法运算\n"); printf("4.除法运算\n"); printf("*****************************请选择运算类型:"); scanf("%d",&a); while(a<1||a>4) { printf("输入错误,请重新输入"); scanf("%d",&a); } if(a==1) { printf("5,一位数加一位数\n"); printf("6,一位数加两位数\n"); printf("7,两位数加两位数\n"); printf("*********************************请输入题型:"); scanf("%d",&a); while(a<5||a>7) { printf("输入错误,请重新输入"); scanf("%d",&a); } if(a==5) { loop:b=rand()%10; c=rand()%10; d=b+c; printf("%d+%d=?\n",b,c); printf("请输入答案:"); scanf("%d",&e); while(e!=d) { printf("回答错误,请重做"); printf("%d+%d=?\n",b,c); printf("请输入答案:"); scanf("%d",&e);

C语言程序设计习题答案

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

相关文档
相关文档 最新文档