文档库 最新最全的文档下载
当前位置:文档库 › 学生成绩管理系统完整版 C程序设计源代码 不用链表 有添加 删除 查找 修改等功能

学生成绩管理系统完整版 C程序设计源代码 不用链表 有添加 删除 查找 修改等功能

学生成绩管理系统完整版 C程序设计源代码 不用链表 有添加 删除 查找 修改等功能
学生成绩管理系统完整版 C程序设计源代码 不用链表 有添加 删除 查找 修改等功能

/*4. 定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩,编写一程序。应用简单菜单和子函数调用方式实现下面的功能:

(1)从键盘输入10个学生的以上内容,存入文件stud.txt

(2)浏览显示成绩表(要求显示格式成绩时,格式较规范)

(3)将10个学生按照平均分数从高到低进行排序,结果存入文件stud1.txt (4)输入任意的一个课程名,分数从高到低进行排序,结果存入文件stud2.txt (5)向文件stud1.txt中插入一个记录,成绩排序不变,结果存入文件stud1.txt */

#include "stdio.h" /*头文件名*/

#include "stdlib.h" /*头文件名,因为程序中用到了exit(结束程序)和函数*/ #include "string.h" /*头文件名,因为程序中用到了字符串函数*/

#define N 1000

/******************************************************************** *****************************/

/*****************************************定义结构体模块******************************************/

struct student {

long num; /*定义学生学号为长整型*/

char name[20]; /*定义姓名为字符型,占12个字符*/

float math,English,physics,total,average;

float TOT_math,TOT_English,TOT_physics,TOT_total,TOT_aver;

float aver_math,aver_English,aver_physics,aver_total,aver_average;

}student; /*定义结构体名称为student*/

/******************************************************************** *****************************/

/****************************************输入初始值模块*******************************************/

void input(struct student *p,int size){

int i;

for(i=0;i

printf("请输入学号:");

while(1){scanf("%ld",&p[i].num);

if(long(p[i].num)!=p[i].num||long(p[i].num)<=0){ /*输入判断*/

printf("输入错误,学号必须为整数,请重新输入: ");

fflush(stdin);}

else{break;}}

printf("请输入姓名:");scanf("%s",p[i].name);

printf("请输入数学成绩:");

while(1){scanf("%f",&p[i].math);

if(float(p[i].math)!=p[i].math||float(p[i].math)<=0||p[i].math>100||p[i].math <0){

printf("输入错误,数学成绩必须为0~100之间的数,请重新输入: ");

fflush(stdin);}

else{break;}}

printf("请输入英语成绩:");

while(1){scanf("%f",&p[i].English);

if(float(p[i].English)!=p[i].English||float(p[i].English)<=0||p[i].English>100||p[i ].English<0){

printf("输入错误,英语成绩必须为0~100之间的数,请重新输入: ");

fflush(stdin); }

else{break;}}

printf("请输入物理成绩:");

while(1){scanf("%f",&p[i].physics);

if(float(p[i].physics)!=p[i].physics||float(p[i].physics)<=0||p[i].physics>100||p[ i].physics<0){

printf("输入错误,英语成绩必须为0~100之间的数,请重新输入: ");

fflush(stdin);}

else{break;}}

printf("\n");

}

printf("信息录入成功!\n\n");

}

/******************************************************************** ****************************************/

/*************************************保存初始值到"初始二进制值.txt"模块*************************************/

void save(struct student *p,int size){ /*保存模块*/ FILE *fp;int i;

if((fp=fopen("初始值二进制值.txt","wb+"))==NULL){ /*建立文件*/

printf("cannot open the file\n");

}

for(i=0;i

fwrite(&p[i],sizeof(student),1,fp);} /*快写函数,写到磁盘中为二进制数*/ fclose(fp); /*关闭文件*/

}

/******************************************************************** ****************************************/

/*************************************保存初始值到"初始二进制值.txt"模块*************************************/

void save0(struct student *p,int size){ /*保存模块*/ FILE *fp;int i;

if((fp=fopen("初始值二进制值1.txt","ab+"))==NULL){ /*建立文件*/

printf("cannot open the file\n");

}

for(i=0;i

fwrite(&p[i],sizeof(student),1,fp);} /*快写函数,写到磁盘中为二进制数*/ fclose(fp); /*关闭文件*/

}

/******************************************************************** ****************************************/

/******************************************保存初始值到可浏览文件模块****************************************/

void SAVE(struct student *p,int size){

FILE *fp;

int i,b=0;

char name[20];

printf("请输入保存初始值的可浏览文件名: ");

scanf("%s",name);

if((fp=fopen(name,"w+"))==NULL){

printf("文件名输入错误!!\n");

}

fprintf(fp,"\n\t\t----------------------------------------------------------\n");

fprintf(fp,"\t\t序号学号姓名数学英语物理\n");

fprintf(fp,"\t\t----------------------------------------------------------");

fprintf(fp,"\n" );

for(i=0;i

fprintf(fp,"\t\t %-6d%-12d%-12s%-8.2f%-8.2f%-8.2f\n",b,p[i].num,p[i].name,p[ i].math,p[i].English,p[i].physics);

fprintf(fp,"\t\t----------------------------------------------------------\n");

}

fclose(fp);

printf("\n文件保存成功!\n\n");

}

/******************************************************************** ****************************************/

/******************************************读取初始值模块****************************************************/

int read(struct student *p,int size){

FILE *fp;int i,n=0;

if((fp=fopen("初始值二进制值.txt","rb+"))==NULL){

printf("文件名输入错误!!\n");}

for(i=0;i

if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}

fclose(fp);

return n;

}

/******************************************************************** ****************************************/

/******************************************读取输出初始值模块************************************************/

void read_print(struct student *p,int size){

FILE *fp;int i,n=0,b=0;

if((fp=fopen("初始值二进制值.txt","rb+"))==NULL){

printf("文件名输入错误!!\n");

} printf("\n\t\t----------------------------------------------------------\n");

printf("\t\t序号学号姓名数学英语物理\n");

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

for(i=0;i

if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}

for(i=0;i

printf("\t\t %-6d%-12d%-12s%-8.2f%-8.2f",b,p[i].num,p[i].name,p[i].math,p[i]. English);

printf("%-8.2f\n",p[i].physics);

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

}

printf("\n\n");

fclose(fp);

}

/******************************************************************** ****************************************/

/*********************************************计算总分和平均分模块

*******************************************/

void total_average(struct student *p,int size){ /*求每位同学的总分和平均分模块*/

int i;

for(i=0;i

p[i].total=p[i].math+p[i].English+p[i].physics;

/*每个同学的总分等于三科成绩之和*/

p[i].average=p[i].total/3; /*每个同学的平均分等于总分的1/3*/

}

}

/******************************************************************** ****************************************/

/**************************************输出初始值总分和平均分模块*******************************************/

void read_print1(struct student *p,int size){

void total_average(struct student *p,int size);

FILE *fp;int i,n=0,b=0;

if((fp=fopen("初始值二进制值.txt","rb+"))==NULL){

printf("文件名输入错误!!\n");

} printf("\n\t---------------------------------------------------------------------------\n");

printf("\t序号学号姓名数学英语物理总分平均分\n");

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

for(i=0;i

if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}

total_average(p,n);

for(i=0;i

printf("\t %-6d%-12d%-12s%-8.2f%-8.2f",b,p[i].num,p[i].name,p[i].math,p[i].E nglish);

printf("%-8.2f%-10.2f%-8.2f\n",p[i].physics,p[i].total,p[i].average);

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

}

printf("\n\n");

fclose(fp);

}

/******************************************************************** ****************************************/

/***************************************将初始值按平均分排序模块*********************************************/

void range(struct student *p,int size){ /*所有同学的成绩按平均分由高到低排序模块*/

int i,j,k;

struct student temp; /*定义一个student类型的变量备用*/ for(i=0;i

k=i;

for(j=i+1;j

if(p[k].average

temp=p[k];

p[k]=p[j];

p[j]=temp;}

}

}

/******************************************************************** ****************************************/

/************************************输出初始值按平均分排序的结果模块****************************************/

int read_print2(struct student *p,int size){

void total_average(struct student *p,int size);

void range(struct student *p,int size);

FILE *fp;int i,n=0,b=0;

if((fp=fopen("初始值二进制值.txt","rb+"))==NULL){

printf("文件名输入错误!!\n");

} printf("\n\t---------------------------------------------------------------------------\n");

printf("\t学号姓名数学英语物理总分平均分名次\n");

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

for(i=0;i

if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}

total_average(p,n);

range(p,n);

for(i=0;i

printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].English); printf("%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);

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

}

printf("\n\n");

fclose(fp);

return n;

}

/******************************************************************** ****************************************/

/********************保存初始值按平均分排序后结果到"初始值按平均分排序二进制值.txt"模块**********************************/

void save1(struct student *p,int size){ /*保存模块*/ FILE *fp;int i;

if((fp=fopen("按平均分排序二进制值.txt","wb+"))==NULL){ /*建立文件*/

printf("cannot open the file\n");

}

for(i=0;i

fwrite(&p[i],sizeof(student),1,fp);} /*快写函数,写到磁盘中为二进制数*/ fclose(fp); /*关闭文件*/

}

/******************************************************************** ****************************************/

/******************************************读取排序后结果模块************************************************

int read1(struct student *p,int size){

FILE *fp;int i,n=0;

if((fp=fopen("按平均分排序二进制值.txt","r+"))==NULL){

printf("文件名输入错误!!\n");}

for(i=0;i

if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}

fclose(fp);

return n;

}

/******************************************************************** ****************************************/

/*******************************保存初始值按平均分排序后结果到可浏览文件模块*********************************/

void SAVE1(struct student *p,int size){

FILE *fp;

int i,b=0;

char name[20];

printf("请输入保存排序结果的文件名: ");

scanf("%s",name);

if((fp=fopen(name,"w+"))==NULL){

printf("文件名输入错误!!\n");

}

fprintf(fp,"\n\t---------------------------------------------------------------------------\n");

fprintf(fp,"\t学号姓名数学英语物理总分平均分名次\n");

fprintf(fp,"\t---------------------------------------------------------------------------\n");

fprintf(fp,"\n" );

for(i=0;i

fprintf(fp,"\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].Englis h);

fprintf(fp,"%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);

fprintf(fp,"\t---------------------------------------------------------------------------\n");

}

fclose(fp);

printf("\n文件保存成功!\n\n");

}

/******************************************************************** ****************************************/

/***********************************************科目选择模块*************************************************/

int choose(){

system("color B1 ");

system("cls");

printf("\n\t************请选择按成绩从高到低排序的科目******************\n\n");

printf("\t\t\t查看数学成绩排序请输入(数学)\n\n");

printf("\t\t\t查看英语成绩排序请输入(英语)\n\n");

printf("\t\t\t查看物理成绩排序请输入(物理)\n\n");

printf("\t=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* =*\n");

printf("\t\t请输入科目名称: ");

int a;

char str1[]="数学",str2[]="英语",str3[]="物理";

char str[20];

scanf("%s",str);

if(strcmp(str1,str)==0){a=1;}

else{if(strcmp(str2,str)==0){a=2;}

else{if(strcmp(str3,str)==0){a=3;}

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

system("pause");}}

}

return(a);

}

/******************************************************************** ****************************************/

/*******************************所有同学的成绩按数学成绩由高到低排序模块*************************************/

void range1(struct student *p,int size){

int i,j,k;

struct student temp;

for(i=0;i

k=i;

for(j=i+1;j

if(p[k].math

temp=p[k];

p[k]=p[j];

p[j]=temp;}

}

}

/******************************************************************** ****************************************/

/*******************************所有同学的成绩按英语成绩由高到低排序模块*************************************/

void range2(struct student *p,int size){

int i,j,k;

struct student temp;

for(i=0;i

k=i;

for(j=i+1;j

if(p[k].English

temp=p[k];

p[k]=p[j];

p[j]=temp;}

}

}

/********************************************************************

****************************************/

/*******************************所有同学的成绩按物理成绩由高到低排序模块*************************************/

void range3(struct student *p,int size){

int i,j,k;

struct student temp;

for(i=0;i

k=i;

for(j=i+1;j

if(p[k].physics

temp=p[k];

p[k]=p[j];

p[j]=temp;}

}

}

/******************************************************************** ****************************************/

/****************************************输出按数学科目排序结果模块*****************************************/

int read_print31(struct student *p,int size){

void total_average(struct student *p,int size);

void range1(struct student *p,int size);

FILE *fp;int i,n=0,b=0;

if((fp=fopen("按平均分排序二进制值.txt","rb+"))==NULL){

printf("文件名输入错误!!\n");

} printf("\n\t---------------------------------------------------------------------------\n");

printf("\t学号姓名数学英语物理总分平均分名次\n");

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

for(i=0;i

if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}

total_average(p,n);

range1(p,n);

for(i=0;i

printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].English); printf("%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);

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

}

printf("\n\n");

fclose(fp);

return n;

}

/******************************************************************** ****************************************/

/****************************************输出按英语科目排序结果模块*****************************************/

int read_print32(struct student *p,int size){

void total_average(struct student *p,int size);

void range2(struct student *p,int size);

FILE *fp;int i,n=0,b=0;

if((fp=fopen("按平均分排序二进制值.txt","rb+"))==NULL){

printf("文件名输入错误!!\n");

} printf("\n\t---------------------------------------------------------------------------\n");

printf("\t学号姓名数学英语物理总分平均分名次\n");

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

for(i=0;i

if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}

total_average(p,n);

range2(p,n);

for(i=0;i

printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].English); printf("%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);

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

}

printf("\n\n");

fclose(fp);

return n;

}

/******************************************************************** ****************************************/

/****************************************输出按物理科目排序结果模块*****************************************/

int read_print33(struct student *p,int size){

void total_average(struct student *p,int size);

void range3(struct student *p,int size);

FILE *fp;int i,n=0,b=0;

if((fp=fopen("按平均分排序二进制值.txt","rb+"))==NULL){

printf("文件名输入错误!!\n");

} printf("\n\t---------------------------------------------------------------------------\n");

printf("\t学号姓名数学英语物理总分平均分名次\n");

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

for(i=0;i

if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}

total_average(p,n);

range3(p,n);

for(i=0;i

printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].English); printf("%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);

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

}

printf("\n\n");

fclose(fp);

return n;

}

/******************************************************************** ****************************************/

/*******************************************保存按科目排序结果模块*******************************************/

void SAVE2(struct student *p,int size){

FILE *fp;

int i,b=0;

char name[20];

printf("请输入保存科目排序后的文件名: ");

scanf("%s",name);

if((fp=fopen(name,"w+"))==NULL){

printf("文件名输入错误!!\n");

}

fprintf(fp,"\n\t---------------------------------------------------------------------------\n");

fprintf(fp,"\t学号姓名数学英语物理总分平均分名次\n");

fprintf(fp,"\t---------------------------------------------------------------------------\n");

fprintf(fp,"\n" );

for(i=0;i

fprintf(fp,"\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].Englis h);

fprintf(fp,"%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);

fprintf(fp,"\t---------------------------------------------------------------------------\n");

}

fclose(fp);

printf("\n文件保存成功!\n\n");

}

/******************************************************************** ****************************************/

/************************************输出所有值按平均分排序的结果模块****************************************/

/******************************************************************** ****************************************/

/************************************输出所有值按平均分排序的结果模块****************************************/

int read_print3(struct student *p,int size){

void total_average(struct student *p,int size);

void range(struct student *p,int size);

FILE *fp;int i,n=0,b=0;

if((fp=fopen("初始值二进制值1.txt","rb+"))==NULL){

printf("文件名输入错误!!\n");

} printf("\n\t---------------------------------------------------------------------------\n");

printf("\t学号姓名数学英语物理总分平均分名次\n");

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

for(i=0;i

if(fread(&p[i],sizeof(struct student),1,fp)!=0){n++;}}

total_average(p,n);

range(p,n);

for(i=0;i

printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].English); printf("%-8.2f%-10.2f%-8.2f %d\n",p[i].physics,p[i].total,p[i].average,b);

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

}

printf("\n\n");

fclose(fp);

return n;

}

/******************************************************************** ****************************************/

/***************************************查找模块************************************************************/

void search(struct student *p,int size){

void total_average(struct student *p,int size);

char str[20]; long c;

int i,a,flag=0,n=0;

printf("\n\t********************查找某位同学的成绩*********************\n\n");

printf("\t\t\t按学号查找请输入(学号)\n\n");

printf("\t\t\t按姓名查找请输入(姓名)\n\n");

printf("\t=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* =*\n");

char str1[]="学号",str2[]="姓名";

char str3[20];

while(1){

printf("\t\t请输入查找方式: ");

scanf("%s",str3);

if(strcmp(str1,str3)==0){a=1;break;}

else{if(strcmp(str2,str3)==0){a=2;break;}

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

}

}

switch(a){

case 1: printf("\n\t请输入学号: ");

scanf("%s",str);

c=strtol(str,NULL,0);

FILE *fp;

if((fp=fopen("初始值二进制值1.txt","rb+"))==NULL){

printf("文件名输入错误!!\n");

}

for(i=0;i

if(fread(&p[i],sizeof(struct student),1,fp)!=0)n++;}

total_average(p,n);

for(i=0;i

if(p[i].num==c){ flag=1;

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

printf("\t学号姓名数学英语物理总分平均分\n");

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

printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].English); printf("%-8.2f%-10.2f%-8.2f\n",p[i].physics,p[i].total,p[i].average);

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

break;}

if(flag==0){printf("输入学号错误!!\n");}break;

case 2: printf("\n\t请输入姓名: ");

scanf("%s",str);

if((fp=fopen("初始值二进制值1.txt","rb+"))==NULL){

printf("文件名输入错误!!\n");

}

for(i=0;i

if(fread(&p[i],sizeof(struct student),1,fp)!=0)n++;}

total_average(p,n);

for(i=0;i

if(strcmp(str,p[i].name)==0){ flag=1;

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

printf("\t学号姓名数学英语物理总分平均分\n");

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

printf("\t%-12d%-12s%-8.2f%-8.2f",p[i].num,p[i].name,p[i].math,p[i].English); printf("%-8.2f%-10.2f%-8.2f\n",p[i].physics,p[i].total,p[i].average);

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

break;}

if(flag==0){printf("输入姓名错误!!\n");}break;

}

}

/******************************************************************** ****************************/

/*************************************。。。修改。。。*******************************************/

void correct(struct student *p,int size){

void input(struct student *p,int size);

int i,a=0,flag=0; FILE *fp;

if((fp=fopen("初始值二进制值1.txt","r+"))==NULL){

printf("不能打开文件\n");}

printf("请输入需要修改人的学号进行修改,修改后将自动计算总分和平均分并排序!!\n");

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

scanf("%ld",&p[N].num);

for(i=0;fread(&p[i],sizeof(struct student),1,fp)!=0;i++){a++;}

for(i=0;i

if(p[i].num==p[N].num){flag=1;

printf("请输入新的信息!!\n\n");

printf("请输入学号:");

while(1){scanf("%ld",&p[i].num);

if(long(p[i].num)!=p[i].num||long(p[i].num)<=0){ /*输入判断*/

printf("输入错误,学号必须为整数,请重新输入: ");

fflush(stdin);}

else{break;}}

printf("请输入姓名:");scanf("%s",p[i].name);

printf("请输入数学成绩:");

while(1){scanf("%f",&p[i].math);

if(float(p[i].math)!=p[i].math||float(p[i].math)<=0||p[i].math>100||p[i].math <0){

printf("输入错误,数学成绩必须为0~100之间的数,请重新输入: ");

fflush(stdin);}

else{break;}}

printf("请输入英语成绩:");

while(1){scanf("%f",&p[i].English);

if(float(p[i].English)!=p[i].English||float(p[i].English)<=0||p[i].English>100||p[i ].English<0){

printf("输入错误,英语成绩必须为0~100之间的数,请重新输入: ");

fflush(stdin); }

else{break;}}

printf("请输入物理成绩:");

while(1){scanf("%f",&p[i].physics);

if(float(p[i].physics)!=p[i].physics||float(p[i].physics)<=0||p[i].physics>100||p[

i].physics<0){

printf("输入错误,英语成绩必须为0~100之间的数,请重新输入: ");

fflush(stdin);}

else{break;}}}

if((fp=fopen("初始值二进制值1.txt","w+"))==NULL){

printf("不能打开文件\n");

exit(0); }

for(i=0;i

fwrite(&p[i],sizeof(struct student),1,fp);}

fclose(fp);

if(flag==0){printf("对不起!!没有查找到您所输的学号!!\n");}

}

/******************************************************************** ****************************/

/*************************************。。。删除。。。*****************************************/

void delite (struct student *p,int size){

int i,a=0,flag=0; FILE *fp;

printf("请输入需要删除的学号进行查找后,该项将自动删除并自动计算总分和平均分及排序!!\n");

if((fp=fopen("初始值二进制值1.txt","rb+"))==NULL){

printf("不能打开文件\n");}

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

scanf("%ld",&p[N].num);

for(i=0;fread(&p[i],sizeof(struct student),1,fp)!=0;i++){a++;}

for(i=0;i

if(p[i].num==p[N].num){

for(i=i;i

p[i]=p[i+1];}

if((fp=fopen("初始值二进制值1.txt","w+"))==NULL){

printf("不能打开文件\n");

exit(0);

}

for(i=0;i

fwrite(&p[i],sizeof(struct student),1,fp);}

fclose(fp);

flag=1;break;

}

}

if(flag==0){

printf("对不起!!没有你找到你想删除的人!!\n");system("pause");

}

}

/******************************************************************** ****************************************/

/********************************************菜单函数********************************************************/

int menu(){

int a;

system("color 9F"); /*改变输出框字体和背景的颜色*/

system("cls"); /*运行前清屏*/

printf("\n");

printf("\t===============成绩*=*=*=*=*=*=*处理=*=*=*=*=*=*=*系统===============\n");

printf("\n\t作者:卢荣盼班级:计本102 学号:1018014052\n\n");

printf("\t此程序具有以下功能:\n");

printf("\t============================================================= =========\n");

printf("\n\t |***| (1)输入同学的相关信息|***| (7)查找某位同学的成绩\n\n");

printf("\t |=*=| (2)浏览初始学生信息|=*=| (8)按学号修改某位同学的成绩\n\n");

printf("\t |===| (3)求初始学生总分及平均分|===| (9)按学号删除某位同学的信息\n\n");

printf("\t |=*=| (4)查看初始学生平均分排序|=*=| (0)浏览所有同学的信息及排名\n\n");

printf("\t |===| (5)按科目排序存入所有成绩|===| (10)退出程序\n\n");

printf("\t |***| (6)插入新的成绩\n\n");

printf("\t=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= *=*=*=*=*\n");

printf("\t请选择操作序号(0-7):"); /*选择操作项*/

scanf("%d",&a); /*输入选择项*/

return a;

}

/******************************************************************** ****************************************/

/*********************************************主函数********************************************************/

void main(){

int b=0,n;

struct student p[N];

while(1){

switch(menu()){

case 1:

system("color B0 ");

system("cls");

printf("请输入要保存的初始数据的个数: ");

while(1){scanf("%d",&n);

if(int(n)!=n||long(n)<=0){ /*输入判断*/

printf("输入错误,个数必须为整数,请重新输入: ");

fflush(stdin);}

else{break;}}

input(p,n); /*输入初始同学信息*/

save(p,n);save0(p,n);SAVE(p,n); /*保存初始同学信息*/

system("pause"); /*程序运行至此暂停,然后按任意键可继续运行*/

break;

case 2:

system("color F9");

system("cls");

printf("\n\n读取数据如下:\n");

read_print(p,N); /*读取并输出初始值数据*/

system("pause");break;

case 3:

system("color d0 ");

system("cls");

printf("\n\n\n\n录入初始学生的总分平均分如下表: \n");

read_print1(p,N); /*输出初始值每位同学的总分和平均分*/

system("pause");break;

case 4:

system("color F0 ");

system("cls");

printf("\n\n\n\n录入初始学生成绩按平均分由高到低排序如下: \n\n");

SAVE1(p,read_print2(p,N)); /*输出和保存初始值每位同学的平均分排名*/

save1(p,read(p,N));

system("pause");break;

case 5:switch(choose()){

case 1: printf("\n所有同学的成绩按数学成绩由高到低排序如下:\n\n");

SAVE2(p,read_print31(p,N)); /*保存输出模块*/

system("pause");break;

case 2: printf("\n所有同学的成绩按英语成绩由高到低排序如下:\n\n");

SAVE2(p,read_print32(p,N)); /*保存输出模块*/

system("pause");break;

case 3: printf("\n所有同学的成绩按英语成绩由高到低排序如下:\n\n");

SAVE2(p,read_print33(p,N)); /*保存输出模块*/

system("pause");break;}break;

case 6:

system("color d0 ");

system("cls");

printf("插入前学生信息如下:\n");

read_print3(p,N);

printf("请输入插入学生信息:\n\n");

input(p,1);save0(p,1);

printf("插入后学生信息如下:\n");

SAVE1(p,read_print3(p,N));

system("pause");

break;

case 7:system("color fc ");

system("cls");

search(p,N);

system("pause");break;

case 8: system("color E0 ");

system("cls");

printf("修改前学生信息如下:\n");

read_print3(p,N);

correct(p,N);

printf("修改后学生信息如下:\n");

SAVE1(p,read_print3(p,N));

system("pause");break;

case 9:system("color A0 ");

system("cls");

printf("删除前学生信息如下:\n");

read_print3(p,N);

delite(p,N);

printf("删除后学生信息如下:\n");

SAVE1(p,read_print3(p,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语言程序设计试题集与答案解析

一.填空 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++课程设计单链表——学生信息管理系统

学生信息管理系统设计文档 一、设计任务描述 为了实现学籍管理的简单化,我们基于Visual C++集成开发环境编写了“学生信息管 理系统”软件,该软件适用于所有win dows操作系统,面向广大用户, 界面简洁,操作简单。此软件主要是实现对学生学籍信息进行系统化的管理,可 以对学生基本信息进行添加、删除、查找、修改以及对学生成绩的管理,主要是根据学生的学号及其姓名进行操作的。该软件可以更加方便管理者管理学生学籍信息。 二、功能需求说明 该系统所需要的功能有:1链表的建立; 2、学生信息的插入; 3、学生信息的查询; 4、学生信息的输出; 5、学生信息的修改; 6、学生信息的删除; 7、良好的欢迎选择界面。 三、总体方案设计 一、实现任务的方法 1、在欢迎选择界面中,使用Switch这一选择结构来连接程序的执行和用户的命令; 2、在从学生信息的建立直到删除,都是使用链表的相关知识; 3、在定义学生信息时,建立一个Inform类;在定义学生课程成绩时,自定义了一个achieve结构体;

ST rucr acnieve { int nunber : char nane [10] [10]; float achieveiaent [13]: float xuefen [10]: float 0 : float average ; achieve C): float count average (); struct Inform {chai name[10]: char num[20]: string sex: string: id; string bir; string adr : string tel, achieve ach; void achinput 0 : void achprint 0 ; }; 三、模块划分 (1)链表的建立。 (2)对链表信息的插入。 (3)对链表信息的查找。 (4)对链表信息的输出。 (5)对链表信息的删除。 (6)对链表信息的修改。 课程成绩信息作为附加信息,穿插于各个模块中 三、数据结构说明 一、自定义的数据结构: 1、achieve (课程成绩)用于存放课程成绩信息包括课程数、课程名、 成绩、学分、总分和平均分。 "谍稈数 〃课程容(最參课稈数为nn "成绩 "学专 "总分 "平均分 "默认枸隆雷教 "计算该学生课程的加权平均分(总咸绩/总学分) "元素类型 "姓名 〃学号 〃性别 "身份证号 //出生年月曰 〃家庭地址 "电话号码 "课程咸绩 "谍程成绩输入 "遥程成缢输出 3、结点结构-Nodetype,定义了数据域inform和指针域next; 2、inform (学生基本信息)用于存放学生基本信息,包括姓名、学号、性别等。

C语言程序设计精髓编程题在线测试

#include #include int main() { intaa, bb, cc; double re; printf("Input math1, English and math2:"); scanf("%d,%d,%d", &aa, &bb, &cc); re = ( aa * 5 + bb * 1.5 + cc * 3.5) / 10; printf("Final score = %.2f\n", re); return 0; }

#include #include int main() { float re; inti, day; printf("Input length and days:"); scanf("%f,%d", &re, &day); for ( i=0; i< day; i++) { re = re / 2; } printf("length=%.5f\n", re); return 0; }

#include #include int main() { float re; printf("Input payment p:"); scanf("%f", &re); re = re * 0.92; printf("price = %.1f\n", re); return 0; }

#include #include typedefstruct clock { int hour, minute, second; }CLOCK; int main() { CLOCK clock1,clock2; int diff=0, hour, minute; printf("Input time one(hour, second):"); scanf("%d,%d", &clock1.hour,&clock1.minute); printf("Input time two(hour, second):"); scanf("%d,%d", &clock2.hour,&clock2.minute); diff = abs((clock1.hour * 60 + clock1.minute) - (clock2.hour * 60 + clock2.minute)); hour = floor(diff / 60); minute = diff % 60; printf("%d hour %d second\n",hour, minute); return 0; }

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"); }

用链表与文件实现学生成绩管理系统

#include #include #include #include #include using namespace std; struct Class { int Chinese; int Math; int English; }; class Student { public: Student(); void Ofile(ofstream &of); void Infile(ifstream &f); void Out(); void Set(char *name,int no,Class score); char *GetName(); int GetNo(); Student *Next; protected: char Name[20]; int No; Class Score; }; Student::Student():Next(0){} char *Student::GetName() { return Name; } int Student::GetNo() {return No;} void Student::Set(char *name,int no,Class score) { strcpy(Name,name); No=no; Score=score; } void Student::Infile(ifstream &f) { f>>Name>>No>>Score.Chinese>>Score.Math>>Score.English; //将数据输入到文

C语言程序设计经典必背程序

C语言程序设计典型编程必背 1.计算机1-3+5-7+。。。-99+101的值 #include main ( ) { int i,t=1,s; s=0; for(i=1;i<=101;i+=2) { t=t*i; s=s+t;t=t>0?-1:1; } printf(“%d\n”,s); } 2.输入一个十进制数,将他对应的二进制数的各位反序,形成新的十进制数输出。11—1011—1101—13 #include main ( ) { int n,x,t; printf(“shuruzhengshu:”); scanf(“%d”,&n); x=0; while(n!=0) { t=n%2; x=x*2+t;n=n/2; } printf(“xindezhengshu:%d\n,x”); } 3.给出年月日,计算出该日是该年的第几天。 #include main ( ) { int year,month,day,days,i,d; printf(“shuru nian,yue,ri:”); scanf(“%d,%d,%d”,&year,&month,&day); days=0; for(i=1;i

case 7: case 8: case 10: case 12:d=31;break; case 4: case 6: case 9: case 11:d=30;break; case 2:if(year%4==0&&year%100!=0||year%400==0) d=29; else d=28; } days+=d; } printf(“%d nian %d yue %d ri shigainiande %d tian。\n”,year,month,day,days+day); } 4.求100——200间的素数。按每行10个数打印输出。要求在奇数中找素数。 #include main ( ) { int m,k,i,n=0; for(m=101;m<=200;m=m+2) { k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>k+1) { printf(“%d”,m);n=n+1; } if(n%10==0) printf(“\n”); } printf(“\n”); } 5.下面的程序功能是求1!+3!+5!+。。。+n!的和。 #include main ( ) { long int f,s; int i,j,n;s=0;

(完整版)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、整型,实型,字符型

单链表的学生成绩管理系统设计与实现

长春建筑学院《数据结构》课程设计(论文) 基于单链表的学生成绩管理系统设计与实现 Design and implementation of the system of student performance management based on single table 年级: 12级 学号: 121500103 姓名: 徐文辉 专业:计算机科学与技术 指导老师: 常大俊 二零一三年十二月

摘要 学生成绩管理系统是典型的信息管理系统,是学校教务管理的重要组成部分,其处理信息量很大。本课程设计是用C++实现对学生的成绩管理作一个简单的模拟,实质是建立学生成绩单链表,每条记录由姓名、学号与成绩组成,即链表中每个结点由4个域组成,分别为:学号、、成绩、存放下一个结点地址的next域。用菜单选择操作方式完成五项功能分别写成五个函数,插入学生成绩对应建立学生单链表的功能,输出全部学生成绩记录,后三个功能分别对应单链表的查询、修改与删除三大基本操作。该系统中的数据采用线性表中的链式存储结构即单链表来存储,用结构体类型和类类型定义每个学生记录并采用外部文件方式记录数据简便数据的读取与保存。 关键词:数据结构,单链表,C语言,学生成绩管理

Abstract Student achievement management system is a typical management information system, is an important part of the school educational administration management, the large amount of information. The curriculum design is used to achieve C++ performance management for the students to make a simplesimulation, the essence is to establish students report list, each recordconsists of name,and grade, namely the linked list in each node iscomposed of 4 domains, respectively: next domain name, student number,grade, put down a node address the. Complete the five functions were written in five function menu to select the mode of operation, into the student achievement established a single list of the output function of students, allstudents record, after the three functions corresponding to single table query,modify and delete the three basic operations. The system data in the linked storage structure of linear table is a single linked list to store, use the structure types and class types define each student records and the use of an external file to read and save data and simple data record.

(完整版)《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

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语言程序设计50例(经典收藏)

水仙花 #include void main() { int a,b,c,i; for( i=100;i<1000;i++) { a=i/100; b=i%100/10; c=i%10; if(a*a*a+b*b*b+c*c*c==i) { printf("\n"); } } } 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有

的排列后再去掉不满足条件的排列。 2.程序源代码: #include "stdio.h" #include "conio.h" main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); } getch(); } 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按1 0%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码:

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

C++课程设计 单链表——学生信息管理系统

C++课程设计单链表——学生信息管理系统

学生信息管理系统设计文档 一、设计任务描述 为了实现学籍管理的简单化,我们基于Visual C++集成开发环境编写了“学生信息管理系统”软件,该软件适用于所有windows操作系统,面向广大用户,界面简洁,操作简单。此软件主要是实现对学生学籍信息进行系统化的管理,可以对学生基本信息进行添加、删除、查找、修改以及对学生成绩的管理,主要是根据学生的学号及其姓名进行操作的。该软件可以更加方便管理者管理学生学籍信息。 二、功能需求说明 该系统所需要的功能有:1、链表的建立; 2、学生信息的插入; 3、学生信息的查询; 4、学生信息的输出; 5、学生信息的修改; 6、学生信息的删除; 7、良好的欢迎选择界面。 三、总体方案设计 一、实现任务的方法 1、在欢迎选择界面中,使用Switch 这一选择结构来连接程序的执行和用户的命令; 2、在从学生信息的建立直到删除,都是使用链表的相关知识; 3、在定义学生信息时,建立一个Inform 类;在定义学生课程成绩时,自定义了一个achieve 结构体; 二、总体结构

三、模块划分 (1)链表的建立。 (2)对链表信息的插入。 (3)对链表信息的查找。 (4)对链表信息的输出。 (5)对链表信息的删除。 (6)对链表信息的修改。 课程成绩信息作为附加信息,穿插于各个模块中。 三、数据结构说明 一、自定义的数据结构: 1、achieve(课程成绩)用于存放课程成绩信息包括课程数、课程名、成绩、学分、总分和平均分。 2、inform(学生基本信息)用于存放学生基本信息,包括姓名、学号、性别等。 3、结点结构-Nodetype,定义了数据域inform和指针域next;

C语言程序设计第三版谭浩强课后习题答案完整版

C语言程序设计第三版谭浩强 课后习题答案完整版 第一章 1.5请参照本章例题,编写一个C程序,输出以下信息:************************** V ery Good! ************************** 解: mian() {printf(“**************************”); printf(“\n”); printf(“V ery Good!\n”); printf(“\n”); printf(“**************************”); } 1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。解: mian() {int a,b,c,max; printf(“请输入三个数a,b,c:\n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if(max main() { char c1=?C?,c2=?h?,c3=?i?,c4=?n?,c5=?a?; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是Glmre 3.9求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7 (2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5 (1)2.5 (2)3.5 3.10写出程序运行的结果。 main() {int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n); } 解: 9,11,9,10 3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。 (1)a+=a (2)a-=2 (3)a*=2+3 (4)a/=a+a (5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a 解: (1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0 第四章 4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。 a=_3_ _b=_4_ _c=_5 x=1.200000,y=2.400000,z=-3.600000 x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40 c1=ˊaˊ_or_97(ASCII)

C语言程序设计基于链表的学生成绩管理系统

华北科技学院计算机系综合性实验 实验报告 课程名称C语言程序设计 实验学期2011至2012学年第二学期 学生所在系部计算机系 年级2011专业班级计算机科学与技术B-111 学生姓名学号 任课教师 实验成绩 计算机系制

实验报告须知 学生上交实验报告时,必须为打印稿(A4纸)。页面空间不够,可以顺延。 学生应该填写的内容包括:封面相关栏目、实验地点、时间、目的、设备环境、内 容、结果及分析等。 教师根据本课程的《综合性实验指导单》中实验内容的要求,评定学生的综合性实验 成绩;要求在该课程期末考试前将实验报告交给任课教师。综合性实验中,所涉及 的程序,文档等在交实验报告前,拷贝给任课教师。任课教师统一刻录成光盘,与 该课程的期末考试成绩一同上交到系里存档。 5、 未尽事宜,请参考该课程的实验大纲和教学大 纲。 1、 2、 3、 教师应该填写的内容包括:实验成绩、教师评价等。 4、

《c语言程序设计》课程综合性实验报告开课实验室:基础五2012年7月6日 实验题目基于链表的学生成绩管理系统、实验目的 1、掌握链表的创建、遍历显示和清除; 2、掌握链表数据的文件保存、读取; —、设备与环境 微型计算机、VC++6.0 三、实验内容 1、定义结构体,创建链表 structxs node in txh;

charxm[15]; in tgs; in tyy; in twl; structxs no de* next; }; 2、根据以上链表结点结构,实现以下功能 a、学生学号、姓名、各门成绩的录入; b、链表数据显示及清除; C、链表数据的文件保存与读取; 四、实验结果及分析 1、运行结果

大学MOOC哈工大C语言程序设计精髓第六周编程题答案

大学M O O C哈工大C语言程序设计精髓第六周 编程题答案 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出?Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。目前程序存在错误,请将其修改正确。并按照下面给出的运行示例检查程序。 #include<> #include <> int main() { char score[100]; int flag = 0, i, s; char grade; printf("Please input score:\n"); while (1) { flag=0; scanf("%s", score); for (i = 0; i < strlen(score); i++) { if (score[i] >= '0' && score[i] <= '9') { continue;

} else { flag = 1; break; } } s = atoi(score); if (s < 0 || s > 100 || flag == 1) { printf("Input error!\n"); printf("Please input score:\n"); continue; } else{ break; } } s = atoi(score); if (s >= 90) {

学生成绩管理系统完整版C程序设计源代码不用链表有添加删除查找修改等功能

/*4. 定义一个结构体数组,存放 10 个学生的学号,姓名,三门课的成绩,编写一程序。应用简单菜单和子函数调用方式实现下面的功能: (1)从键盘输入 10 个学生的以上内容,存入文件 stud.txt (2)浏览显示成绩表(要求显示格式成绩时,格式较规范) (3)将 10 个学生按照平均分数从高到低进行排序,结果存入文件 stud1.txt ( 4)输入任意的一个课程名,分数从高到低进行排序,结果存入文件stud2.txt ( 5)向文件 stud1.txt 中插入一个记录,成绩排序不变,结果存入文件 stud1.txt #include "stdio.h" /* 头文件名*/ */ #inelude "stdlib.h" /*头文件名,因为程序中用到了exit(结束程序)和函数*/ #include "string.h"/*头文件名,因为程序中用到了字符串函数 */ #define N 1000 定义结构体模块 struct student { long num; /* 定义学生学号为长整型 */ char name[20]; /* 定义姓名为字符型,占 12 个字符*/ float math,English,physics,total,average; float TOT_math,TOT_English,TOT_physics,TOT_total,TOT_aver; float aver_math,aver_English,aver_physics,aver_total,aver_average; }student; /* 定义结构体名称为 student*/ 输入初始值模块 void input(struct student *p,int size){ int i; for(i=0;i

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