C语言学生管理系统综合性实验题目5篇

时间:2019-05-12 06:48:12下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言学生管理系统综合性实验题目》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言学生管理系统综合性实验题目》。

第一篇:C语言学生管理系统综合性实验题目

“学生管理系统的设计与实现”综合性实验

实验名称:学生管理系统的设计与实现

实验类型:综合性实验

一、实验目的强化学生对C语言的基本语法和基本编程技能的熟练掌握,并在此基础上,重点培养学生对实际应用问题进行抽象分析的能力和综合运用C语言知识进行具体实现的编程能力。

二、实验内容

综合应用C语言中讲授的流程控制语句、模块化程序设计方法(函数)和丰富的数据类型(指针、数组、结构体等)完成“学生管理系统”的设计与实现。

三、实验环境

Windows XP系统,C语言开发环境:Win-TC、Turbo C3.0、VC等。

四、实验要求

1、总体要求:系统功能齐全,运行结果正确,用户界面友好,使用简单方便。

2、系统数据要求:学生信息如下:学号、姓名、年龄、所在系、3门课程名称及成绩、总分、平均分。

3、系统功能要求:

⑴输入至少10个学生的自然信息(学号、姓名、年龄、所在系、成绩)。

⑵计算每个学生的总分、平均分,并输出每个学生的学号,姓名,总分,平均分。

⑶根据学生的总分进行排序输出。

⑷针对课程不同科目进行排序输出。

⑸统计输出每门课程的平均分。

⑹实现多种查询功能(例如:根据学号或姓名或所在系等,查询一个或多个学生信息)。

⑺对于已输入的学生信息进行储存。

⑻能实现学生信息的增、删、改操作。

五、实验结果

实验完成要求上交全部源程序代码(包括存盘数据)和完整的综合性实验报告(包括系统设计、实验过程中出现问题的分析与修改、代码打印、运行结果拷屏打印)。

六、考核形式

考查。根据上机出勤、实验报告及完成的程序系统进行评价,分为优、良、中、及格、不及格。

第二篇:C语言实验电话薄管理系统

#include “stdio.h” /*标准输入输出函数库*/ #include “stdlib.h” /*标准函数库*/ #include “string.h” /*字符串函数库*/ #include “conio.h” /*屏幕操作函数库*/ #define HEADER1

---------------------------TELEPHONE BOOK---------------------------n” #define HEADER2 “ | num | name | phonenumber | address | n” #define

HEADER3

“ |--------------|------------|-----------------|---------------------| n” #define FORMAT “ | %-10s| %-10s| %-15s |%-20s | n” #define DATA p->num,p->name,p->phonenum,p->address #define

END

“-------n” #define N 100 int saveflag=0;/*是否需要存盘的标志变量*/ /*定义与电话簿有关的数据结构*/ typedef struct telebook /*标记为telebook*/ { char num[4];/*编号*/ char name[10];/*姓名*/ char phonenum[15];/*电话号码*/ char address[20];/*地址*/ }TELEBOOK;

void menu()/*主菜单*/ { system(“cls”);/*调用DOS命令,清屏.与clrscr()功能相同*/ textcolor(13);/*在文本模式中选择新的字符颜色*/ gotoxy(10,5);/*在文本窗口中设置光标*/ cprintf(“ The telephone-book Management System n”);gotoxy(10,8);cprintf(“ *************************Menu********************************n”);gotoxy(10,9);cprintf(“ * 1 input record 2 display record *n”);gotoxy(10,10);cprintf(“ * 3 delete record 4 search record *n”);gotoxy(10,11);cprintf(“ * 5 modify record 6 insert record *n”);gotoxy(10,12);cprintf(“ * 7 sort record 8 save record *n”);gotoxy(10,13);cprintf(“ * 0 quit system *n”);gotoxy(10,14);cprintf(“ *************************************************************n”);/*cprintf()送格式化输出至文本窗口屏幕中*/ } /*格式化输出表头*/ void printheader(){ printf(HEADER1);printf(HEADER2);printf(HEADER3);} /*格式化输出表中数据*/ void printdata(TELEBOOK pp){ TELEBOOK* p;p=&pp;printf(FORMAT,DATA);}

/*显示数组temp[]中存储的电话簿记录,内容为telebook结构中定义的内容*/ void Disp(TELEBOOK temp[],int n){ int i;if(n==0)/*表示没有电话簿记录*/ { printf(“n=====>Not telephone record!n”);getchar();return;}

printf(“nn”);printheader();/*输出表格头部*/ i=0;while(i

void Wrong()/*输出按键错误信息*/ { printf(“nnnnn***********Error:input has wrong!press any key to continue**********n”);getchar();}

void Nofind()/*输出未查找此记录的信息*/ { printf(“n=====>Not find this telephone record!n”);}

/************************************************************* 作用:用于定位数组中符合要求的记录,并返回保存该记录的数组元素下标值

参数:findmess[]保存要查找的具体内容;nameorphonenum[]保存按什么在数组中查找;**************************************************************/ int Locate(TELEBOOK temp[],int n,char nameorphonenum[]){ int i=0;if(strcmp(nameorphonenum,“phonenum”)==0)/*按电话号码查询*/ { while(i

findmess[],char return i;i++;} } return-1;/*若未找到,返回一个整数-1*/ }

/*输入字符串,并进行长度验证(长度lens)printf(“n exceed the required length!n”);/*进行长度校验,超过lens值重新输入*/ }while(strlen(n)>lens);strcpy(t,n);/*将输入的字符串拷贝到字符串t中*/ } /*增加电话簿记录*/ int Add(TELEBOOK temp[],int n){ char ch,num[10];int i,flag=0;system(“cls”);Disp(temp,n);/*先打印出已有的电话簿信息*/

while(1)/*一次可输入多条记录,直至输入编号为0的记录才结束添加操作*/ { while(1)/*输入记录编号,保证该编号没有被使用,若输入编号为0,则退出添加记录操作*/ { stringinput(num,10,“input number(press '0'return menu):”);/*格式化输入编号并检验*/ flag=0;if(strcmp(num,“0”)==0)/*输入为0,则退出添加操作,返回主界面*/ {return n;} i=0;while(i

if(flag==1)/*提示用户是否重新输入*/ { getchar();printf(“==>The number %s is existing,try again?(y/n):”,num);scanf(“%c”,&ch);if(ch=='y'||ch=='Y')continue;else return n;} else {break;} } strcpy(temp[n].num,num);/*将字符串numtemp[n].num中*/ stringinput(temp[n].name,15,“Name:”);stringinput(temp[n].phonenum,15,“Telephone:”);stringinput(temp[n].address,15,“Adress:”);saveflag=1;n++;} return n;}

/*按编号或姓名,查询电话簿记录*/ void Qur(TELEBOOK temp[],int n){

拷贝到int select;/*1:按姓名查,2:按电话号码查,其他:返回主界面(菜单)*/ char searchinput[20];/*保存用户输入的查询内容*/ int p=0;if(n<=0)/*若数组为空*/ { system(“cls”);printf(“n=====>No telephone record!n”);getchar();return;} system(“cls”);printf(“n =====>1 Search by name =====>2 Search by telephone numbern”);printf(“ please choice[1,2]:”);scanf(“%d”,&select);if(select==1)/*按姓名查询*/ {

stringinput(searchinput,10,“input the existing name:”);p=Locate(temp,n,searchinput,“name”);/*在数组temp中查找编号为searchinput值的元素,并返回该数组元素的下标值*/ if(p!=-1)/*若找到该记录*/ { printheader();printdata(temp[p]);printf(END);printf(“press any key to return”);getchar();} else Nofind();getchar();} else if(select==2)/*按电话号码查询*/ { stringinput(searchinput,15,“input the

existing number:”);p=Locate(temp,n,searchinput,“phonenum”);if(p!=-1){ printheader();printdata(temp[p]);printf(END);printf(“press any key to return”);getchar();} else Nofind();getchar();}

telephone else Wrong();getchar();}

/*删除电话簿记录:先找到保存该记录的数组元素的下标值,然后在数组中删除该数组元素*/ int Del(TELEBOOK temp[],int n){ int sel;char findmess[20];int p=0,i=0;if(n<=0){ system(“cls”);printf(“n=====>No telephone record!n”);getchar();return n;} system(“cls”);Disp(temp,n);printf(“n =====>1 Delete by name =====>2 Delete by

telephone numbern”);printf(“ please choice[1,2]:”);scanf(“%d”,&sel);if(sel==1){ stringinput(findmess,10,“input the existing name:”);p=Locate(temp,n,findmess,“name”);getchar();if(p!=-1){ for(i=p+1;i

strcpy(temp[i-1].num,temp[i].num);strcpy(temp[i-1].name,temp[i].name);strcpy(temp[i-1].phonenum,temp[i].phonenum);strcpy(temp[i-1].address,temp[i].address);} printf(“n==>delete success!n”);n--;getchar();saveflag=1;} else Nofind();getchar();} else if(sel==2)/*先按电话号码查询到该记录所在的数组元素的下标值*/ { stringinput(findmess,15,“input number:”);p=Locate(temp,n,findmess,“phonenum”);getchar();if(p!=-1){ for(i=p+1;i

strcpy(temp[i-1].num,temp[i].num);strcpy(temp[i-1].name,temp[i].name);strcpy(temp[i-1].phonenum,temp[i].phonenum);strcpy(temp[i-1].address,temp[i].address);} printf(“n=====>delete success!n”);

the

existing

telephone n--;getchar();saveflag=1;} else Nofind();getchar();} return n;}

/*修改电话簿记录。先按输入的联系人姓名查询到该记录,然后提示用户修改该记录编号之外的值,编号不能修改*/ void Modify(TELEBOOK temp[],int n){ char findmess[20];int p=0;if(n<=0){ system(“cls”);printf(“n=====>No telephone number record!n”);getchar();return;} system(“cls”);printf(“modify telephone book recorder”);Disp(temp,n);stringinput(findmess,10,“input the existing name:”);/*输入并检验该姓名*/ p=Locate(temp,n,findmess,“name”);/*查询到该数组元素,并返回下标值*/ if(p!=-1)/*若p!=-1,表明已经找到该数组元素*/ { printf(“Number:%s,n”,temp[p].num);printf(“Name:%s,”,temp[p].name);stringinput(temp[p].name,15,“input new name:”);

printf(“Name:%s,”,temp[p].phonenum);stringinput(temp[p].phonenum,15,“input new telephone:”);

printf(“Name:%s,”,temp[p].address);stringinput(temp[p].address,30,“input new address:”);

printf(“n=====>modify success!n”);getchar();Disp(temp,n);getchar();saveflag=1;} else {Nofind();getchar();} return;}

/*插入记录:按编号查询到要插入的数组元素的位置,然后在该记录编号之后插入一个新数组元素。*/ int Insert(TELEBOOK temp[],int n){ char ch,num[10],s[10];/*s[]保存插入点位置之前的记录编号,num[]保存输入的新记录的编号*/ TELEBOOK newinfo;int flag=0,i=0,kkk=0;system(“cls”);Disp(temp,n);while(1){ stringinput(s,10,“please input insert location after the Number:”);flag=0;i=0;while(iThe again?(y/n):”,s);scanf(“%c”,&ch);if(ch=='y'||ch=='Y'){continue;} else {return n;} } } /*以下新记录的输入操作与Add()相同*/

number

%s

is

not

existing,try while(1){ stringinput(num,10,“input new Number:”);i=0;flag=0;while(iSorry,The again?(y/n):”,num);scanf(“%c”,&ch);if(ch=='y'||ch=='Y'){continue;} else {return n;} } else break;

number

%s

is

existing,try }

strcpy(newinfo.num,num);/*将字符串numnewinfo.num中*/ stringinput(newinfo.name,15,“Name:”);stringinput(newinfo.phonenum,15,“Telephone:”);stringinput(newinfo.address,15,“Adress:”);

saveflag=1;/*在main()有对该全局变量的判断,若为1,则进行存盘操作*/

for(i=n-1;i>kkk;i--)/*从最后一个组织元素开始往向移一个元素位置*/ { strcpy(temp[i+1].num,temp[i].num);strcpy(temp[i+1].name,temp[i].name);strcpy(temp[i+1].phonenum,temp[i].phonenum);strcpy(temp[i+1].address,temp[i].address);} strcpy(temp[kkk+1].num,newinfo.num);/*在kkk的元素位置后插入新记录*/ strcpy(temp[kkk+1].name,newinfo.name);

拷贝到strcpy(temp[kkk+1].phonenum,newinfo.phonenum);strcpy(temp[kkk+1].address,newinfo.address);n++;Disp(temp,n);printf(“nn”);getchar();return n;}

/*利用选择排序法实现数组的按记录编号或姓名的升序排序*/ void SelectSort(TELEBOOK temp[],int n){ int i=0,j=0,flag=0,indexmin,select;char charflag[10];TELEBOOK newinfo;if(n<=0){ system(“cls”);printf(“n=====>Not telephone record!n”);getchar();return;} system(“cls”);Disp(temp,n);/*显示排序前的所有记录*/ printf(“ ==>1 SORT BY NUMBER ==>2 SORT BY NAMEn”);printf(“ please choice[1,2]:”);scanf(“%d”,&select);if(select==1)/*按记录编号排序*/ { for(i=0;i

strcpy(temp[i].num,temp[indexmin].num);strcpy(temp[i].name,temp[indexmin].name);strcpy(temp[i].phonenum,temp[indexmin].phonenum);strcpy(temp[i].address,temp[indexmin].address);

strcpy(temp[indexmin].num,newinfo.num);strcpy(temp[indexmin].name,newinfo.name);strcpy(temp[indexmin].phonenum,newinfo.phonenum);strcpy(temp[indexmin].address,newinfo.address);} Disp(temp,n);/*显示排序后的所有记录*/ saveflag=1;printf(“n =====>sort complete!n”);getchar();return;} else if(select==2){ for(i=0;i0){ charflag[0]=temp[j].name;indexmin=j;} } strcpy(newinfo.num,temp[i].num);/*利用结构变量newinfo实现数组元素的交换*/ strcpy(newinfo.name,temp[i].name);strcpy(newinfo.phonenum,temp[i].phonenum);strcpy(newinfo.address,temp[i].address);

strcpy(temp[i].num,temp[indexmin].num);strcpy(temp[i].name,temp[indexmin].name);strcpy(temp[i].phonenum,temp[indexmin].phonenum);strcpy(temp[i].address,temp[indexmin].address);

strcpy(temp[indexmin].num,newinfo.num);strcpy(temp[indexmin].name,newinfo.name);strcpy(temp[indexmin].phonenum,newinfo.phonenum);strcpy(temp[indexmin].address,newinfo.address);} Disp(temp,n);/*显示排序后的所有记录*/ saveflag=1;printf(“n =====>sort complete!n”);getchar();return;} else {Wrong();getchar();getchar();return;} }

/*数据存盘,若用户没有专门进行此操作且对数据有修改,在退出系统时,会提示用户存盘*/ void Save(TELEBOOK temp[],int n){ FILE* fp;int i=0;fp=fopen(“c: elephon”,“w”);/*以只写方式打开文本文件*/ if(fp==NULL)/*打开文件失败*/ { printf(“n=====>open file error!n”);getchar();return;} for(i=0;i0){ getchar();printf(“nn=====>save file complete,total saved's record number is:%dn”,i);getchar();saveflag=0;} else {system(“cls”);printf(“the current link is empty,no telephone saved!n”);getchar();} fclose(fp);/*关闭此文件*/ }

void main(){ TELEBOOK tele[N];/*定义TELEBOOK结构体*/ FILE *fp;/*文件指针*/ int select;/*保存选择结果变量*/ char ch;/*保存(y,Y,n,N)*/

is record int count=0;/*保存文件中的记录条数(或元素个数)*/

fp=fopen(“C: elephon”,“a+”);/*以追加方式打开文本文件c:telephon,可读可写,若此文件不存在,会创建此文件*/ if(fp==NULL){ printf(“n=====>can not open file!n”);exit(0);}

while(!feof(fp)){ if(fread(&tele[count],sizeof(TELEBOOK),1,fp)==1)/*一次从文件中读取一条电话簿记录*/ count++;} fclose(fp);/*关闭文件*/ printf(“n==>open file sucess,the total records number is : %d.n”,count);getchar();menu();while(1){ system(“cls”);menu();printf(“n Please Enter your choice(0~8):”);/*显示提示信息*/ scanf(“%d”,&select);

if(select==0){ if(saveflag==1)/*若对数组的数据有修改且未进行存盘操作,则此标志为1*/ { getchar();printf(“n==>Whether save the modified record to file?(y/n):”);scanf(“%c”,&ch);if(ch=='y'||ch=='Y')Save(tele,count);} printf(“n===>thank you for useness!”);getchar();break;} switch(select){ case 1:count=Add(tele,count);break;/*增加电话簿记录*/ case 2:system(“cls”);Disp(tele,count);break;/*显示电话簿记录*/ case 3:count=Del(tele,count);break;/*删除电话簿记录*/ case 4:Qur(tele,count);break;/*查询电话簿记录*/ case 5:Modify(tele,count);break;/*修改电话簿记录*/ case 6:count=Insert(tele,count);break;/*插入电话簿记录*/ case 7:SelectSort(tele,count);break;/*排序电话簿记录*/ case 8:Save(tele,count);break;/*保存电话簿记录*/ default: Wrong();getchar();break;/*按键有误,必须为数值0-9*/ } } }

第三篇:C语言实验题目

求两个数之和。在两种情况下完成:

①数据在程序内部定义变量时赋初值,或者通过赋值语句赋值。②数据通过scanf()函数输入。静态输入:

#include void main(){ int a=1,b=2,s;s=a+b;printf(“这两个数的和是%dn”,s);} 动态输入:

#include void main(){ int a,b,s;printf(“请您输入两个数:”);scanf(“%d,%d”,&a,&b);s=a+b;printf(“这两个数的和是%dn”,s);}

设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆柱表面积、圆柱体积。要求用scanf 输入数据,输出计算结果。#include void main(){ float r,h,l,s,sq,vz;float pi=3.1415926;printf(“请输入圆的半径r,圆柱高h:”);scanf(“%f,%f”,&r,&h);l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;vz=pi*r*r*h;printf(“圆的周长为

l=%6.2fn”,l);printf(“圆的面积为

s=%6.2fn”,s);printf(“圆柱的表面积为

sq=%6.2fn”,sq);printf(“圆柱的体积为

vz=%6.2fn”,vz);}

输入a、b、c三个整数,求出其中最大者,并连同三个源数据一起输出。#include int max(int x,int y,int z){ int max;if(x>y){

if(x>z)

max=x;

else

max=z;} else {

if(y>z)

max=y;

else

max=z;} return(max);} void main(){ int max(int x,int y,int z);

int a,b,c,w;

printf(“请您输入三个整数:”);

scanf(“%d,%d,%d”,&a,&b,&c);

printf(“您输入的三个数是:%d,%d,%dn”,a,b,c);

w=max(a,b,c);

printf(“这三个数中最大的是:%dn”,w);}

给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。要求输入一个成绩并打印出对应的等级制成绩。要求用switch语句完成。#include void main(){ int grade,c;printf(“请您输入一个成绩:”);scanf(“%d”,&grade);while(grade>100||grade<0){

printf(“您输入了一个错误的成绩!请重新输入n”);

scanf(“%d”,&grade);} c=grade/10;switch(c){ case 10: case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;default: grade='E';} printf(“您输入的成绩的等级为:%Cn”,grade);}

计算当n为何值时,不等式sum=1 + 1/2 + 1/3 +… + 1/n >limit成立,输出n对应的sum(limit从键盘输入,要求用while、或do...while 语句,limit=10)。#include void main(){ float n=0,sum=0,limit=0;printf(“请输入一个limit的值:”);scanf(“%f”,&limit);while(sum<=limit){

n++;

sum=sum+1/n;} printf(“此时sum的值是:%fn”,sum);printf(“此时n的值为%fn”,n);}

计算M=11+ 22+ 33+…+ NN,直到N等于15为止,输出N和对应的M。(要求用for语句做)

#include void main(){ int n;float M;M=0.0;for(n=1;n<10;n++){

M=M+(n+10*n);} for(n=10;n<=15;n++){

M=M+(n+100*n);} n--;printf(“当n是%d时,M的值为%fn”,n,M);}

100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马一匹驮0.5担,计算大、中、小马数目并输出。#include void main(){ int big,mid,small,sum=0;for(big=0;big<33;big++)

for(small=0;small<100;small+=2)

for(mid=0;mid<50;mid++)

{

if(3*big+2*mid+small/2==100&&big+mid+small==100)

{

printf(“big:%dt,mid:%dt,small:%dn”,big,mid,small);

sum++;

}

}

printf(“一共有%d种组合方式n”,sum);}

求 sum=1!+2!+3!+...+10!,并输出结果。#include void main(){ float s=0,t=1;int n;for(n=1;n<=10;n++){

t=t*n;

s=s+t;} printf(“1!+2!+3!+...+10!的和是:%en”,s);} 注意该程序的结果为:1!+2!+3!+...+10!的和是:4.037913e+006 是以科学计数法表示的结果,因为int的定义范围只能以此表示,如果用long int来输出,则可以得到正常表示的结果 #include void main(){ long s=0,t=1;int n;for(n=1;n<=10;n++){

t=t*n;

s=s+t;} printf(“1!+2!+3!+...+10!的和是:%ldn”,s);}

1!+2!+3!+...+10!的和是:4037913

设数列为1,3,5,7,9,11,13,15,17,19,动态输入在数组array中,然后顺序打印输出该数列,再逆序打印输出该数列。#include #define N 10 void main(){ int array[10];printf(“请您输入10个整数:n”);int i=0;for(i=0;i

scanf(“%d”,&array[i]);printf(“您输入的10个整数的顺序排列是:n”);for(i=0;i

printf(“%-4d”,array[i]);printf(“n”);printf(“您输入的10个整数的逆序排列是:n”);for(i=N-1;i>=0;i--)

printf(“%-4d”,array[i]);printf(“n”);}

将3x3阶二维数组的关于主对角线对称的元素互换。二维数组的第1至3行元素分别为1、2、3、4、5、6、7、8、9。用矩阵形式分别输出互换前、后的数组元素值。#include void main(){ int i,j,t,array[3][3]={1,2,3,4,5,6,7,8,9};printf(“Before Exchanged:n”);for(i=0;i<3;i++){

for(j=0;j<3;j++)

printf(“%5d”,array[i][j]);

printf(“n”);} for(i=1;i<3;i++)

for(j=0;j

{

t=array[i][j];

array[i][j]=array[j][i];

array[j][i]=t;

}

printf(“After Exchanged:n”);

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

printf(“%5d”,array[i][j]);

printf(“n”);

} }

定义两个字符数组s1、s2,并用赋初值的方法把两个字符串“Computer”和“Language” 分别存放到s1、s2中,要求不用库函数strcat(),把s2连接到s1的尾部,然后以%s格式输出连接后的字符串s1。#include void main(){

char s1[80],s2[40];

int i=0,j=0;

printf(”input string1:“);

scanf(”%s“,&s1);

printf(”input string2:“);

scanf(”%s“,&s2);

while(s1[i]!='')

i++;

s1[i]=' ';

i++;

while(s2[j]!='')

s1[i++]=s2[j++];

s1[i] = '';

printf(”The new string is:%sn“,s1);}

用赋初值的方法把字符串”C is a general purpose, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system.“存放到字符数组s中,编程统计其中的大写字母、小写字母、数字、空格、逗号的个数。#include void main(){

char s[512] = ”C is a general purpose, procedural, imperative “

”computer programming language developed in 1972 by Dennis“

”Ritchie at the Bell Telephone Laboratories for use with “

”the Unix operating system.“;int upper=0,lower=0,digit=0,space=0,comma=0;int i=0;while(s[i])

{

if(s[i]>='A'&&s[i]<='Z')upper++;

if(s[i]>='a'&&s[i]<='z')lower++;

if(s[i]>='0'&&s[i]<='9')digit++;

if(s[i]==' ')space++;

if(s[i]==',')comma++;

i++;

}

printf(”这串字符串有大写字母%d个,小写字母%d个,数字%d个,空格%d个,逗号%d个n“,upper,lower,digit,space,comma);}

试从主函数输入10个数据到数组中,编写对偶数项求和的子函数,它将计算结果返回给主函数,由主函数输出。#include int oqh(int a[], int x){

int i,s;s=0;

for(i=1;i

s=s+a[i];

return(s);}

void main(){ int a[10];int i,s;printf(”请您在数组内输入10个数:“);for(i=0;i<10;i++)

scanf(”%d“,&a[i]);s=oqh(a,10);printf(”这个数组的偶数项的和是:%dn“,s);} 注意:oqh并无其他含义,是本人定义的一个函数名,偶数项求和的缩写。编写一个判断素数的程序,其中主函数用于完成输入一个整数并给出判断结果,单独编写一个函数用于判断其参数是否为素数,其返回值为1表示为素数,为0表示为非素数。#include #include int prime(int n){ int m,i=2,t;t=(int)sqrt(n);for(;i<=t;i++){

if(n%i==0)

{

m=0;

break;

}

if(i>t)

m=1;

else

continue;} return(m);} void main(){ int n;int i;printf(”请输入你要判断的数:n“);scanf(”%d“,&n);while(n<=1){

printf(”您输入了一个错误的数据,请重新输入:n“);

scanf(”%d“,&n);} if(prime(n))

printf(”您输入的是一个素数n“);else

printf(”您输入的不是一个素数n“);

}

输入三个整数,按由小到大的顺序输出。(要求使用指针来排序输出)#include void sort(int *a,int *b,int *c){ int t=0;if(*a>*b){

t=*a;

*a=*b;

*b=t;} if(*a>*c){

t=*a;

*a=*c;

*c=t;} if(*b>*c){

t=*b;

*b=*c;

*c=t;} } void main(){ int a,b,c;printf(”请您输入三个整数:“);scanf(”%d %d %d“,&a,&b,&c);sort(&a,&b,&c);printf(”它们由小到大的排列顺序是:%d %d %dn“,a,b,c);}

或者是

#include void main(){

void swap(int *p1,int *p2);

int a,b,c;

int *p1,*p2,*p3;

printf(”请您输入三个整数:“);

scanf(”%d %d %d“,&a,&b,&c);

p1=&a;

p2=&b;

p3=&c;

if(a>b)swap(p1,p2);

if(a>c)swap(p1,p3);

if(b>c)swap(p2,p3);

printf(”它们由小到大的排列顺序是:%d %d %dn“,a,b,c);} void swap(int *p1,int *p2){

int p;

p=*p1;

*p1=*p2;

*p2=p;}

输入十个整数,放在数组list中,然后用指针法从后向前输出该数组中的整数。#include void main(){

int list[10],i,*p=list;

printf(”请您输入10个整数:n“);

for(i=0;i<10;i++)

scanf(”%d“,&list[i]);

printf(”这10个整数的逆序序列是:n“);

for(i=9;i>=0;i--)

printf(”%-4d“,*(p+i));}

如果输入的数字个数不定的情况,下面的代码可行 #include void main(){ void sort(char *p,int m);int i,n;char *p,list[30];printf(”请您输入n的值:“);scanf(”%d“,&n);printf(”请您输入%d个整数:n“,n);for(i=0;i

scanf(”%d“,&list[i]);p=&list[0];sort(p,n);printf(”这%d个整数的逆序序列是:n“,n);for(i=0;i

printf(”%-4d“,list[i]);printf(”n“);} void sort(char *p,int m){ int i;char t,*p1,*p2;for(i=0;i

p1=p+i;

p2=p+(m-1-i);

t=*p1;

*p1=*p2;

*p2=t;} }

编写一个函数,它能对一个字符串(“I am a student”)测出长度,要求函数的形参是一个指针变量,函数返回值是字符串的长度。#include void main(){ int length(char *p);int len;char str[20];printf(”input string:“);gets(str);len=length(str);printf(”The length of string is %d.n“,len);} int length(char *p){ int n;n=0;while(*p!=''){

n++;

p++;} //*p='';//n++;return(n);} 若要统计结果包含结束符,则启用*p='';n++;两条语句

编一个函数cstrcmp实现两个字符串的比较,具体为:

int cstrcmp(char *p1, char *p2)p1,p2分别指向字符串s1,s2;若s1=s2则函数返回0;若s1>s2,则函数返回1;若s1 #include char s1[20];char s2[20];void input(){ printf(”输入第1个字符串:n“);scanf(”%s“,s1);printf(”输入第2个字符串:n“);scanf(”%s“,s2);} int cstrcmp(char *p1,char *p2){ p1=s1;p2=s2;if(strcmp(p1,p2)==0){

return 0;} if(strcmp(p1,p2)>0){

return 1;} if(strcmp(p1,p2)<0){

return-1;} } void main(){ char *a;char *b;input();printf(”这两个字符串比较的结果是:%dn“,cstrcmp(a,b));}

如果要求返回的是不相同字母的ASCII码值: #include void main(){ int cstrcmp(char *p1,char *p2);int m;char str1[20],char str2[20],*p1,*p2;printf(”请在下面输入两个字符串:n“);gets(str1);gets(str2);p1=&str1[0];p2=&str2[0];m=cstrcmp(p1,p2);printf(”这两个字符串比较的结果是:%dn“,m);} int cstrcmp(char *p1,char *p2){ int i;i=0;while(*(p1+i)==*(p2+i))

if(*(p1+i++)=='')return(0);

return(*(p1+i)-*(p2+i));}

有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,用赋初值的方法输入5个学生的数据到结构体数组中,输出每个学生3门课的平均成绩。#include struct student

{ char num[6];

char name[8];int score[3];float avr;}stu[5]={{”101“,”Zhou“,93,89,87},{”102“,”Yang“,85,80,78},{”103“,”Chen“, 77,70,83},{”104“,”Qian“,70,67,60},{”105“,”Li“,72,70,69}};void main(){ int i,j,sum;for(i=0;i<5;i++)

{

sum=0;

for(j=0;j<3;j++)

sum+=stu[i].score[j];

stu[i].avr=sum/3.0;} printf(”number

name score1 score2 score3 averagen“);for(i=0;i<5;i++){

printf(”%3s%10s“,stu[i].num,stu[i].name);

for(j=0;j<3;j++)

printf(”%7d“,stu[i].score[j]);

printf(”%10.2fn“,stu[i].avr);} }

如果按平均成绩由高到低排序后,输出每个学生的成绩 #include struct student

{ char num[6];

char name[8];

int score[3];float avr;

}stu[5]={{”101“,”Zhou“,93,89,87},{”102“,”Yang“,85,80,78},{”103“,”Chen“, 77,70,83},{”104“,”Qian“,70,67,60},{”105“,”Li“,72,70,69}},temp;void main(){ int i,j,sum;

for(i=0;i<5;i++){

sum=0;

for(j=0;j<3;j++)

sum+=stu[i].score[j];

stu[i].avr=sum/3.0;} for(i=0;i<4;i++)

for(j=i;j<4;j++)

if(stu[j].avr

{

temp=stu[j];

stu[j]=stu[j+1];

stu[j+1]=temp;

}

printf(”number

name score1 score2 score3 averagen“);

for(i=0;i<5;i++)

{

printf(”%3s%10s“,stu[i].num,stu[i].name);

for(j=0;j<3;j++)

printf(”%7d“,stu[i].score[j]);

printf(”%10.2fn",stu[i].avr);

} }

第四篇:C语言程序设计的综合性实验

C语言程序设计的综合性实验——使用菜单选择趣味程序

所属课程名称:C语言程序设计

实验属性:综合实验学时:

4设计一个比较实用的菜单,通过菜单选择不同的程序完成不同的功能。菜单选择部分用SWITCH语句实现。菜单项部分编写四道趣味程序:

1、老鼠咬坏账本,公式中符号□代表是被老鼠咬掉的地方。要想恢复下面的等式,应在□中填上哪能个相同的数字?3□×6237=□3×35642、侦探题。一汽车撞人后开溜。4 个人提供如下线索:

甲:牌照三、四位相同;乙:牌号为31××××;

丙:牌照五、六位相同;丁:三—六位是一个整数的平方。

3、打印一个钻石图案

4、求百钱买百鸡的问题:

中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?

5、退出菜单

① 指导思想

通过让学生做一个综合的应用程序设计,让学生掌握三种结构化程序设计的常用语句,结合应用前面所学的知识,提高分析问题、解决问题的能力和学生编程应用能力。同时通过趣味程序的设计来提高学生对本门课程的学习兴趣。

② 实验目的及要求

通过使用C语言最基本的知识,训练学生结构化程序设计的基本技术。锻炼使用控制语句的能力,提高学生的编程能力。

③ 涉及到的内容或知识点

本实验涉及到算法分析、顺序程序设计、分支结构程序设计和循环结构程序设计等知识点。④ 采用的教学方法和手段

学生在完成相关课程基础实验教学内容,掌握结构化程序设计基本方法的前提下,由老师指定设计要实现的主要功能和实验的内容,学生查阅资料后,写出实验设计报告。在规定的时间内,由学生独立完成实验内容,并对结果进行分析,按照要求撰写规范的实验报告。

第五篇:语言课程设计-学生成绩管理系统

1、课程设计的目的、任务

《汇编语言》课程设计对于巩固汇编语言理论知识,加强学生的实际动手能力和提高学生综合素质十分必要。课程设计的目的主要是通过程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。

2、软件需求分析和设计

2.1学生成绩管理系统是对学生成绩的管理,其中包括以下几个模块:(1).插入一个数据(插入学生学号以及语数外三个成绩)。(2)修改一个数据。(3)删除学生成绩数据。(4)查找学生成绩。(5)查看学生成绩的排名(6)查看学生成绩分布(7)按esc键退出系统

2.2学生成绩管理系统应该包含以下信息:学号,语文成绩,英语成绩,数学成绩。因此,系统应该提供以下功能:(1)输出显示菜单。(2)输入学生的成绩(3)修改学生成绩(4)删除学生成绩(5)查询学生成绩(6)显示学生成绩排名(7)显示成绩分布统计(8)按esc键退出系统

2.3依据程序的功能需求,该系统的功能结构图如下

系统功能结构图

2.4 程序流程图:

主程序流程图

查找学生成绩

插入学生学号及成绩

修改学生的成绩

显示各个学科各分数段的人数

3、程序实现说明

3.1学生管理系统中各子程序如下:

(1).输入全部学生学号以及语文,英语,数学三科的成绩。子程序名:insert 子程序描述:该子程序为输入字程序。系统在开始的时候是没有数据的,通过该子程序可以初始化系统,将学生的学号及成绩输入系统。

代码:

insert proc near;定义进程子程序:插入学生,学号及 成绩 call input;调用input add n,1 ret insert endp

(2).修改输入的成绩。子程序名:modify 子程序描述:通过子程序修改学生的成绩 代码:

modify proc near;定义进程子程序:修改学生学号,成绩 md1:output mess1;输出mess1 shuru;调用宏shuru:二位数据输入 mov bl,n mov bh,0 mov al,dl mov si,0 md: cmp al,xh[si];先查找输入的学生是否存在

je qq1_1;查到的话,就跳转到qq1_1输入修改的值,也就是重新输入。;结果相等则跳转到qq1_1 add si,1

cmp si,bx jbe md;小于等于则跳转到md output mess;输出mess jmp md1;不相等继续输入学号

qq1_1:;转入修改的值重新输入。mov di,si output mess2 output mess4 mov si,0 mov cx,3

qq3_1:shuruu;cmp dx,78h;

jbe qq2_1;output ts3;jmp qq1_1;qq2_1:mov buf[si],dl output bg;add si,1 loop qq3_1 mov al,buf[0];mov chi[di],al mov al,buf[1]

分别输入语文,英语,数学成绩,并将其放 在缓冲区buf中 比较输入的成绩是否大于120,如果大于120的 话,那么重 新输入成绩 小于等于则转移到qq2_1 输出ts3 跳转到qq1_1 输出空格 将存入buf中的成绩,分别赋值给存放对应科 目的成绩的数组

mov eng[di],al mov al,buf[2] mov mat[di],al ret modify endp

(3).删除学生的成绩。子程序名:delete 子程序描述:通过子程序删除学生的成绩 代码:

de proc near;删除某个学生的记录 sc1:output mess1 shuru;调用宏shuru,接受输入的学号 mov bl,n mov bh,0 mov al,dl mov si,0 sc: cmp al,xh[si];查询输入学号的学生信息是否存在,不存在的话,重新输入学号 je sc2;相等则转移到sc2 add si,1 cmp si,bx jbe sc;小于等于则转移到sc output mess;输出mess jmp sc1 sc2: sub bx,si cmp bx,0 je sc3;相等则转移到sc3 mov cx,bx

sc4:mov dl,chi[si+1] mov chi[si],dl mov dl,eng[si+1] mov eng[si],dl mov dl,mat[si+1] mov mat[si],dl mov dl,xh[si+1] mov xh[si],dl add si,1 loop sc4;loop循环指令,执行操作(cx)<--(cx)-1.若 cx!=0,跳转到标号sc处循环执行;cx=0,则推出

循环,执行loop的下一条指令 sub n,1 sc3: ret de endp

(3).查询学生的成绩。子程序名:find 子程序描述:通过子程序查询学生的成绩 代码:

find proc near;定义进程子程序:查找学生成绩 call sum;求学生的总成绩 call ping;求学生的平均成绩

bj1:output mess1;输出mess1 shuru;二位数数据输入 mov bl,n mov bh,0 mov al,dl

mov si,0

bj: cmp al,xh[si];将输入的学号与输入的学号相比,je i;存在的话,将此学生的成绩输出。je表示结果相

等则转移。add si,1 cmp si,bx jbe bj;output mess jmp bj1 i: output strr2 shuzi xh[si];shuzi output bg;mov al,chi[si] cbw;shuzii ax;shuzii output bg;mov al,eng[si] cbw;shuzii ax;shuzii output bg

mov al,mat[si] cbw shuzii ax output bg;

mov al,pj[si] cbw

小于等于则转移到bj 为二位数据输出 输出空格 将字节变为字

为三位数据输出。输出空格 将字节变为字

为三位数据输出 输出空格的字符串,用于与标题栏对齐

shuzii ax output bg

mov ax,si mov bl,2 mul bl mov bx,ax shuzii zc[bx];shuzii为三位数据输出

output bg;输出空格的字符串,用于与标题栏对齐 shuzi mc[si];shuzi为二位数据输出 ret find endp

(4).显示学生的成绩排名。子程序名:show 子程序描述:通过子程序显示学生的成绩排名 代码:

show proc near;定义进程子程序:显示结果排名 call sum;调用宏sum call ping;调用宏ping call rank;调用宏rank call shuchu;调用宏shuchu ret show endp

3.2程序运行抓图:

主菜单

修改学生成绩

删除学生成绩

显示各个学科各分数段的人数

4、程序总结

通过两个星期的学习,努力,终于完成了报告。系统可以很好的运行。这两个多星期的时间,几乎每天不是在敲代码,就是在看代码,查书,上网。系统中用到了很多最近才学习的知识,比如宏,子程序。这些都使得代码的运行效率提高了,代码行数减少了。系统还用到了bios的清屏功能。这些功能如果不是做课程设计,我想我很难会接触到这些知识。

由于自己对知识掌握的不是很牢固,其中也会碰到一些困难。每当遇到问题的时候,我会先上网去查找,看看有没有人提过这方面的问题。互联网是强大的,大部分的问题通过网络都可以解决。部分找不到的问题,我就去请教班里学得好的同学。他们对知识的掌握远超过我。这样下来,很多问题都迎刃而解了。

课程设计是一个很好的掌握书本上知识的过程。平时上课之后,自己都不会想着去敲一些代码联系联系。通过做课程设计,将理论与实践结合了起来,对知识的理解更加深入了。

下载C语言学生管理系统综合性实验题目5篇word格式文档
下载C语言学生管理系统综合性实验题目5篇.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    学生成绩管理系统毕业论文C语言

    111111111学院 毕 业 论 文 题 目学生成绩管理系统 姓 名 1 1 1 所在系别 计 算 机 系 专业班级 计算机应用技术计算机111班学 号 1111111111 指导教师 1 1 1 日 期......

    学生管理系统论文(C语言)[全文5篇]

    目 录 摘要 .............................................................................................................................................. 3......

    C语言程序设计学生通讯录管理系统

    #include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" #include "stdlib.h" #define null 0 struct record { char name[20]; char phone[20];......

    C语言大作业——学生通讯录管理系统

    #include #include //#define NULL 0 #define LEN sizeof(struct message) struct message //定义结构体{ char name[15]; char number[15]; char phone[15]; char qq[1......

    图书管理系统实验范文

    小型图书管理系统 试验目的 采用C/S模式完成一个小型的图书管理系统;完成需求分析所有流程。 问题及算法描述 完成一个小型图书管理系统,功能要求如下: 1) 能够通过书籍基本信......

    护理综合性实验

    综合性实验 模拟为患者集体测量生命体征的场景,每组选1名学生模拟昏迷患者,由其他3名学生分别模拟护士为其测量T、P、R、BP,并让3名学生分别把各自所测量值填写于《生命体征测......

    学生管理系统

    import java.awt.*; import java.awt.event.*; import java.sql.*; import java.util.*; import javax.swing.*; public class Xsglxt extends JFrame implements ActionLi......

    学生通讯录管理系统(C语言课程设计实验报告)

    C语言课程设计报告——刘显安 C语言课程设计 姓名:刘显安 学号:09041131 班级:090411 专业:计算机科学与技术 学院:信息工程学院 设计题目:学生通讯录管理系统 指导教师:宋文琳 提......