C语言大作业

合集下载

c语言大作业综合

c语言大作业综合

c语言大作业综合第一章C语言简介及算法一.选择题1.一个C程序可以包含的函数。

A.一个B.多个C.若干D.任意2.下面不可以使用来编译和连接一个C 程序。

A.TurboCB.VC++C.C语言编译器D.BC3.C语言的程序一行写不下时,可以。

A.用逗号换行B.用分号换行C.在任意一空格处换行D.用回车符换行4.C控制语句有种。

A.6B.9C.32D.345.复合语句是用一对界定的语句块。

A.{}B.[]C.()D.”6.一个C程序的执行总是从该程序的函数开始,在函数最后结束。

A.第一个、最后一个B.main、mainC.主函数、最后一个D.第一个、第一个7.C语言提供的合法的数据类型关键字A.FloatB.ignedC.integerD.Char8.在以下各组标识符中,合法的标识符是(1)A.B01B.table_1C.0_tD.k%(2)A.Fat_B.voidC.pblD.(3)A.某y_B.longdoubleC.某pD.CHAR(4)A.jB.IntC._某yD.w_y239.C语言的标识符里不能有A.大小写字母B.数字C..D.下划线二.填空题1.C程序是由构成的,一个C程序中至少包含因此,是C程序的基本单位。

2.C程序注释是由和所界定的文字信息组成的。

3.函数体一般包括和4.算法是解决问题的和的描述。

5.C程序的注释部分可以出现在程序的位置,它对程序的编译和运行作用,但是可以增加程序的第二章C语言数据类型、基本运算及简单程序设计一.选择题1.不合法的字符常量是A.‘\\t’B.“A”C.‘a’D.’\\某32’2.逻辑运算符两侧运算对象的数据类型。

A.只能是0或1B.只能是0或非0正数C.只能是整型或字符型数据D.可以是任何类型的数据3.下列表达式中,不满足“当某的值为偶数时值为真,为奇数时值为假”的要求。

A.某%2==0B.!某%2!=0C.(某/2某2-某)==0D.!(某%2)4.下面选项中,不是合法整型常量的是A.160B.-0某cdgC.-01D.-0某48a5.能正确表示“当某的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是。

c语言大作业

c语言大作业
printf("input the sex: male/female :"); /* 输入性别 */
scanf("%s",s);
strcpy(stu[i].sex,s);
for(j=0;j<3;j++)
{ printf("input score of %d: ",n);
{ printf("can not open file.\n");
delete();
}
printf("the students before delete:\n "); /*输出所有学生*/
printf("number name \n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++) /* 从文件读入数据,在屏幕上输出 */
printf("\nnumber name sex Chinese Math English \n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)!=0;i++) /* 从文件读入数据,在屏幕上输出 */
程序名:学生信息管理系统
#include<stdio.h>
#include<string.h>
#define MAX 50
struct student /* 定义结构体数组stu和结构体变量out */
FILE *fp;
void add() /*增加学生信息函数*/

C语言期末大作业

C语言期末大作业

伊犁师范学院计算机科学系实验训项目报告一、小组成员及分工:姓名:张雁学号:0908*******二、指导老师:王慧玲三、说明程序编制要点,以及自己在项目制作中的难点及解决办法:编写的要点:编写N个函数分别用来求平均分;总分按降许序排列;按姓名查找学生的成绩;找出各科最高分的学生姓名,学号等。

编写主函数提供不同的选择途径。

难点:函数之间的调用,姓名的比较和交换。

解决办法:通过参数的传递;用字符串处理函数。

四、说明项目中所涉及的知识点及难点:知识点:基础知识,结构体,选择结构程序设计,循环结构程序设计,数组,字符数组,常用的字符串处理函数,函数的调用。

难点:函数的调用,循环程序设计。

五、附录源程序:注:必须有一定的注释,说明函数功能以及主要语句所起的作用#include "stdio.h"#include "string.h"#define m 5void 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<m;i++){printf("num:");scanf("%d",&stu[i].num);printf("name:");scanf("%s",stu[i].name);printf("input score:");scanf("%d,%d,%d",&stu[i].math,&stu[i].chinese,&stu[i].engli sh);printf("\n");}system("cls");while(q==0){printf("\n");printf("1 find average score\n");printf("2 find sum score paiming\n");printf("3 find student name output about student message\n");printf("4 find the max score and min score student's message\n");printf("other number exit!\n");printf("\n");printf("please input number:\n");scanf("%d",&p);switch(p) /*用开关语句SWITCH进行选择*/{case 1:ave(stu); break; /*选择1,求平均分*/case 2:paixu(stu); break; /*选择2,求总分按降序排列*/ case 3:search(stu,m); break; /*选择3,求按姓名查找学生的信息*/case 4: maxandmin(stu,m); break; /*选择4,求各科的最高分和最defult :q=1;exit(0);}}getch();}void ave(struct student stu[]) /*求学生的平均分*/{int i;printf("1 find aveage score:\n");printf("num\tname\tsum\tave\n");for(i=0;i<m;i++) /*通过循环语句求学生的总分和平均分*/{ stu[i].sum=0;stu[i].sum+=stu[i].math;stu[i].sum+=stu[i].chinese;stu[i].sum+=stu[i].english;stu[i].ave=stu[i].sum/3;printf("%d\t%s\t%.0f\t%.1f\n",stu[i].num,stu[i].name,stu[ i].sum,stu[i].ave);}}void paixu(struct student stu[]) /*sum score line*/ {int i,j,a; float t; char b[10];printf("2 find sum score paiming\n");for(i=0;i<m;i++)stu[i].no=i+1; /*gei mingci fu chuzhi*/ for(i=0;i<m-1;i++)for(j=i+1;j<m;j++)if(stu[i].sum<stu[j].sum){a=stu[i].num;stu[i].num=stu[j].num;stu[j].num=a;t=stu[i].sum;stu[i].sum=stu[j].sum;stu[j].sum=t;strcpy(b,stu[i].name);strcpy(stu[i].name,stu[j].name);strcpy(stu[j].name,b); /*运用字符串复制函数交换学生的姓名*/}printf("num\tname\tsum\tno\n");for(j=0;j<m;j++){ printf("%3d\t%s\t",stu[j].num,stu[j].name);printf("%.0f",stu[j].sum);printf("\t%d\n",stu[j].no);}}void search(struct student stu[]) /*search student's name*/{int i;char n[10];printf("3 find student name output about student message\n"); printf("input name:\n");scanf("%s",n);for(i=0;i<m;i++) /*use “for circulation” search student’s name*/if(strcmp(n,stu[i].name)==0) /*用字符串比较函数进行比较*/{printf("num\tname\tsum\tave\tmath\tchinese\tenglish\n");printf("%d\t%s\t%.0f\t%.1f",stu[i].num,stu[i].name,stu[i].sum,stu[i].ave);printf("\t%d\t%d\t%d",stu[i].math,stu[i].chinese,stu[i].english);break; /*分别输出要查找的学生的学号,姓名,总分,平均分,和各科的成绩*/}}Void maxandmin(struct student stu[]) /*输出各科学生的最高分和最低分*/{int i,a=0,b=0,c=0,d=0,e=0,f=0;int maxm,maxc,maxe,minm,minc,mine;printf("4 find the max score and min score student'smessage\n");for(i=0;i<m;i++){if(stu[a].math<stu[i].math) a=i;maxm=stu[a].math;if(stu[b].math>stu[i].math) b=i;minm=stu[b].math;if(stu[c].chinese<stu[i].chinese)c=i;maxc=stu[c].chinese; if(stu[d].chinese>stu[i].chinese)d=i;minc=stu[d].chinese; if(stu[e].english<stu[i].english)e=i;maxe=stu[e].english; if(stu[f].english>stu[i].english)f=i;mine=stu[f].english; }printf("the max score\n\nnum\tname\tmath\tchinese\tenglish:\n");printf("%d\t%s\t%d\n",stu[a].num,stu[a].name,maxm);printf("%d\t%s\t\t%d\n",stu[c].num,stu[c].name,maxc);printf("%d\t%s\t\t\t%d",stu[e].num,stu[e].name,maxe);printf("\n");printf("the min score \n\nnum\tname\tmath\tchinese\tenglish:\n");printf("%d\t%s\t%d\n",stu[b].num,stu[b].name,minm);printf("%d\t%s\t\t%d\n",stu[d].num,stu[d].name,minc);printf("%d\t%s\t\t\t%d",stu[f].num,stu[f].name,mine);}《一》输入学生信息(学号,姓名,各科的成绩)《二》编译成功进入主菜单:《三》选择1对学生的成绩求总分,平均分:《四》选择2对学生信息排序《五》选择3输入要查找的学生的姓名(这里找的是zj)《六》选择4求各科成绩的最高分和最低分的学生的信息:六、感想现在,我终于把大作业做好了,虽然做这次作业我花了很多时间但是我十分的高兴,因为收获很多,从开始思路的模糊混乱,到最终的清晰整齐。

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

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

1数据处理系统一、软件开发目的该软件主要是使用C语言设计开发数据处理程序,实现对数据的排序、查找、插入、计算、输出等功能。

二、数据结构定义一个11*10的二维数组。

三、软件功能说明1.生成100个随机数:调用库函数rand()或random()产生100个随机数,并存储在二维数组中的前十行。

2.选择法排序:用选择法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。

3.冒泡法排序:用冒泡法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。

4.插入法排序:用插入法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。

5.查找数据:输入待查找数据, 在二维数组中逐个查找,若找到输出数据所在位置的行列号,若无该数值则输出“无此数”。

6.转换二进制:将数组中数据转换为二进制并转存到另一数组中输出。

7.转换为素数之和:对于原数组中的数进行判断:若为偶数,则表示成两个素数的和,并输出。

8.插入数据:输入一个数,将该数插入原数组中,使数组中的数仍然按从小到大排序,将数组中数据按从小到大顺序输出。

9.删除数据输入一个数,若原数组中存在该数,则删除该数,使数组中的数仍然按从小到大排序,将数组中数据按从小到大顺序输出。

10.退出系统,结束任务。

四、软件验收标准1.有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。

系统菜单功能项:1生成100个随机数2选择法排序3冒泡法排序4插入法排序5查找数据6转换二进制7转换为素数之和8插入数据9删除数据10退出系统注意:要求每执行一个具体的功能之后,程序将重新显示菜单。

2.系统要有一定的可靠性、稳定性,能够实现各功能模块。

2图书借阅管理系统一、软件开发目的该软件主要是使用C语言设计开发一个简单的图书借阅管理系统,实现对图书的借书,还书的管理和数据统计。

C语言大作业

C语言大作业

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

(2)数学型大作业6. 高次方数的尾数.1.2 设计内容(1)在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分,选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。

(2)求13的13次方的最后三位数。

1.3 开发工具开发工具为Microsoft Visual C++ 6.0.1.4 应用平台Windows XP32位。

2 详细设计2.1 程序结构(1)整体包括一个主函数和一个自定义函数,首先在主函数中输入10个分数,在输出函数中调用自定义函数,在调用过程中向自定义函数传递实参。

在自定义函数中实现了平均分的计算。

然后返回到主函数输出。

(2)程序整体上是用到一个主函数和一个自定义函数。

程序先运行主函数,然后在主函数中调用自定义函数Thr,Thr函数实现了求13的13次方的最后三位尾数。

调用Thr函数时将实参(13,13)传递到自定义函数的形参中,从而实现了对问题的求解。

2.2 主要功能(!)该程序主要用于求解去除最高分和最低分的平均分。

该功能的实现是在自定义的函数中实现的,即用选择法先对10个分数进行排序,排序中用的是选择法,即从第i+1至第n个数中选出比第i个数小的,然后和其交换,如都大于第i个数,则不进行交换。

从而实现从小到大的排序。

然后只计算第2至第n-1个数的平均值,计算结果即为最后得分。

(2)该程序的主要功能为实现高次方数的尾数的求解。

高次方数的结果一般较大,超过了计算机的内存,由乘法的运算性质知其最后的尾数只与每次最后三位的乘积有关,于是每次只运行最后三位的乘积即可,然后截取即可,这样就避免了内存不足这一缺陷,程序便可得到正确的结果。

C语言大作业报告

C语言大作业报告

C语言大作业
猜数字游戏
信安三班
孙麒 2009302530088
戈丽萍 2009302530066
分工
戈丽萍:A、B、Win函数,流程图孙麒:main、Guess函数、程序调试
一、游戏说明
1、系统随机产生一组不重复的4位数字
2、游戏者输入所猜的不重复数字,并按回车提交。

3、系统将提交的数与它自动产生的数进行比较,输出结果“*A*B”形式。


中A代表数字正确相应位置也正确,B代表数字正确但位置不正确。

如:1A3B 表示游戏者有1个数字的位置正确且数值也正确,除此以外,游戏者还猜对了3个数字,但位置不对,即游戏者已经猜出4位数据,但有3个数据位置不对!
4、游戏者有限定的8次的猜测机会,在规定次数内完成,则游戏成功,否则,
游戏失败。

5、游戏成功后,将根据游戏者猜测所需要的次数对其进行评价:第一次猜出为perfect,第二——第四次猜出为great
二、详细流程
1、main函数

2、win函数(判断输赢)
3、A函数(判断数字且位置正确的个数)
A (char m[4],char n[4])
B(char m[4],char n[4],in a)
4、B函数(判断数字对但是位置不对的个数)
5、主函数Guess(char right[4])
三、总结经验
在确定了设计的内容之后,经历了很长时间的思考想出了算法。

但是在设计中反复出现错误,特别是B函数,检查很多遍之后觉得算法并无问题。

就分块进行调试。

后来偶然发现原来是整个过程中的“==”都写成了赋值“=”,导致错误,今后一定要细心才可以。

C语言大作业

C语言大作业

学院目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (3)2.1程序结构 (3)2.2主要功能 (10)2.3函数实现 (10)2.4开发日志 (17)3 程序调试及运行 (18)3.1程序运行结果 (18)3.2程序使用说明 (19)3.3程序开发总结 (20)4 附件(源程序) (20)1 摘要1.1 设计题目A题算法型:折半查找算法演示程序B题空间桁架结构节点位移求解1.2 设计内容A题:本程序是一个演示折半查找算法的演示程序。

当用户输入查找数据表列和要查找的数据时,程序会演示折半法查找该数的详细过程,并且支持多次查找、错误提示等功能。

B题:空间桁架结构节点位移求解1.3 开发工具Code Blocks 12.11(内置MinGW)1.4 应用平台Windows 7 64位2 详细设计2.1 程序结构A题:程序功能模块:本程序主要包含六大模块:程序说明模块、输入模块、排序模块、折半法查找模块、选择模块和程序退出模块。

工程文件结构:本程序的工程含有6个文件,其中main.cpp、print_stars.cpp、judge.cpp、sort.cpp、putout.cpp5个cpp 文件和include.h1个头文件(参见下图),两者共同存在于工程“折半法查找演示程序”中。

其中main.cpp 文件包含了程序的主体部分,程序说明模块、输入、排序、折半查找、选择、程序退出模块按线性排列。

其中输入、排序模块执行一次,这般查找、选择模块可多次执行,直到程序退出模块执行。

六大模块说明:(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("制作者:Haidong Chen***");/*作者信息*/p_s(4);printf("**Email:1562353594@");/*电子邮件*/p_s(11);puts("\n");p_s(76);puts("\n");/*再次引用p_s函数,程序说明部分结束*/附:print_star.cpp文件源代码#include<stdio.h>void p_s(int k){int i;for(i=1;i<=k;i++)/*连续输出ka个'*'*/printf("*");}(2) 输入模块:引导使用者输入要在其中查找数据的数表的数据个数和数表数据。

C语言大作业全

C语言大作业全

#include "stdafx.h"#include "stdio.h"#include "stdlib.h"#include "string.h"#include "malloc.h"#define LEN sizeof(struct student) #define NULL 0int n,m;int k=1;struct student{char num[20];char name[20];int age;char profession[50];int maths;int english;int C_program;float ave;struct student * next;};float ave(struct student * p1){float ave;ave=(float)(p1->maths+p1->english+p1->C_program)/3;return ave;}void save(struct student *head){struct student *p1 = head;FILE *outFile;outFile = fopen("stu.bin", "wb");if (outFile == NULL) {printf("\nFile error.");}else {while(p1 != NULL){fwrite(p1, sizeof(struct student), 1, outFile);p1 = p1->next;}fclose(outFile);}}//将数据存入文档中void check(struct student * head,struct student * p1) {struct student *h=head;for(m=0;m<n;m++,h=h->next ){if(strcmp( h->num,p1->num)==0){printf("输入号码重复\n");printf("请重新输入学号:");scanf("%s",p1->num);getchar();check(head,p1);}}}//检验学号是否重复struct student * creat(){struct student * head;struct student *p1,*p2;n=0;p1=p2=(struct student *)malloc(LEN); printf("学号:\n");scanf("%s",p1->num);getchar();printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);head=NULL;while(strcmp(p1->num,"0")!=0){n=n+1;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(LEN);printf("学号:\n");scanf("%s",p1->num);getchar();check(head,p1);//检查输入的学号是不是重复且是不是重复输错 printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);}p2->next=NULL;save(head);return(head);}//录入数据并将其保存至文档void print(struct student *head){struct student * p;printf("\n这%d个学生的成绩为:\n",n);printf("学号姓名年龄专业数学英语 C语言平均成绩\n");p=head;if(head==NULL)printf("The info error\n");if(head!=NULL)while(p!=NULL){p->ave=ave(p);printf("%s%8s%8d%13s%9d%10d%9d%10.2f",p->num,p->name,p->age,p->profession,p->maths,p->engl ish,p->C_program,p->ave);printf("\n");p=p->next;}}//输出链表//struct student* read(){struct student *head = NULL;struct student *p2 = head;struct student record;FILE *infile;infile = fopen("stu.bin", "rb");n=1;if(infile == NULL){printf("\nFile error.");}else {head = (struct student *)malloc(sizeof(struct student));fread(head, sizeof(*head), 1, infile);p2 = head;while(fread(&record, sizeof(record), 1, infile))//fread返回数据个数,结束和出错返回0;{p2->next = (struct student *)malloc(sizeof(struct student));memcpy(p2->next, &record, sizeof(record)); //复制结构体数据p2 = p2->next;n=n+1;}p2->next=NULL;fclose(infile);}return head;}//从文件中读取数据struct student * search_num(struct student * head,char array[20]){struct student * p1;p1=head;if(head==NULL){printf("打开错误");return(head);}while((strcmp(array,p1->num)!=0)&&(p1->next!=NULL)){p1=p1->next;}//找到相应的学号if(strcmp(array,p1->num)==0){printf("学号姓名年龄专业数学英语 C语言\n");printf("%s%10s%10d%15s%11d%12d%11d",p1->num,p1->name,p1->age,p1->profession,p1->maths,p1-> english,p1->C_program);printf("\n");}else printf("此学号不存在\n");return(head);}//按学号查询数据//]struct student * search_name(struct student * head,char array[20]){struct student * p1;p1=head;if(head==NULL){printf("打开错误");return(head);}while((strcmp(array,p1->name)!=0)&&(p1->next!=NULL)){p1=p1->next;}//找到相应的学号if(strcmp(array,p1->name)==0){printf("学号姓名年龄专业数学英语 C语言\n");printf("%s%10s%10d%15s%11d%12d%11d",p1->num,p1->name,p1->age,p1->profession,p1->maths,p1-> english,p1->C_program);printf("\n");}else printf("此姓名不存在\n");return(head);}//按姓名查询数据//struct student * change(struct student * head,char array[20]){struct student *p1;p1=head;if(head==NULL){printf("打开错误!");return(head);}while((strcmp(array,p1->num)!=0)&&(p1->next!=NULL)) {p1=p1->next;} //找到相应的学号if(strcmp(array,p1->num)==0){printf("请输入更改的学号:\n");printf("学号:\n");scanf("%s",p1->num);getchar();printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);save(head);}else printf("所查学号不存在\n");return(head);}//修改数据//struct student * del(struct student * head,char array[20]) {struct student * p1,* p2;if(head==NULL){printf("\nlist null!\n");return head;}p1=head;while((strcmp(array,p1->num)!=0)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}//找到相应的学号、if((strcmp(array,p1->num)==0)){if(strcmp(array,head->num)==0)head=p1->next;elsep2->next=p1->next;}elseprintf("你查询的学号(%s)不存在!",p1->num);save(head);return(head);}void add(struct student * head){struct student *p1;printf("\n请输入添加学生的信息:\n");p1=(struct student *)malloc(LEN);printf("学号:\n");scanf("%s",p1->num);getchar();check(head,p1);printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);FILE *outFile;outFile = fopen("stu.bin", "ab");if (outFile == NULL) {printf("\n打开错误.");}fwrite(p1, sizeof(struct student), 1, outFile);fclose(outFile);}void sta(struct student * head,char array[20],int max,int min) {struct student *p1=head;int k=0;if(strcmp(array,"maths")==0){while(p1!=NULL){if(p1->maths>=min&&p1->maths<=max)k++;p1=p1->next;}printf("数学科目在%d到%d之间的人数为:%d\n",min,max,k);}else if(strcmp(array,"english")==0){while(p1!=NULL){if(p1->english>=min&&p1->english<=max)k++;p1=p1->next;}printf("英语科目在%d到%d之间的人数为:%d\n",min,max,k); }else if(strcmp(array,"C_program")==0){while(p1!=NULL)if(p1->C_program>=min&&p1->C_program<=max)k++;p1=p1->next;}printf("C语言科目在%d到%d之间的人数为:%d\n",min,max,k); }}void exit(){printf("\t\t");printf("**********************\n");printf("\t\t");printf("*******感谢使用*******\n");printf("\t\t");printf("**********************\n");k=0;}void Chooseproject(int i){ struct student * head=NULL;if(i==1){head = read();print(head);else if(i==2){int p=1 ;printf("请选择按学号查询(1)还是按姓名查询(0):");scanf("%d",&p);while(p!=1&&p!=0){printf("输入错误!");printf("请选择学号查询(1)还是姓名查询(0)");scanf("%d",&p);}if(p==1){head = read();char num[20];printf("请输入查询的学号:\n");scanf("%s",num);head=search_num(head,num);while(strcmp(num,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n");scanf("%s",num);if(strcmp(num,"0")==0)break;head=search_num(head,num);}}else if(p==0){head = read();char name[20];printf("请输入查询的学号:\n");scanf("%s",name);head=search_name(head,name);while(strcmp(name,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n"); scanf("%s",name);if(strcmp(name,"0")==0)break;head=search_name(head,name);}}}else if(i==3){ head = read();char num[20];printf("请输入要更改的学号:\n");scanf("%s",num);getchar();head=change(head,num);print(head);while(strcmp(num,"0")!=0){printf("是否继续更改(是就输学号,否就输0):\n"); scanf("%s",num);getchar();if(strcmp(num,"0")==0)break;head=change(head,num);print(head);}}else if(i==4){head=read();add(head);}else if(i==5){char num[20];head=read();printf("请输入要删除的学号:\n");scanf("%s",num);getchar();head=del(head,num);print(head);}else if(i==6){head = read();int i;printf("\t\t");printf("************1.学号排序;********************\n");printf("\t\t");printf("************2.平均成绩排序;****************\n");printf("\t\t");printf("************3.数学成绩排序;****************\n"); printf("\t\t");printf("************4.英语成绩排序;****************\n"); printf("\t\t");printf("************5.C语言成绩排序;***************\n");printf("请输入相应的排序代号:");scanf("%d",&i);sort_down(head,i);}else if(i==7){head=read();int min,max;char subject[20];printf("\t\t");printf("************数学(maths);***************\n");printf("\t\t");printf("************英语(english);*************\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();while((strcmp(subject,"maths")!=0&&strcmp(subject,"english")!=0&&strcmp(subject,"C_pro gram")!=0)){printf("输入错误!");printf("\t\t");printf("************数学(maths);***********\n");printf("\t\t");printf("************英语(english);***********\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();}printf("请输入分数段的区间:");printf("区间上限:");scanf("%d",&max);printf("区间下限:");scanf("%d",&min);while(min>=max){printf("输入的下限大于等于上限,错误!");printf("请重新输入分数段的区间:");printf("区间上限:");scanf("%d",max);printf("区间下限:");scanf("%d",min);}sta(head,subject,max,min);}else if(i==8){printf("\t\t");printf("************************************\n");printf("\t\t");printf("**************感谢使用**************\n");printf("\t\t");printf("************************************\n");k=0;}}//选择功能void menu(){int i;printf("\t\t");printf("***********1.信息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息排序;***********\n");printf("\t\t");printf("***********7.信息统计;***********\n");printf("\t\t");printf("***********8,退出系统;***********\n");printf("请选择项目:");scanf("%d",&i);while(i<1||i>8){printf("输入错误,请重新输入:\n");printf("\t\t");printf("***********1.信息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息统计;***********\n");printf("\t\t");printf("***********7,退出系统;***********\n");printf("请重新选择项目:");scanf("%d",&i);}Chooseproject(i);}int _tmain(int argc, _TCHAR* argv[]){ struct student *head = NULL;printf("\t\t");printf("************************************************************\n");printf("\t\t");printf("*********************学生管理系***************************\n");printf("\t\t");printf("************************************************************\n" );printf("是否已经录入信息?\n");char c;printf("请输入 'y' 或 'n':");c=getchar();getchar();while(c!='n'&&c!='y'){printf("输入错误,请重新输入( 'y' 或 'n'):\n");c=getchar();getchar();}if(c=='n'){printf("请输入学生成绩:\n");head=creat();}while(k!=0){menu();}system("pause");return 0;}。

c语言大作业

c语言大作业

①高次方数的尾数#include<stdio.h>#include <math.h>int main (){intx,n,i;intXn=1;printf("\t\t\t\t高次方数的尾数\n");printf("请按照提示进行操作\n\n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");printf("一、请输入底数:\n");scanf("%d",&x);printf("二、请输入指数:\n");scanf("%d",&n);for(i=1;i<=n;i++){Xn=Xn*x;if(Xn>=1000)Xn=Xn%1000;}printf("三、结果:%d的%d次方的尾数为%d\n\n",x,n,Xn);printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");printf("感谢使用。

\n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");return 0;}②排序算法程序#include<stdio.h>#include<stdlib.h>#include<math.h>#include <time.h>#include<windows.h>void quick_sort(int *x, int low, int high) /*快速排序法*/{int i, j, t;if (low < high) /*要排序的元素起止下标,保证小的放在左边,大的放在右边。

大连理工大学c语言大作业

大连理工大学c语言大作业

大连理工大学c语言大作业第一篇:大连理工大学c语言大作业程序设计大作业总结报告——<东北大馅饺子馆>的点餐/帐目信息管理系统选题意义;餐厅账目繁多,通过本系统可以实现餐厅管理的自主化。

更加适应这个信息化的社会。

通过对账目、订单的管理与排序。

也能使餐厅管理者更加直观地看出产品之间的优劣与受众。

使其能够更好的调动资源,达到餐厅的快速发展目的。

设计方案;1)任务分析该系统应包括两大界面—用户界面和管理界面。

用户界面包括用户点餐功能并将用户点餐信息存入账单文件中。

管理界面包括记录饺子的单价,库存等信息并将这些信息按一定规律排列供管理者参考,还要记录每天的收入与库存消耗。

2)系统组成框图系统组成如下图所示,点餐/帐目信息管理系统中任务调度模块是信息管理的指挥中心,所有的功能模块均通过该模块集中管理和调用。

数据文件是用于将改变的记录随时保存起来,I/O交互模块是指数据按键和控制按键的响应操作。

数据按键是窗口的输入输出。

系统平台I/O交互任务调度数据文件添加账目查询账目查询原料销量排序当天收入功能模块设计;本管理系统开发的过程中成功地完成很多函数的编写,而且全部通过程序调试。

下面针对与该系统相关的主要功能函数的编写思路和实现方法作总结。

1)数据描述与数据文件(1)数据描述;系统中共定义了三种结构体分别是struct list(账单信息)、struct dump(原材料信息)、struct system(管理信息)其中账单信息成员定义如下; struct list/*账单信息 */ { int num;/*编号*/ intmonth;/*月份*/ int date;/*日期*/ int table;/*桌号*/ int people;/*人数*/ int add;/*收款金额*/ };原材料信息;struct dump/*原材料信息*/ { int num;/*编号*/ char a[40];/*名称*/ int price;/*单价*/ int quantity;/*库存*/ };管理信息;struct system { struct dump data;/*点餐*/ int cash;/*收款*/ int sale;/*销量*/ int p;/*人数*/ };(2)数据文件;共定义四个数据文件;记录编号的文件count、记录原料的文件dumplings、记录账单的文件customer、数据处理文件system。

C语言大作业

C语言大作业

C语言大作业题目1电话簿管理程序存储的数据包括:人名、工作单位、电话号码和E-mail地址等。

程序要求具有如下功能:①加入一个新电话号码;②删除一个电话号码;③显示保存的所有电话号码。

④修改功能;⑤排序功能,包括按照电话号码排序和按照姓名字母序排列;⑥查询功能,包括按人名查询电话号码和按电话号码查询人名。

⑦保存信息到文件。

⑧从文件读取信息。

课程设计要求:程序运行开始,首先显示一个提示信息,作为一个功能选择菜单。

用户选用哪条功能,就调用哪项功能。

2班级同学信息管理程序存储的数据包括:姓名,学号,宿舍,QQ号码和电话号码等。

程序要求具有以下功能:①加入一个同学的记录;②删除一个同学的记录;③显示所有同学的记录。

④排序功能,包括按照学号排序和按照姓名字母序排序显示所有同学的纪录。

⑤查询功能,包括按学号查询同学的信息或者其他。

⑥修改功能。

⑦保存信息到文件。

⑧从文件读取信息。

课程设计要求:程序运行开始,首先显示一个提示信息,作为一个功能选择菜单。

用户选用哪条命令,就调用哪项功能。

3职工信息管理系统职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。

提供以下功能:①加入一个职工的记录;②删除一个职工的记录;③显示所有职工的记录。

④排序功能,包括按照学号排序和按照姓名字母序排序显示所有职工的纪录。

⑤查询功能,包括按工号或姓名查询职工的信息或者其他。

⑥修改功能。

⑦保存信息到文件。

⑧从文件读取信息。

课程设计要求:程序运行开始,首先显示一个提示信息,作为一个功能选择菜单。

用户选用哪条命令,就调用哪项功能。

4图书信息管理系统图书信息包括:图书号、书名、作者名、分类号、出版单位、出版时间、价格等。

提供以下功能:①加入一本图书;②删除一本图书;③显示所有图书。

④排序功能,包括按照书名排序所有图书。

⑤查询功能,包括按书名查询图书。

⑥修改功能⑦保存信息到文件。

⑧从文件读取信息。

课程设计要求:程序运行开始,首先显示一个提示信息,作为一个功能选择菜单。

C语言大作业

C语言大作业

#include<stdio.h>#include<string.h>#include<stdlib.h> //exit()的头文件#include<conio.h> //屏幕操作函数#define N 100 //控制学生记录的容量#define M 3 //控制课程数#define LEN 9void menu();void browse();typedef struct student //定义学生结构体{char num[11]; //把学号定义成字符数组类型,一来学号可能比较长,二来可直接用strcmp来比较,确保无雷同char name[20];int score[M];double ave;}STU;STU stu[N]; //定义一个外部学生结构体变量/*****以写的方式保存数据到文件的函数【原数据将被覆盖】*****/int save(int n) //保存函数,保存n个记录{FILE *fp;int i;if((fp=fopen("zhouhao.txt","wb"))==NULL)//以二进制写的方式打开,在此前的记录被覆盖{printf("无法打开文件!\n任意键退出程序... ...\n");getch(); //预防闪屏return 0;}for(i=0;i<n;i++)if(stu[i].ave!=0) //在后面的del()函数中通过将stu[i].ave=0来表示该记录被删除了if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)//开始写入文件printf("文件写入发生错误\n");fclose(fp);return 0; // 注意下这个地方,我只是随便赋的值,只是为了消除一个警告}/********【拷贝函数单纯的将一个文件拷贝到另一个文件中】*******/void copy(){char outfile[20],infile[10]; //保存源文件名和目标文件名FILE *sfp,*tfp; //定义指向源文件(sourcefile)和目标文件(targetfile)的指针STU *p=NULL; //定义临时指针,暂存读出的记录system("CLS"); //清屏;printf("请输入需要被复制的文件名(默认数据处理在zhouhao.txt中):\n");scanf("%s",infile); //输入源文件名if((sfp=fopen(infile,"rb"))==NULL)//以二进制方式打开源文件{printf("无法打开文件!\n任意键退出程序... ...\n");//显示不能打开文件的信息getch();return;}printf("另存为...,比如:hao.txt:\n"); //提示输入目标文件名scanf("%s",outfile); //输入目标文件名if((tfp=fopen(outfile,"wb"))==NULL)//以二进制写方式打开目标文件{printf("无法打开文件!\n\n");//显示不能打开文件的信息getch();return; //退出程序,同exit(0)}while(!feof(sfp)) //读文件直到文件尾fputc(fgetc(sfp),tfp); //从stp复制文件到tfpfclose(sfp); //关闭源文件fclose(tfp); //关闭目标文件printf("\n复制成功!!!\n"); //显示拷贝成功信息printf("\n输入任意键返回主菜单");getch();menu();}/***【加载记录或可以计算记录个数的函数】***/int load(){FILE *fp;int i;if((fp=fopen("zhouhao.txt","rb"))==NULL) //以二进制读的方式打开{printf("无法打开文件!\n任意键退出程序... ...\n"); //显示不能打开文件的信息getch(); //预防闪屏return 0;}for(i=0;!feof(fp);i++)fread(&stu[i],sizeof(struct student),1,fp); //将文件数据读入学生结构体fclose(fp);return(i-1); //返回目前总的记录个数,注意是i-1}/***【一个任务结束时的选择浏览还是返回的函数】***/void printf_back(){int w;printf("\n\t操作成功!^_^\n");printf("\t接着干什么?\n\t1).立刻浏览全部数据\t2).返回:[ ]\b\b");scanf("%d",&w);if(w==1)browse();elsemenu();}/***【显示数据结构项目函数】***/void printf_face(){printf("\n\t学号\t姓名\t\t 数学\t 英语C语言平均分\n"); //显示行头}/***【求平均分函数】因为后面在修改数据中要专门重算平均数***/void average(int i){int j,sum;for(sum=0,j=0;j<M;j++)sum+=stu[i].score[j];stu[i].ave=sum*1.0/M;}/*******【学号长度处理函数】********/void no_deal(int i){int j,l,a;l=strlen(stu[i].num);if(l<LEN){for(j=LEN-l,a=0;j<LEN;j++){stu[i].num[j]=stu[i].num[a++];}stu[i].num[i]='\0';for(a=0;a<LEN-l;a++)stu[i].num[a]='0';}if(l>LEN)stu[i].num[l]='\0';}/*******【学号输入函数】*******/int no_input(int i,int n) //i表示第i个学生信息,n表示比较到第n个学生{int j,k,w1;do{w1=0;printf("学号:\t\t 【%d位,低于%d位前面补0,长的截尾处理!】\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b",LEN,LEN);scanf("%s",stu[i].num);no_deal(i);for(j=0;stu[i].num[j]!='\0';j++) //学号输入函数,作了严格的规定if(stu[i].num[j]<'0' || stu[i].num[j]>'9') //判断学号是否为数字{puts("别开玩笑!只能输入0——9.好吧,再给你一次机会,别让我失望!\n");w1=1; //这个w1=1,表示学号中输入了不是数字的字符break;}if(w1!=1) //w1!=1,确保验证时学号已经是由0-9的数组成的for(k=0;k<n;k++) //比较到第n个学生if(k!=i && strcmp(stu[k].num,stu[i].num)==0)//判断学号是否有雷同{puts("已经存在啦!重来一次!\n");w1=1; //w1=1,表示学号存在雷同break;}}while(w1==1); //总之,w1=1代表学号输入又问题,要重新输入return 0;}/***【分数输入函数】***/int score_input(int i){int j;for(j=0;j<M;j++){printf("分数%d:",j+1);scanf("%d",&stu[i].score[j]);}return 0;}/***【输入一整条记录的函数】***/void input(int i){no_input(i,i); //调用输入学号的函数printf("姓名:");scanf("%s",stu[i].name); //输入姓名score_input(i); //输入分数average(i); //计算平均分}/***【显示一整条记录的函数】***/void printf_one(int i){int j;printf("%11s %-14s",stu[i].num,stu[i].name); //输出学号和姓名for(j=0;j<M;j++)printf("%9d",stu[i].score[j]); //输出分数printf(" %9.2f\n",stu[i].ave); //输出平均分}/*【显示----函数顶部】*/void topput___(){printf("\n 记录浏览");printf("\n--------------------------------------------------------------------------------\n");}/*【显示----函数底部】*/void puts___(){printf("\n\n--------------------------------------------------------------------------------\n");}/*【修改记录函数】*/int modify_data(int i,int n) //修改数据函数,修改第i个记录{int c,w1;do{puts("\n你想修改什么: =>\n\n1).学号\t2).姓名\t3).数学\t4).英语\t5).C语言\n6).重输所有分数\t7).重输所有记录\t8).取消并返回");printf("想好就输,快:[ ]\b\b");scanf("%d",&c);if(c>8 || c<1)puts("\n选择失误!严肃点,再来一次!");//判断选择是否错误,若是则重新选择getchar(); //当输入时字符时可以防止死循环,觉得这个很重要,老师也没提过}}while(c>8 || c<1);do{switch(c) //选择要修改的项目{case 1:no_input(i,n);break;case 2:printf("姓名:");scanf("%s",stu[i].name);break;//调用学号输入函数case 3:printf("数学:");scanf("%d",&stu[i].score[0]);break;case 4:printf("英语:");scanf("%d",&stu[i].score[1]);break;case 5:printf("C语言:");scanf("%d",&stu[i].score[2]);break;case 6:score_input(i);break;case 7:input(i);break;case 8:menu(); //break; 在最后,有没有无所谓}if(c>2 && c<7)average(i); //由于3,4,5,6项改变的同时也把平均分动了,必须修正一下puts("\n现在:\n");printf_face();printf_one(i); //显示修改后的数据printf("\n你确定你目前的决定?\n\n\t1).当然啦! \t2).不不不,重修改一下!\n\t3).算了还是走吧,别保存了![ ]\b\b");//是否确定scanf("%d",&w1); //选择2则表示这次修改错误要重新修改}while(w1==2);return w1; //返回控制值}/* * * * * * * * * * * * 输入模块* * * * * * * * * * * */void enter(){int i,n;system("CLS"); //引用外部清屏,clrscr()在VC++中不好用printf("输入你要记录的学生数吧:(1~%d)?\t['0'返回]:\n",N);scanf("%d",&n); //要输入的计入个数if(n==0)menu(); //输0 的时候返回else{printf("\n\t好的!开始输入...\n");for(i=0;i<n;i++)printf("\n请输入第%d个的记录.\n",i+1);input(i); //调用输入函数}if(i!=0)save(n); //调用保存函数printf_back();} //一个任务结束时让用户选择是浏览还是返回}/*******************************追加模块*************************************/ int add(){int i,n,m,k;FILE *fp;system("CLS");n=load(); //获得总记录的个数,并加载记录printf("你需要加入多少学生:(0 ~ %d)?:",N-n);scanf("%d",&m); //输入要追加记录的个数if(m==0)menu();else{k=m+n;for(i=n;i<k;i++){printf("\n请输入第%d个的记录.\n",i-n+1);input(i); //调用输入函数}if((fp=fopen("zhouhao.txt","ab"))==NULL)//以ab方式打开,追加保存{printf("文件打不开!\n"); //显示不能打开文件的信息getch();return 0;}for(i=n;i<k;i++)if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)printf("文件写入错误!\n");fclose(fp);printf_back(); //一个任务结束时让用户选择是浏览还是返回}return 0;}/***************************** 修改模块*************************/{struct student s;int i,n,k,w0=0,w1,w2=0;n=load(); //获得总记录的个数,并加载记录do{system("CLS");k=-1;/*****给用户看所有的记录以便用户确认要修改的记录*****/topput___();printf_face();for(i=0;i<n;i++)printf_one(i); //调用显示一个记录的函数puts___();/*****给用户看所有的记录以便用户确认要修改的记录*****/do{printf("\n\n输入你要修改记录的学号! 学号. :\t【'Ctrl-z' 退出】");if(scanf("%s",s.num)!=1) //输入要修改数据的学号menu();for(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.num,stu[i].num)==0){k=i; //找到要修改的记录s=stu[i]; //把stu[i](即把当次修改的学生记录)备份给s,以便用户反悔时恢复}if(k==-1)printf("\n\n不存在! 请重新输入~");}while(k==-1); //当K=-1表示没有找到printf_face(); //调用显示数据结构项目函数printf_one(k); //显示查找的记录w1=modify_data(k,n); //修改学生记录并且返回保存控制值w1,w1=1则表示用户已确认修改[w1只能是1或3(1代表确认修改,3代表不保存返回)] if(w1==1) //w1=1代表确认修改{printf("\n操作成功!\n\n决定修改别的吗?\n\n\t1).是的\t2).不!保存并返回\t[ ]\b\b");scanf("%d",&w0);w2=1; //来控制保存,使w2=1是标记已有过修改}else //此时w1=3,表示不保存返回{w0=0;if(w2==1) //w2=1表示已有过修改stu[k]=s; //反悔了,将修改前的值复原}if(w0!=1 && w2==1) //w0不等于1则表示正常返回,w2=1表示在此之前有修改过,这时就保存用户已确认修改的并返回save(n); //w2不等于1表示在此之前没有修改过,而又反悔这次修改,则不保存,保存时覆盖原先数据}while(w0==1);menu(); //返回主菜单}/*******************************删除模块*************************/void del(){struct student s;int i,k,n,c,w0=1;system("CLS");n=load(); //获得总记录的个数,并加载记录do{system("CLS");k=-1;/*给用户看全部记录以便确认要删除的记录*/topput___();printf_face(); //调用显示数据结构项目的函数for(i=0;i<n;i++)if(stu[i].ave!=0)printf_one(i); //显示所有数据puts___();/*给用户看全部记录以便确认要删除的记录*/do //输入要删除记录的学号,并寻找{printf("\n\n输入你要删除记录的学号! NO.:\t【'Ctrl-z' 退出】");if(scanf("%s",s.num)!=1)menu();for(i=0;i<n;i++)if(strcmp(s.num,stu[i].num)==0){k=i; //重赋k值表示找到寻找的数据s=stu[i];}if(k==-1) //k=-1表示没找到相同的printf("\n\n不存在! 请重新输入!");}while(k==-1);puts("\n");printf_face();printf_one(k); //显示要删除的记录printf("\n你确定?\n\t1).确定2).不,我要删除其他的3).不保存退出[ ]\b\b");//给用户一次反悔的机会scanf("%d",&c);if(c==1){stu[k].ave=0; //这是很重要的,通过stu[k].ave=0,通知保存的时候忽略掉,不进行保存printf("\n\n操作成功!\n\n要继续删数据吗?\n\t1).继续2).返回主菜单\t[ ]\b\b");scanf("%d",&w0);}if(c==3)w0=0; //w0=0不删除直接返回if(w0!=0 && c!=3) //只有当确认删除后返回才保存,不删除直接返回则不保存,且不保存在此之前删除过的记录save(n);}while(w0==1);menu();}/**************************************浏览(全部)模块*****************************************/void browse(){int i,n;n=load(); //获得总记录的个数,并加载记录system("CLS");topput___();printf_face(); //调用显示数据结构项目的函数for(i=0;i<n;i++) //循环输出所有学生的信息printf_one(i);puts___();printf("\n\t 这里一共有%d 个记录!\n",n);printf("\n\t 输入任意键返回主菜单... ...");getch();menu();}/*******************************查找模块************************************/ void search(){int i,n,k,w1=1,w2,w3,w4;struct student s;system("CLS");n=load(); //获得总记录的个数,并加载记录do{do{k=-1;printf("\n\n输入你要查找记录的主人公! 姓名:");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,stu[i].name)==0){k=i;printf_one(k); //考虑到同名的情况,可能输出不只一个,把所有的记录都查找一下}if(k==-1) //k=-1表示没找到相同的{printf("\n\n不存在! 请重新输入!");printf("\n\n要继续吗?\n\t1).继续\t 2).不,我要返回\t[ ]\b\b");scanf("%d",&w1);}}while(k==-1 && w1!=2); //k=-1表示没找到要查找的对象,w1!=2表示继续查找w4=w3=0; //初始化w4=w3=0if(k!=-1){printf("\n\n接着干什么?\n\t1).再次查找2).修改3).删除4).返回主菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 2:w3=modify_data(k,n);break;case 3:{printf("\n\n你确定了吗?\n\t1).确定2).不,还是返回吧! \t[ ]\b\b");scanf("%d",&w4);if(w4==1) //w4=1,表示确定删除stu[k].ave=0; //表示删除,当stu[k].ave=0,在save()中就不保存该数据,表示删除break;}}if(w3==1 || w4==1){save(n);printf("\n\n操作成功!");printf("\n\n接着干什么?\n\t1).再次查找2).返回[ ]\b\b");scanf("%d",&w2);}}}while(w2==1);menu();}/*******************************排序模块(按平均成绩)*********************************/void order(){int i,j,k,n;struct student s;system("CLS"); //清屏n=load(); //获得总记录的个数,并加载记录for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(stu[j].ave>stu[k].ave) //选择法排序,按平均分降序k=j;s=stu[i];stu[i]=stu[k];stu[k]=s;}save(n);puts("\n\n");printf_back();}/**********************************主界面************************************/ void menu(){int n,w1;do{system("CLS");;puts("\n\t\t\t\t学生信息管理系统\n");puts("\t ------- 周浩\n");puts("\t ************************ 主菜单*********************\n\n");puts("\t\t\t 1.初始数据输入(会覆盖已有数据)");puts("\t\t\t 2.可选择个数的数据添加");puts("\t\t\t 3.数据部分修改");puts("\t\t\t 4.数据部分删除");puts("\t\t\t 5.数据查看与浏览");puts("\t\t\t 6.数据查找(按姓名)");puts("\t\t\t 7.数据排序(按平均分降序)");puts("\t\t\t 8.已有文件文件拷贝");puts("\t\t\t 0.退出系统");puts("\n\n\t ****************************************************\n");printf("\t输入你的选择(0~8):[ ]\b\b");scanf("%d",&n);if(n<0 || n>8){w1=1;printf("\t你的选择不再0 到8 之间,按任意键重新输入!");getch();}elsew1=0;}while(w1==1);switch(n){case 1:enter();break;case 2:add();break;case 3:modify();break;case 4:del();break;case 5:browse();break;case 6:search();break;case 7:order();break;case 8:copy();break;case 0:exit(0);break;}}/************************************主函数***************************************/void main(){menu();}。

C语言实训大作业

C语言实训大作业

C语言实训大作业As a person, we must have independent thoughts and personality.
1.基于链表的“学生信息管理系统”
实验内容:编写并调试程序,实现学校各专业班级学生信息的管理。

定义学生信息的链表结点类型,包括:学号、姓名、班级、专业、3门成绩。

实验要求:
(1)main函数:以菜单形式将各项功能提供给用户,根据用户的选择,调用
相应的函数。

(2)定义函数CreateList:按学号由小到大,建立有序的链表。

逆序输入 n
个学生信息(调用n次input),学号大的先输入,建立带头结点的单
链表。

(3)定义函数Output:以指向某个学生结点的指针为参数,将学生信息格式
化输出。

(4)定义函数Save:将某个学生信息存入文件。

(5)定义函数Fetch:从文件中随机读取某个学生的信息。

(6)定义函数Search_num:查找指定学号的学生,返回指向该学生结点的指
针。

(7)定义函数InsertList:在函数中输入一个学生的信息,将该学生信息插
入到链表中的相应位置,并保持此链表按学号的有序性。

(8)定义函数Delete_num:从链表中删除指定学号的学生。

(9)定义函数Search_major _subject_score:查找某个专业的、某门课程
的成绩小于某个分数的学生,返回指向该学生结点的指针。

(10)定义函数Delete_ major _subject:从链表中删除某个专业的、某
门课程的成绩小于某个分数的学生。

c语言大作业

c语言大作业

#include"stdio.h"#include"conio.h"#include"string.h"#include"stdlib.h"int look(); /*声明查看函数*/int save(); /*声明保存函数*/int search_name(); /*声明按姓名查看函数*/int search_number(); /*声明按学号查看函数*/int order(); /*声明排序函数*/int del(); /*声明删除函数*/int openl(); /*声明打开函数*/int welcome(); /*声明我的个人信息函数*/int type(); /*声明输入函数*/int see(); /*声明打开并查看文件函数*/struct student /*定义学生信息的结构体类型*/{char num[15]; /*学号*/char name[20]; /*姓名*/char sex[4]; /*性别*/int chinese; /*语文成绩*/int english; /*英语成绩*/int math; /*数学成绩*/int science; /*科学成绩*/int phy; /*体育成绩*/float aver; /*平均成绩*/float sum; /*总成绩*/}stu[100];int n; /*声明一个全局变量*/int main() /*主函数即用户的操作界面*/{system("color 1E"); /*设计文本颜色*/int b,flag=0; /*声明局部变量*/while(1) /*循环输出以下信息*/{printf("\n\t\t\t欢迎来到学生成绩管理系统!\n");printf("\n\t\t\t\t 赵仓龙、刘铄制作\n");printf("\t\t\t-------------------------------\n");printf("\t\t\t1.键入学生的信息\n\n"); /*键入学生的信息*/printf("\t\t\t2.查看录入的学生信息\n\n"); /*查看录入的学生信息*/printf("\t\t\t3.按姓名查看学生的信息\n\n"); /*按姓名查看学生的信息*/ printf("\t\t\t4.按学号查看学生的信息\n\n"); /*按学号查看学生的信息*/ printf("\t\t\t5.按平均成绩排序\n\n"); /*排序*/printf("\t\t\t6.删除学生信息\n\n"); /*删除学生信息*/printf("\t\t\t7.保存学生信息\n\n"); /*保存*/printf("\t\t\t8.打开文件\n\n");/*打开文件*/printf("\t\t\t9.我的个人信息\n\n"); /*我的个人信息*/printf("\t\t\t0.退出\n\n"); /*退出*/printf("\t\t\t请输入你的选择:");scanf("%d",&b);switch(b){case 1:type();break; /*调用键入学生信息函数*/case 2:look();break; /*调用查看函数*/case 3:search_name();break; /*调用姓名查看函数*/case 4:search_number();break; /*调用学号查看函数*/case 5:order();break; /*调用排序函数*/case 6:del();break;/*调用删除函数*/case 7:save();break;/*调用保存函数*/case 8:see();break;/*调用打开文件函数*/case 9:welcome();break;/*调用我的个人信息函数*/case 0:flag=1;break;/*退出SWITCH语句*/default :printf("错误!");}if(flag) break; /*如果选择0就退出循环*/}}int welcome() /*我的个人信息函数*/ {system("CLS");printf("\n\n\t\t------------个人信息------------"); /*在屏幕上输出一下信息*/printf("\n\n\n\n\t\t姓名: ");printf("\t\t\tSex:m\n");printf("\t\t年龄:20\n");printf("\n\n\n\n\t\t姓名: ");printf("\t\t\tSex:m\n");printf("\t\t年龄:20\n");printf("\n\n\t\t按任意键返回欢迎屏幕!");getch(); /*按任意键返回主函数*/}int type() /*定义键入学生信息函数*/ {system("CLS");int i; /*定义局部变量*/printf("\t\t输出你想输入的学生信息个数:");scanf("%d",&n);for(i=0;i<n;i++) /*输入每个学生的信息*/{printf("\n\t\t\t----------------\n" );printf("\t\t\t学号:");scanf("%s",&stu[i].num); /*输入学号*/printf("\t\t\t姓名:");scanf("%s",&stu[i].name); /*输入姓名*/printf("\t\t\t性别:");scanf("%S",&stu[i].sex); /*输入性别*/printf("\t\t\t语文:");scanf("%d",&stu[i].chinese); /*输入英语成绩*/printf("\t\t\t数学:");scanf("%d",&stu[i].math); /*输入数学成绩*/printf("\t\t\t英语:");scanf("%d",&stu[i].english); /*输入语文成绩*/printf("\t\t\t科学:");scanf("%d",&stu[i].science);printf("\t\t\t体育:");scanf("%d",&stu[i].phy);}printf("\n\n\t\t\t按任意键返回菜单!!");getch();save();}int save() /*建立保存文件函数*/{system("CLS");FILE *fp; /*定义文件型指针*/int i;if((fp=fopen("C语言大作业测试数据.txt","wb"))==NULL) /*打开输出文件*/{printf("不能打开文件!\n");return 0; /*终止程序*/}for(i=0;i<n;i++) /*向student文件中写入信息*/if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1)printf("文件写入错误\n");fclose(fp); /*关闭文件*/printf("\n\n\n\n\t\t\t学生信息保存成功!\n");printf("\n\n\n\n\t\t\t按任意键返回菜单!!");getch();}int look() /*定义查看函数*/{system("CLS");int i;//n=openl(); /*调用openl函数*/ printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++) /*输出所有的学生信息*/{printf("%12s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%3.1f\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);}printf("\n\n\n\t\t\t按任意键返回菜单");getch();}int search_name() /*按姓名查看函数*/ {system("CLS");int i;char name[20]; /*声明字符数组*/printf("\t\t\t请输入学生姓名:\n");scanf("%s",name);printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)if(strcmp(stu[i].name,name)==0)/*将输入的姓名与结构体中的姓名进行比较*/{printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%3.1f\n",stu[i].num,stu[i].na me,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);printf("\n\n\n\t\t\t按任意键返回菜单");}getch();}int search_number() /*定义按学号查看函数*/{system("CLS");int i;char number[15]; /*声明字符数组printf("\t\t\t请输入学号:\n");scanf("%s",number);printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)if(strcmp(stu[i].num,number)==0) /*将输入的学号与结构体中的学号进行比较*/printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%d\t%d\t%3.1f\n",stu[i].num,stu[i].na me,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);printf("\n\n\n\t\t\t按任意键返回菜单");getch();}int order() /*定义排序函数*/system("CLS");int i,j;char a;struct student temp; /*声明结构体变量*/printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++) /*对数据进行排序*/{for(j=i+1;j<n;j++)if(stu[i].sum<stu[j].sum){temp=stu[i];stu[i]= stu[j];stu[j]=temp;}printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);}getch();printf("是否保存(y or n)");getchar();scanf("%c",&a);if(a=='y') /*是否保存排序后的文件*/save();elseprintf("退出");getch();}int del() /*定义删除学生信息函数*/ {int i;char a;char name[20];system("CLS");printf("\t\t\t输入学生名字:\n");scanf("%s",name);system("CLS");printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)if(strcmp(stu[i].name,name)==0){printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%3.1f\n",stu[i].num,stu[i].na me,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);getch();printf("真的删除?(y or n)");getchar();scanf("%c",&a);if(a=='y') /*是否删除该信息*/{for(;i<n;i++)stu[i]=stu[i+1];n=n-1;printf("你已经删除信息");}elseprintf("退出");getch();}save();}int openl() /*定义打开文件函数*/ {system("CLS");int i;FILE *fp;if((fp=fopen("C语言大作业测试数据.txt","rb"))==NULL){printf("Cannot open file.\n");exit(0);}for(i=0;!feof(fp);i++)fread(&stu[i],sizeof(struct student),1,fp);fclose(fp);return(i-1);}int see() /*打开并查看文件*/{system("CLS");int i;n=openl();printf("文件打开成功!\n");printf("按任意键查看!\n");getch();printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++) /*输出所有的学生信息*/{printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%3.1f\n",stu[i].num,stu[i].na me,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);}printf("\n\n\n\t\t\t按任意键返回菜单");getch();}。

c语言课程设计大作业

c语言课程设计大作业

c语言课程设计大作业一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构和算法,具备使用C语言进行程序设计的能力。

具体目标如下:1.知识目标:学生能够理解并掌握C语言的基本语法、数据结构和常用算法。

2.技能目标:学生能够运用C语言编写简单的程序,解决实际问题。

3.情感态度价值观目标:学生能够体验到编程的乐趣,培养对计算机科学的兴趣。

二、教学内容根据课程目标,本课程的教学内容主要包括C语言的基本语法、数据结构和算法。

具体安排如下:1.C语言的基本语法:包括变量、运算符、控制结构、函数等。

2.数据结构:包括数组、链表、栈、队列、树等。

3.算法:包括排序算法、查找算法、递归算法等。

三、教学方法为了达到课程目标,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。

具体方法如下:1.讲授法:用于讲解C语言的基本语法、数据结构和算法。

2.讨论法:用于引导学生探讨编程问题,培养解决问题的能力。

3.案例分析法:通过分析实际案例,使学生更好地理解C语言的应用。

4.实验法:让学生动手编写程序,提高编程能力。

四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:《C语言程序设计》。

2.参考书:提供相关的编程资料和算法教程。

3.多媒体资料:制作课件和教学视频,辅助学生学习。

4.实验设备:提供计算机实验室,让学生进行编程实践。

五、教学评估本课程的评估方式包括平时表现、作业和考试。

具体评估方式如下:1.平时表现:通过学生在课堂上的参与度、提问和讨论,评估其对C语言的理解和应用能力。

2.作业:布置编程作业,评估学生对C语言语法和算法的掌握程度。

3.考试:进行期中和期末考试,评估学生对C语言的整体掌握情况。

评估方式应客观、公正,能够全面反映学生的学习成果。

六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保学生掌握C语言的基本语法、数据结构和算法。

c语言大作业课程设计

c语言大作业课程设计

c语言大作业 课程设计一、课程目标知识目标:1. 理解C语言中数组、函数、指针等基本概念,掌握其应用方法;2. 学会使用C语言编程解决实际问题,如数值计算、数据处理等;3. 了解C语言程序设计中常用的算法与数据结构,如排序、查找等;4. 掌握C语言编程规范,提高代码质量。

技能目标:1. 能够独立设计并编写具有实际意义的C语言程序,具备一定的编程能力;2. 学会运用调试工具,如GDB,对程序进行调试,找出并解决程序中的错误;3. 能够阅读和理解C语言源代码,具备一定的代码阅读能力;4. 具备团队协作能力,与他人共同完成复杂的编程任务。

情感态度价值观目标:1. 培养学生对C语言编程的兴趣,激发学习热情,树立编程自信心;2. 培养学生严谨、认真的学习态度,养成良好的编程习惯;3. 培养学生面对编程难题时的耐心与毅力,具备解决问题的决心;4. 培养学生的创新意识,鼓励尝试新方法,勇于挑战自我。

本课程针对高年级学生,课程性质为实践性较强的编程课程。

在教学过程中,要求学生具备一定的C语言基础,能够通过本课程的学习,将所学的理论知识运用到实际编程中,提高解决实际问题的能力。

课程目标的设定旨在使学生能够通过本课程的学习,掌握C语言的核心知识,培养编程技能,同时注重情感态度价值观的培养,全面提高学生的综合素质。

后续教学设计和评估将围绕这些具体学习成果展开。

二、教学内容本章节教学内容主要包括以下几部分:1. C语言基础回顾:数组、函数、指针等基本概念及其应用;- 数组:一维数组、二维数组、字符数组;- 函数:函数定义、调用、传值与传址;- 指针:指针的概念、指针与数组、指针与函数。

2. 算法与数据结构:排序、查找等常用算法;- 排序:冒泡排序、选择排序、插入排序;- 查找:顺序查找、二分查找。

3. 编程规范与调试技巧:C语言编程规范、GDB调试工具的使用;- 编程规范:命名规则、代码格式、注释;- 调试技巧:设置断点、单步执行、查看变量值。

c语言大作业

c语言大作业

#include""#include""#include""#include""intlook();/*声明查看函数*/intsave();/*声明保存函数*/intsearch_name();/*声明按姓名查看函数*/intsearch_number();/*声明按学号查看函数*/intorder();/*声明排序函数*/intdel();/*声明删除函数*/intopenl();/*声明打开函数*/ intwelcome();/*声明我的个人信息函数*/ inttype();/*声明输入函数*/intsee();/*声明打开并查看文件函数*/ structstudent/*定义学生信息的结构体类型*/{charnum[15];/*学号*/charname[20];/*姓名*/charsex[4];/*性别*/intchinese;/*语文成绩*/intenglish;/*英语成绩*/intmath;/*数学成绩*/intscience;/*科学成绩*/intphy;/*体育成绩*/floataver;/*平均成绩*/floatsum;/*总成绩*/}stu[100];intn;/*声明一个全局变量*/intmain()/*主函数即用户的操作界面*/ {system("color1E");/*设计文本颜色*/ intb,flag=0;/*声明局部变量*/while(1)/*循环输出以下信息*/{printf("\n\t\t\t欢迎来到学生成绩管理系统!\n");printf("\n\t\t\t\t赵仓龙、刘铄制作\n");printf("\t\t\t-------------------------------\n");printf("\t\t\t1.键入学生的信息\n\n");/*键入学生的信息*/printf("\t\t\t2.查看录入的学生信息\n\n");/*查看录入的学生信息*/printf("\t\t\t3.按姓名查看学生的信息\n\n");/*按姓名查看学生的信息*/ printf("\t\t\t4.按学号查看学生的信息\n\n");/*按学号查看学生的信息*/ printf("\t\t\t5.按平均成绩排序\n\n");/*排序*/printf("\t\t\t6.删除学生信息\n\n");/*删除学生信息*/printf("\t\t\t7.保存学生信息\n\n");/*保存*/printf("\t\t\t8.打开文件\n\n");/*打开文件*/printf("\t\t\t9.我的个人信息\n\n");/*我的个人信息*/printf("\t\t\t0.退出\n\n");/*退出*/printf("\t\t\t请输入你的选择:");scanf("%d",&b);switch(b){case1:type();break;/*调用键入学生信息函数*/case2:look();break;/*调用查看函数*/case3:search_name();break;/*调用姓名查看函数*/case4:search_number();break;/*调用学号查看函数*/case5:order();break;/*调用排序函数*/case6:del();break;/*调用删除函数*/case7:save();break;/*调用保存函数*/case8:see();break;/*调用打开文件函数*/case9:welcome();break;/*调用我的个人信息函数*/case0:flag=1;break;/*退出SWITCH语句*/default:printf("错误!");}if(flag)break;/*如果选择0就退出循环*/}}intwelcome()/*我的个人信息函数*/{system("CLS");printf("\n\n\t\t------------个人信息------------");/*在屏幕上输出一下信息*/printf("\n\n\n\n\t\t姓名:");printf("\t\t\tSex:m\n");printf("\t\t年龄:20\n");printf("\n\n\n\n\t\t姓名:");printf("\t\t\tSex:m\n");printf("\t\t年龄:20\n");printf("\n\n\t\t按任意键返回欢迎屏幕!");getch();/*按任意键返回主函数*/}inttype()/*定义键入学生信息函数*/ {system("CLS");inti;/*定义局部变量*/printf("\t\t输出你想输入的学生信息个数:");scanf("%d",&n);for(i=0;i<n;i++)/*输入每个学生的信息*/{printf("\n\t\t\t----------------\n" );printf("\t\t\t学号:");scanf("%s",&stu[i].num);/*输入学号*/printf("\t\t\t姓名:");scanf("%s",&stu[i].name);/*输入姓名*/printf("\t\t\t性别:");scanf("%S",&stu[i].sex);/*输入性别*/printf("\t\t\t语文:");scanf("%d",&stu[i].chinese);/*输入英语成绩*/printf("\t\t\t数学:");scanf("%d",&stu[i].math);/*输入数学成绩*/printf("\t\t\t英语:");scanf("%d",&stu[i].english);/*输入语文成绩*/printf("\t\t\t科学:");scanf("%d",&stu[i].science);printf("\t\t\t体育:");scanf("%d",&stu[i].phy);}printf("\n\n\t\t\t按任意键返回菜单!!");getch();save();}intsave()/*建立保存文件函数*/{system("CLS");FILE*fp;/*定义文件型指针*/inti;if((fp=fopen("C语言大作业测试数据.txt","wb"))==NULL)/*打开输出文件*/ {printf("不能打开文件!\n");return0;/*终止程序*/}for(i=0;i<n;i++)/*向student文件中写入信息*/if(fwrite(&stu[i],sizeof(structstud ent),1,fp)!=1)printf("文件写入错误\n");fclose(fp);/*关闭文件*/printf("\n\n\n\n\t\t\t学生信息保存成功!\n");printf("\n\n\n\n\t\t\t按任意键返回菜单!!");getch();}intlook()/*定义查看函数*/{system("CLS");inti;um,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);}printf("\n\n\n\t\t\t按任意键返回菜单");getch();}intsearch_name()/*按姓名查看函数*/ {system("CLS");inti;charname[20];/*声明字符数组*/printf("\t\t\t请输入学生姓名:\n");scanf("%s",name);printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)if(strcmp(stu[i].name,name)==0)/*将输入的姓名与结构体中的姓名进行比较*/{printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);printf("\n\n\n\t\t\t按任意键返回菜单");}getch();}intsearch_number()/*定义按学号查看函数*/{system("CLS");inti;charnumber[15];/*声明字符数组*/printf("\t\t\t请输入学号:\n");scanf("%s",number);printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)if(strcmp(stu[i].num,number)==0)/*将输入的学号与结构体中的学号进行比较*/printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);printf("\n\n\n\t\t\t按任意键返回菜单");getch();}intorder()/*定义排序函数*/{system("CLS");inti,j;chara;structstudenttemp;/*声明结构体变量*/printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)/*对数据进行排序*/{for(j=i+1;j<n;j++)if(stu[i].sum<stu[j].sum){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);}getch();printf("是否保存(yorn)");getchar();scanf("%c",&a);if(a=='y')/*是否保存排序后的文件*/save();elseprintf("退出");getch();}intdel()/*定义删除学生信息函数*/{inti;chara;charname[20];system("CLS");printf("\t\t\t输入学生名字:\n");scanf("%s",name);system("CLS");printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)if(strcmp(stu[i].name,name)==0){printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].math,stu[i].english,stu[i].science,stu[ i].phy);getch();printf("真的删除(yorn)");getchar();scanf("%c",&a);if(a=='y')/*是否删除该信息*/{for(;i<n;i++)stu[i]=stu[i+1];n=n-1;printf("你已经删除信息");}elseprintf("退出");getch();}save();}intopenl()/*定义打开文件函数*/{system("CLS");inti;FILE*fp;if((fp=fopen("C语言大作业测试数据.txt","rb"))==NULL){printf("Cannotopenfile.\n");exit(0);}for(i=0;!feof(fp);i++)fread(&stu[i],sizeof(structstudent) ,1,fp);fclose(fp);return(i-1);}intsee()/*打开并查看文件*/{system("CLS");inti;n=openl();printf("文件打开成功!\n");printf("按任意键查看!\n");printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)/*输出所有的学生信息*/{printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);}printf("\n\n\n\t\t\t按任意键返回菜单");。

C语言大作业报告书

C语言大作业报告书

C语言大作业报告书一、目的1)巩固练习C语言的基础知识2)综合运用C语言的编程方法3)针对抽象的解题思路,设计程序结构4)基于VC6调试、测试与修改程序二、内容2.1、阅读程序,推导结果。

1、#include<iostream>using namespace std;int a = 200;int main(){int s=0;for(int i=1; i<=5; i++)s+=++a;cout<<s<<endl;return 0;}运行结果:10152、#include<iostream>using namespace std;int a[3][3]={{1},{2},{3}};int b[3][3]={1,2,3};void main(){cout<<a[0][1] + b[1][0] << ' ';cout<<a[1][0] + b[0][1] << endl;}运行结果:0 43、#include<iostream>using namespace std;void main(){int num=0,i=10;do{i--;num+=i;}while(--i);cout<<num<<endl;}运行结果:252.2、应用编程1、由键盘输入5个整数,输出其中最大、最小的数与它们的平均值。

提示:设置2个指示变量,分别记录最大、最小的数的下标;指示变量先设置为0,然后遍历数组,刷新指示。

解:#include <iostream>void main(){int a[5],i,s=0;float arry;for(i=0;i<5;i++)cin>>a[i];for(i=0;i<5;i++){for(int j=i+1;j<5;j++){if(a[i]>a[j]){int t=a[j];a[j]=a[i];a[i]=t;}}}cout<<"最小数="<<a[0]<<endl;cout<<"最大数="<<a[4]<<endl;for(i=0;i<5;i++){s=s+a[i];}arry=s/5;cout<<"平均值="<<arry<<endl;}输入:3 4 5 7 16输出:最小数=3最大数=16平均值=72、输出以下图案。

c语言课程设计大作业

c语言课程设计大作业

c语言课程设计大作业一、课程目标知识目标:1. 理解C语言中数组、函数、指针等基本概念,掌握其应用方法。

2. 学会运用结构体、文件操作等C语言高级特性进行程序设计。

3. 掌握程序调试与优化的基本方法,提高代码质量。

技能目标:1. 能够根据需求,设计并实现具有实用价值的C语言程序。

2. 培养良好的编程习惯,编写规范、可读性强的代码。

3. 提高问题分析能力,能够针对实际问题设计合适的算法和数据结构。

情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发自主学习动力。

2. 培养学生面对困难和挑战时,保持积极心态,勇于尝试,善于合作,克服困难。

3. 增强学生的创新意识,鼓励学生敢于发表自己的观点,尊重他人的意见。

课程性质:本课程为C语言课程设计大作业,旨在巩固和拓展学生所学知识,提高实际编程能力。

学生特点:学生已具备一定的C语言基础,对编程有一定兴趣,但在实际应用中可能存在编程思路不清晰、代码规范意识不足等问题。

教学要求:结合学生特点,注重实践,引导学生从实际问题出发,培养解决复杂问题的能力。

教学过程中,注重激发学生兴趣,培养良好的编程习惯,提高团队协作能力。

通过本课程的学习,使学生在知识、技能和情感态度价值观等方面取得具体的学习成果。

二、教学内容1. 复习C语言基础知识:数组、函数、指针、控制结构等。

教材章节:第二章、第三章、第四章内容:数组的应用、函数的定义与调用、指针的概念与用法、程序流程控制。

2. C语言高级特性学习:结构体、文件操作、动态内存分配等。

教材章节:第六章、第七章、第十章内容:结构体的定义与使用、文件读写操作、动态内存分配与释放。

3. 程序设计与实现:根据实际需求,设计并实现具有实用价值的C语言程序。

教材章节:全书内容:综合运用所学知识,进行程序设计、编写代码、调试与优化。

4. 编程规范与调试技巧:培养良好的编程习惯,提高代码质量。

教材章节:附录内容:代码规范、调试方法、性能优化。

C语言大作业全

C语言大作业全

#include ""#include ""#include ""#include ""#include ""#define LEN sizeof(struct student) #define NULL 0int n,m;int k=1;struct student{char num[20];char name[20];int age;char profession[50];int maths;int english;int C_program;float ave;struct student * next;};float ave(struct student * p1){float ave;ave=(float)(p1->maths+p1->english+p1->C_program)/3;return ave;}void save(struct student *head){struct student *p1 = head;FILE *outFile;outFile = fopen("", "wb");if (outFile == NULL) {printf("\nFile error.");}else {while(p1 != NULL){fwrite(p1, sizeof(struct student), 1, outFile);p1 = p1->next;}fclose(outFile);}};}else {head = (struct student *)malloc(sizeof(struct student));fread(head, sizeof(*head), 1, infile);p2 = head;while(fread(&record, sizeof(record), 1, infile));}fwrite(p1, sizeof(struct student), 1, outFile);fclose(outFile);}void sta(struct student * head,char array[20],int max,int min) {struct student *p1=head;int k=0;if(strcmp(array,"maths")==0){while(p1!=NULL){if(p1->maths>=min&&p1->maths<=max)k++;p1=p1->next;}printf("数学科目在%d到%d之间的人数为:%d\n",min,max,k);}else if(strcmp(array,"english")==0){while(p1!=NULL){if(p1->english>=min&&p1->english<=max)k++;p1=p1->next;}printf("英语科目在%d到%d之间的人数为:%d\n",min,max,k); }else if(strcmp(array,"C_program")==0){while(p1!=NULL){if(p1->C_program>=min&&p1->C_program<=max)k++;p1=p1->next;}printf("C语言科目在%d到%d之间的人数为:%d\n",min,max,k); }}void exit(){printf("\t\t");printf("**********************\n");printf("\t\t");printf("*******感谢使用*******\n");printf("\t\t");printf("**********************\n");k=0;}void Chooseproject(int i){ struct student * head=NULL;if(i==1){head = read();print(head);}else if(i==2){int p=1 ;printf("请选择按学号查询(1)还是按姓名查询(0):");scanf("%d",&p);while(p!=1&&p!=0){printf("输入错误!");printf("请选择学号查询(1)还是姓名查询(0)");scanf("%d",&p);}if(p==1){head = read();char num[20];printf("请输入查询的学号:\n");scanf("%s",num);head=search_num(head,num);while(strcmp(num,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n");scanf("%s",num);if(strcmp(num,"0")==0)break;head=search_num(head,num);}}else if(p==0){head = read();char name[20];printf("请输入查询的学号:\n");scanf("%s",name);head=search_name(head,name);while(strcmp(name,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n"); scanf("%s",name);if(strcmp(name,"0")==0)break;head=search_name(head,name);}}}else if(i==3){ head = read();char num[20];printf("请输入要更改的学号:\n");scanf("%s",num);getchar();head=change(head,num);print(head);while(strcmp(num,"0")!=0){printf("是否继续更改(是就输学号,否就输0):\n"); scanf("%s",num);getchar();if(strcmp(num,"0")==0)break;head=change(head,num);print(head);}}else if(i==4){head=read();add(head);}else if(i==5){char num[20];head=read();printf("请输入要删除的学号:\n");scanf("%s",num);getchar();head=del(head,num);print(head);}else if(i==6){head = read();int i;printf("\t\t");printf("************1.学号排序;********************\n");printf("\t\t");printf("************2.平均成绩排序;****************\n");printf("\t\t");printf("************3.数学成绩排序;****************\n"); printf("\t\t");printf("************4.英语成绩排序;****************\n"); printf("\t\t");printf("************语言成绩排序;***************\n");printf("请输入相应的排序代号:");scanf("%d",&i);sort_down(head,i);}else if(i==7){head=read();int min,max;char subject[20];printf("\t\t");printf("************数学(maths);***************\n");printf("\t\t");printf("************英语(english);*************\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();while((strcmp(subject,"maths")!=0&&strcmp(subject,"english")!=0&&strcmp(subject,"C_pro gram")!=0)){printf("输入错误!");printf("\t\t");printf("************数学(maths);***********\n");printf("\t\t");printf("************英语(english);***********\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();}printf("请输入分数段的区间:");printf("区间上限:");scanf("%d",&max);printf("区间下限:");scanf("%d",&min);while(min>=max){printf("输入的下限大于等于上限,错误!");printf("请重新输入分数段的区间:");printf("区间上限:");scanf("%d",max);printf("区间下限:");scanf("%d",min);}sta(head,subject,max,min);}else if(i==8){printf("\t\t");printf("************************************\n");printf("\t\t");printf("**************感谢使用**************\n");printf("\t\t");printf("************************************\n");k=0;}}息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息排序;***********\n");printf("\t\t");printf("***********7.信息统计;***********\n");printf("\t\t");printf("***********8,退出系统;***********\n");printf("请选择项目:");scanf("%d",&i);while(i<1||i>8){printf("输入错误,请重新输入:\n");printf("\t\t");printf("***********1.信息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息统计;***********\n");printf("\t\t");printf("***********7,退出系统;***********\n");printf("请重新选择项目:");scanf("%d",&i);}Chooseproject(i);}int _tmain(int argc, _TCHAR* argv[]){ struct student *head = NULL;printf("\t\t");printf("************************************************************\n");printf("\t\t");printf("*********************学生管理系***************************\n");printf("\t\t");printf("************************************************************\n" );printf("是否已经录入信息\n");char c;printf("请输入 'y' 或 'n':");c=getchar();getchar();while(c!='n'&&c!='y'){printf("输入错误,请重新输入( 'y' 或 'n'):\n");c=getchar();getchar();}if(c=='n'){printf("请输入学生成绩:\n");head=creat();}while(k!=0){menu();}system("pause");return 0;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
case 6:
{
int a[10];
int i,*p;
p=a;
printf("请输入十个数:\n");
for(i=0;i<10;i++)
scanf("%d",p++);
p=a;
tihuan(p);
for(i=0;i<10;i++)
printf("%2d",*p++);
printf("\n");
};break;
}
void main( )
{ int ch;
printf("**************数组管理系统*************\n");
printf(" 1.数组查找\n");
printf(" 2.数组插入\n");
printf(" 3.数组求最值\n");
printf(" 4.求平均数\n");
printf(" 5.数组统计\n");
printf("\n");
}
void zdzx(int *x,int n)
{
int *p,max,min;
max=*x;
min=*x;
for(p=x+1;p<x+n;p++)
if(max<*p)
max=*p;
else if(min>*p)
min=*p;
printf("此数组中最大数为:%d\n",max);
第五个模块
功能是统计数组中正数负数以及零的个数,同样采用了一位数组的循环输入,实参形参均使用了指针。
第六个模块
功能是找出数组中最小的数,然后与数组的第一个数替换。
第七个模块
功能是将数组中行和列实现转置。
第八个模块
该模块是字符数组,
在输入数据时可以做到随时变换随时运行,增加了程序的可行性及实用性。
四、实验结果及分析
二、设备与环境
PC兼容机、Windows操作系统、Turbo C/Win tc,Vc++软件等。
三、实验内容
在主函数中,应用菜单列表将该程序能运行的功能列出来,然后用switch分支语句,每当输入与该菜单中对应的数字,程序会自动进入并运行。
程序中应用了全局变量,增加程序了的简洁性与使用性:组没有维数的限制,更能满足人使用全局变量可以使程序更加简洁、易懂,使函数的输入输出更加方便。
printf(" 6.数组替换\n");
printf(" 7.数组转置\n");
printf(" 8.字符个数\n");
printf(" 9.退出系统\n");
printf(" **************************************\n");
do
{printf("请输入编号选择功能:");
a[k]=t;
}
void zhuanzhi(int a[3][4])
{ห้องสมุดไป่ตู้
int i,j,t,b[4][3];
for (i=0;i<3;i++)
for(j=0;j<4;j++)
{t=a[i][j];a[i][j]=b[j][i];b[j][i]=t;}
printf("转置后的数组为:\n");
for(j=0;j<4;j++)
在在所有的功能模块中,除了第四个和第七个意外均使用了指针,使用指针可以是我们的程序看起来更简洁;并且所有的功能模块均使用啦函数,在运行的时候可以相应的调换函数来处理数据。
第一个模块:
第一个模块的功能是查找一个数是否在所规定的数据库中,并找出是数据库中的第几个元素;如果不在其中的话则打印不在其中。在程序中形参和实参均使用拉指针,并把相应的地址赋给指针,采用拉单循环输入与输出以及数据的处理。
scanf("%d",p2);
p1=a;
search(p1,p2,10);
getchar();
printf("\n");
};break;
case 2:
{
int i,j,t,b,a[10];
int *p1,*p2;
p1=&a[0];
p2=&b;
printf("请输入十个数字:\n");
for(i=0;i<10;i++)
{
char str[10],*p=str;
fflush(stdin);
gets(p);
func(str);
getchar();
printf("\n");
};break;
case 9: goto end; }
getch(); }
while(ch>0 && ch<=6);
end: ; }
教师评价
评定项目
{
int *p1;
int a[10];
printf("请输入十个数:\n");
for(p1=a;p1<(a+10);p1++)
scanf("%d",p1);
p1=a;
zdzx(p1,10);
getchar();
printf("\n");
};break;
case 4:
{
int cj[3][4];
int i,j ;
{ printf("\n");
for (i=0;i<3;i++)
printf("%4d",b[j][i]);}
printf("\n");
}
void func (char *x)
{ int num=0;
while(*(x+num)!='\0')
num++;
printf("输入的字符个数为:");
printf("%d\n",num);
第二个模块
功能是在已经排序的数组中插入一个数并按以前的排序特点排序。程序中,是采用单循环将杂乱的数据输入,通过语句排序后在插入数。其中排序时在主函数中完成,插入是调用了子函数。
第三个模块
功能是求已知的数据中的最值,是调用子函数实现求值。
第四个模块
功能是求学生的平均成绩,即可以求每个学生的平均成绩也可以求所有学生的每一个科目成绩,相应的输出提示的改动运用可以更广。程序中采用拉二维数组的循环输入,并使用了两个子函数分别求学生平均成绩和科目平均分。
case 7:
{
int a[3][4];
int i,j;
printf("请输入数组:\n");
for (i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
zhuanzhi(a);
getchar();
printf("\n");
};break;
case 8:
华北科技学院计算机系综合性实验
实验报告
课程名称程序设计语言(C)
实验学期2011至2012学年第2学期
学生所在系部
年级专业班级
学生姓名学号
任课教师
实验成绩
《C程序设计》课程综合性实验报告
开课实验室:基础一2012年6月17日
实验题目
数组的综合运算
一、实验目的
使学生巩固和加深对C语言程序设计理论知识的理解,进一步掌握编程技巧和方法,能融会贯通所学知识,提高编程和调试程序的水平,并对计算机相关的知识有一定的了解与掌握,能够自主的编制程序。
printf("此数组中最小数为:%d\n",min);
}
float B[3];
void average (int a[3][4])
{
int i,j;
float s;
for(i=0;i<3;i++)
{
s=0;
for (j=0;j<4;j++)
{s=s+a[i][j];B[i]=s/4.0;}
}
printf("每个学生平均成绩为:");
if(*p1>0)
zs++;
elseif(*p1<0)
fs++;
else ling++;
}
void tihuan(int a[])
{
int i,t,min,k=0;
for (i=0,min=a[0];i<10 ;i++)
if(min>a[i])
{min=a[i];k=i;}
t=a[0];
a[0]=a[k];
p2=a;
printf("请输入十个数:\n");
for(i=0;i<10;i++)
scanf("%d",p2++);
zfling(a,10);
printf("zs=%d,fu=%d,ling=%d",zs,fs,ling);
相关文档
最新文档