c学生成绩处理
❶ c语言:学生成绩简单管理程序
给你一个模板吧:
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include<conio.h>
#include<malloc.h>
typedef struct list
{
char name[20];
char num[12];
char telephone[12];
int score;
struct list *next;
}list,*lnode;
lnode init()
{
lnode L=(lnode)malloc(sizeof(list));
L->next=NULL;
return L;
}
lnode clear(lnode L)
{
L->next=NULL;
return L;
}
lnode insert(lnode L,char name[],char num[],char telephone[],int score)
{
lnode p,q=L;
p=(lnode)malloc(sizeof(list));
p->next=NULL;
strcpy(p->name,name);
strcpy(p->num,num);
strcpy(p->telephone,telephone);
p->score=score;
if(q->next==NULL)
q->next=p;
else
{
while(q->next!=NULL)
{
q=q->next;
}
q->next=p;
}
return L;
}
void scan()
{
printf("\t\t\t****欢迎使用学生通讯录***\t\t\t\n\n");
printf("\t\t\t%c 1: 插入联系人\t%c\n\n",5,5);
printf("\t\t\t%c 2:删除联系人\t\t%c\n\n",5,5);
printf("\t\t\t%c 3:显示所有联系人\t%c\n\n",5,5);
printf("\t\t\t%c 4:查找联系人\t\t%c\n\n",5,5);
printf("\t\t\t%c 5:清空\t\t%c\n\n",5,5);
printf("\t\t\t%c 6:保存为文本文件\t%c\n\n",5,5);
printf("\t\t\t%c 其他键退出\t\t%c\n\n",5,5);
printf("\t\t\t******按0显示主菜单******\t\t\t\n");
}
void search(lnode L)
{
lnode p=L;
int n=0;
char a[20];
if(p->next!=NULL)
{
printf("请选择:\n");
printf("1:按姓名查找\t\t\t2:按学号查找\n");
scanf("%d",&n);
switch(n)
{
case 1:
printf("请输入姓名\n");
scanf("%s",a);
while(strcmp(p->name,a)!=0&&p->next!=NULL)
{
p=p->next;
}
if(strcmp(p->name,a)==0){
printf("fp","姓名\t学号\t电话\t学分\n");
printf("%s\t%s\t%s\t%d",p->name,p->num,p->telephone,p->score);
}
else
{
printf("未找到联系人");
}
break;
case 2:
printf("请输入学号\n");
scanf("%s",a);
while(strcmp(p->num,a)!=0&&p->next!=NULL)
{
p=p->next;
}
if(strcmp(p->num,a)==0){
printf("姓名\t学号\t电话\t学分");
printf("%s\t%s\t%s\t%d",p->name,p->num,p->telephone,p->score);
}
else
{
printf("未找到联系人");
}
break;
default:
n=0;
break;
}
}
else
printf("通讯录为空,请插入\n");
}
lnode deletel(lnode L)
{
int n=0;
char a[20];
lnode p=L,pre=NULL;
if(p->next!=NULL)
{
printf("请选择:/n1:姓名删除\t2:按学号删除\t");
scanf("%d",&n);
switch(n)
{
case 1:
p=L;
printf("请输入姓名");
scanf("%s",a);
while(strcmp(p->name,a)!=0&&p->next!=NULL)
{
pre=p;
p=p->next;
}
if(strcmp(p->name,a)==0)
{
pre->next=p->next;
free(p);
printf("删除成功\n请选择\n");
return L;
break;
}
else
printf("未找到此联系人");
return L;
break;
case 2:
printf("请输入学号");
scanf("%s",a);
p=L;
while(strcmp(p->num,a)!=0&&p->next!=NULL)
{
pre=p;
p=p->next;
}
if(strcmp(p->num,a)==0)
{
pre->next=p->next;
free(p);
printf("删除成功\n请选择\n");
return L;
break;
}
else
printf("未找到此联系人\n");
return L;
break;
}
}
else
printf("通讯录为空\n");
return L;
}
void display(lnode L)
{
lnode p=L;
if(p->next==NULL)
printf("未插入联系人\n");
else
{
for(p=L->next;p!=NULL;p=p->next)
{
printf("姓名\t学号\t电话\t学分\n");
printf("%s\t%s\t%s\t%d\n",p->name,p->num,p->telephone,p->score);
if(p->next==NULL) break;
}
}
}
void save(lnode L)
{
FILE *fp;
lnode p=L;
if((fp=fopen("学生信息管理.txt","w+"))==NULL)
printf("文件打开失败\n");
else
{
if(p->next!=NULL)
{
for(p=L->next;p!=NULL;p=p->next)
{
fprintf(fp,"姓名\t学号\t电话\t学分\n");
fprintf(fp,"%s\t%s\t%s\t%d",p->name,p->num,p->telephone,p->score);
}
if(p==NULL)
printf("文件保存成功");
}
else
printf("通讯录为空\n");
}
fclose(fp);
}
void main()
{
int n,score,k=1;
char name[20],num[20],telephone[20];
lnode L;
L=init();
printf("\t\t\t****欢迎使用学生通讯录***\t\t\t\n\n");
printf("\t\t\t%c 1: 插入联系人\t%c\n\n",5,5);
printf("\t\t\t%c 2:删除联系人\t\t%c\n\n",5,5);
printf("\t\t\t%c 3:显示所有联系人\t%c\n\n",5,5);
printf("\t\t\t%c 4:查找联系人\t\t%c\n\n",5,5);
printf("\t\t\t%c 5:清空\t\t%c\n\n",5,5);
printf("\t\t\t%c 6:保存为文本文件\t%c\n\n",5,5);
printf("\t\t\t%c 其他键退出\t\t%c\n\n",5,5);
printf("\t\t\t******按0显示主菜单******\t\t\t\n");
while(k)
{ scanf("%d",&n);
switch(n)
{
case 1:
printf("请输入姓名");
scanf("%s",name);
printf("请输入学号");
scanf("%s",num);
printf("请输入电话");
scanf("%s",telephone);
printf("请输入学分");
scanf("%d",&score);
L=insert(L,name,num,telephone,score);
printf("添加成功,请选择\n");
break;
case 2:
L=deletel(L);
break;
case 3:
display(L);
break;
case 4:
search(L);
break;
case 5:
L=clear(L);
case 6:
save(L);
break;
case 0:
scan();
break;
default:
k=0;
}
}
printf("************************谢谢使用****************************");
}
❷ C语言编写单科学生成绩 编写一个单科学生成绩处理程序,具体要求如下: 1)学生个数定义成符号常量。
#include<stdio.h>
#defineMAX_STU_NUM100//学生人数最大值
intmain()
{
intstu_num,i;//学生人数
floatstu_score[MAX_STU_NUM];//成绩
floatstu_fail=0;//不及格人数比例
floatstu_pass=0;//及格人数比例
floatstu_high=0;//高分人数比例
floatstu_average=0;//平均成绩
printf("输入学生人数:");
scanf("%d",&stu_num);
printf("输入学生成绩(空格或换行分开): ");
for(i=0;i<stu_num;i++)
{
scanf("%f",&stu_score[i]);
stu_average+=stu_score[i];
if(stu_score[i]<60)
stu_fail++;
elseif(stu_score[i]>=80)
{
stu_high++;
stu_pass++;
}
else
stu_pass++;
}
stu_average/=stu_num;
stu_fail/=stu_num;
stu_pass/=stu_num;
stu_high/=stu_num;
printf(" 学生人数:%d ",stu_num);
printf("平均成绩:%.f ",stu_average);
printf("高分比例:%.2f%% ",stu_high*100);
printf("及格比例:%.2f%% ",stu_pass*100);
printf("不及格比例:%.2f%% ",stu_fail*100);
return0;
}
❸ C语言程序设计 从文件中读取学生成绩按要求处理后按文件输出
#include"stdio.h"
#include<stdlib.h>
structstu{//定义一个个人信息结构体
charstuid[13],name[20],g[3];//ID号、姓名、性别
intscore;//成绩
};
intmain(intargc,char*argv[]){
FILE*fp,*fq;//读文件指针fp和创建文件指针fq
structstu*p,t;//结构体指针p和变量t
inti,j,k,n,a,b,c,d;//abcd为四级变量
fq=fopen("stu2.txt","w");//创建一个写文件stu2.txt
//打开读文件stu1.txt并判断读写文件是否打开成功
if(!fq||(fp=fopen("stu1.txt","r"))==NULL){
printf("Openthefilefailure,exit... ");//不成功则提示并退出
return0;
}
//检测一下文件中存储了多少个学生的信息并记入变量n
for(n=0;fscanf(fp,"%s%s%s%d",t.stuid,t.name,t.g,&t.score),!feof(fp);n++);
if((p=(structstu*)malloc(sizeof(t)*n))==NULL){//按n大小动态申请内存空间
printf("Applicationmemoryfailure,exit... ");//申请失败则提示退出
return0;
}
rewind(fp);//读文件指针恢复到文件开头
for(a=b=c=d=i=0;i<n;i++){//读取n个学生信息并依次存入动态数组中
fscanf(fp,"%s%s%s%d",p[i].stuid,p[i].name,p[i].g,&p[i].score);
if(p[i].score>=90&&p[i].score<=100)//同时按成绩级别分别统计人数
a++;
elseif(p[i].score>=80&&p[i].score<=89)
b++;
elseif(p[i].score>=70&&p[i].score<=79)
c++;
else
d++;
}
fclose(fp);//读取完毕关闭文件
//向文件输出级别结果
fprintf(fq,"优:%g良:%g中:%g差:%g ",a/(n+0.0),b/(n+0.0),c/(n+0.0),d/(n+0.0));
//同时输出到屏幕以便检查
printf("优:%g良:%g中:%g差:%g ",a/(n+0.0),b/(n+0.0),c/(n+0.0),d/(n+0.0));//不想屏显则删除此行
for(i=0;i<n;i++){//对n个学生按成绩降序排序并输出到文件及屏幕
for(k=i,j=k+1;j<n;j++)
if(p[k].score<p[j].score)
k=j;
if(i!=k)
t=p[k],p[k]=p[i],p[i]=t;
//输出到文件
fprintf(fq,"%s%s%s%d ",p[i].stuid,p[i].name,p[i].g,p[i].score);
//输出么屏幕
printf("%s %s %s %d ",p[i].stuid,p[i].name,p[i].g,p[i].score);//不想屏显则删除此行
}
free(p);//释放所申请的内在空间
fclose(fq);//关闭写文件
return0;
}
运行结果:
注:文件都在当前目录下
❹ 用C语言设计一个学生成绩管理系统
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#defineMAX1000
/*定义学生成绩信息结构*/
struct stu
{
char id[8];
char name[8];
(4)c学生成绩处理扩展阅读:
short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)
long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)
long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)
signed:修饰整型数据,有符号数据类型。(C89标准新增)
unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)
restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。(C99标准新增)
复杂类型关键字
struct:结构体声明。(K&R时期引入)
union:联合体声明。(K&R时期引入)
enum:枚举声明。(C89标准新增)
typedef:声明类型别名。(K&R时期引入)
sizeof:得到特定类型或特定类型变量的大小。(K&R时期引入)
inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)
❺ c语言编写学生成绩处理
//给你个示例,仅供参考
#include<stdio.h>
#include<stdlib.h>
#defineNO_LEN11
#defineNAME_LEN9
#defineSTUDENT_NUM5
#defineTOP_THREE3
typedefstructstudent
{
charno[NO_LEN];
charname[NAME_LEN];
floata;
floatb;
floatc;
floatavg;
}ST;//st[STUDENT_NUM];
intget_student_info(ST*st,intlen);
voiddisplay(constST*st,intlen);
voidcalculate_average(ST*st,intlen);
voidsort(ST*st,intlen);
intmain(intargc,char*argv[])
{
STst[STUDENT_NUM];
get_student_info(st,STUDENT_NUM);
calculate_average(st,STUDENT_NUM);
sort(st,STUDENT_NUM);
display(st,STUDENT_NUM);
display(st,TOP_THREE);
return0;
}
/*从键盘输入STUDENT_NUM个学生的信息*/
intget_student_info(ST*st,intlen)
{
inti=0,ret=0;
if(0==st||0>=len||STUDENT_NUM<len)
{
printf("parametererror ");
returnret=1;
}
for(;i<len;++i)
{
printf("输入第%d个学号、姓名、三门课成绩:",i+1);
scanf("%10s%8s%f%f%f",st[i].no,st[i].name,&st[i].a,&st[i].b,&st[i].c);
}
returnret;
}
/*显示前len个学生的信息*/
voiddisplay(constST*st,intlen)
{
inti=0;
if(0==st||0>=len||STUDENT_NUM<len)
{
printf("parametererror ");
return;
}
printf("================================== ");
for(;i<len;++i)
{
printf("%s%s%.1f%.1f%.1f%.1f ",
st[i].no,st[i].name,st[i].a,st[i].b,st[i].c,st[i].avg);
}
}
/*计算每个学生的平均成绩*/
voidcalculate_average(ST*st,intlen)
{
inti=0;
if(0==st||0>=len||STUDENT_NUM<len)
{
printf("parametererror ");
return;
}
for(;i!=len;++i)
{
st[i].avg=(st[i].a+st[i].b+st[i].c)/3.0;
}
}
/*冒泡排序降序排列*/
voidsort(ST*st,intlen)
{
inti=0,j=0;
STtmp;
if(0==st||0>=len||STUDENT_NUM<len)
{
printf("parametererror ");
return;
}
for(;i<len-1;++i)
{
for(j=0;j<len-1-i;++j)
{
if(st[j].avg<st[j+1].avg)
{
tmp=st[j];
st[j]=st[j+1];
st[j+1]=tmp;
}
}
}
}
❻ 学生成绩处理C语言
|#include int main() { int s=0; printf("请输入学生的成绩:"); scanf("%d",&s); if (s 0 || s>100) { printf("error\n"); } else if (s<60) { printf("fail\n"); } else if (s < 70) { printf("pass\n"); } else if (s < 80) { printf("medium\n"); } else if (s < 90) { printf("good\n"); } else { printf("excellent\n"); } return 0; } 楼主你要加油了
❼ C语言学生成绩处理系统
到CSDN里看看
❽ C语言设计学生成绩处理系统
#include<stdio.h>
#include<stdlib.h>
char menu[]="1、输入成绩\n2、显示最高分\n3、显示所有低于平均分的成绩\n4、按升序排序成绩并输出\n5、查找某一成绩\n6、退出\n请选择一个菜单:";
int n=0;
float *score=NULL;
void input()
{
int i;
if(score)
{
free(score);
score=NULL;
}
printf("请输入成绩个数:");
scanf("%d",&n);
score=(float*)calloc(n,sizeof(float));
printf("请输入%d个成绩:",n);
for(i=0;i<n;i++)
scanf("%f",(score+i));
printf("\n");
}
void showhighest()
{
float high;
int i;
if(!score)
{
printf("还没有输入成绩,不能进行此项操作\n\n");
return ;
}
high=*score;
for(i=1;i<n;i++)
{
if(*(score+i)>high)
high=*(score+i);
}
printf("最高分是:%.1f\n\n",high);
}
void showlessthanaver()
{
float aver=0;
int i;
if(!score)
{
printf("还没有输入成绩,不能进行此项操作\n\n");
return ;
}
for(i=0;i<n;i++)
aver+=*(score+i);
aver/=n;
printf("这%d个成绩的平均分是%.1f,小于平均分的成绩有:",n,aver);
for(i=0;i<n;i++)
{
if(*(score+i)<aver)
printf("%.1f ",*(score+i));
}
printf("\n\n");
}
void sortandoutput()
{
int i,j;
float t;
if(!score)
{
printf("还没有输入成绩,不能进行此项操作\n\n");
return ;
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(*(score+j)>*(score+j+1))
{
t=*(score+j);
*(score+j)=*(score+j+1);
*(score+j+1)=t;
}
}
}
printf("按从小到大排序后的成绩是:");
for(i=0;i<n-1;i++)
printf("%.1f ",*(score+i));
printf("%.1f\n\n",*(score+n-1));
}
void searchscore()
{
int i,c=0;
float s;
if(!score)
{
printf("还没有输入成绩,不能进行此项操作\n\n");
return ;
}
printf("请输入要查找的成绩:");
scanf("%f",&s);
printf("分数%.1f在成绩数组中共出现了",s);
for(i=0;i<n;i++)
{
if(s==*(score+i))
c++;
}
printf("%d次\n\n",c);
}
void processmenu(int m)
{
switch(m)
{
case 1:
input();
break;
case 2:
showhighest();
break;
case 3:
showlessthanaver();
break;
case 4:
sortandoutput();
break;
case 5:
searchscore();
break;
case 6:
if(score)
{
free(score);
score=NULL;
}
exit(0);
break;
default:
printf("无法处理的菜单命令\n\n");
break;
}
}
int main()
{
int m;
while(1)
{
printf("%s",menu);
scanf("%d",&m);
processmenu(m);
}
return 0;
}
❾ C语言程序设计学生成绩管理系统
#include
"stdio.h"
/*定义学生结构体*/
struct
Student
{
char
ID[20];
char
Name[20];
float
Mark1;
float
Mark2;
float
Mark3;
float
Average;
};
/*声明学生数组及学生数量*/
struct
Student
students[1000];
int
num=0;
/*求平均值*/
float
Avg(struct
Student
stu)
{
return
(stu.Mark1+stu.Mark2+stu.Mark3)/3;
}
/*通过学号返回数组下标*/
int
Student_SearchByIndex(char
id[])
{
int
i;
for
(i=0;i<num;i++)
{
if
(strcmp(students[i].ID,id)==0)
{
return
i;
}
}
return
-1;
}
/*通过姓名返回数组下标*/
int
Student_SearchByName(char
name[])
{
int
i;
for
(i=0;i<num;i++)
{
if
(strcmp(students[i].Name,name)==0)
{
return
i;
}
}
return
-1;
}
/*显示单条学生记录*/
void
Student_DisplaySingle(int
index)
{
printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");
printf("-------------------------------------------------------------\n");
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[index].ID,students[index].Name,
students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);
}
/*插入学生信息*/
void
Student_Insert()
{
while(1)
{
printf("请输入学号:");
scanf("%s",&students[num].ID);
getchar();
printf("请输入姓名:");
scanf("%s",&students[num].Name);
getchar();
printf("请输入成绩:");
scanf("%f",&students[num].Mark1);
getchar();
printf("请输入成绩:");
scanf("%f",&students[num].Mark2);
getchar();
printf("请输入成绩:");
scanf("%f",&students[num].Mark3);
getchar();
students[num].Average=Avg(students[num]);
num++;
printf("是否继续?(y/n)");
if
(getchar()=='n')
{
break;
}
}
}
/*修改学生信息*/
void
Student_Modify()
{
float
mark1,mark2,mark3;
while(1)
{
char
id[20];
int
index;
printf("请输入要修改的学生的学号:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if
(index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要修改的学生信息为:\n");
Student_DisplaySingle(index);
printf("--
请输入新值--\n");
printf("请输入学号:");
scanf("%s",&students[index].ID);
getchar();
printf("请输入姓名:");
scanf("%s",&students[index].Name);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].Mark1);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].Mark2);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].Mark3);
getchar();
students[index].Average=Avg(students[index]);
}
printf("是否继续?(y/n)");
if
(getchar()=='n')
{
break;
}
}
}
/*删除学生信息*/
void
Student_Delete()
{
int
i;
while(1)
{
char
id[20];
int
index;
printf("请输入要删除的学生的学号:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if
(index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要删除的学生信息为:\n");
Student_DisplaySingle(index);
printf("是否真的要删除?(y/n)");
if
(getchar()=='y')
{
for
(i=index;i<num-1;i++)
{
students[i]=students[i+1];
}
num--;
}
getchar();
}
printf("是否继续?(y/n)");
if
(getchar()=='n')
{
break;
}
}
}
/*按姓名查询*/
void
Student_Select()
{
while(1)
{
char
name[20];
int
index;
printf("请输入要查询的学生的姓名:");
scanf("%s",&name);
getchar();
index=Student_SearchByName(name);
if
(index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要查询的学生信息为:\n");
Student_DisplaySingle(index);
}
printf("是否继续?(y/n)");
if
(getchar()=='n')
{
break;
}
}
}
/*按平均值排序*/
void
Student_SortByAverage()
{
int
i,j;
struct
Student
tmp;
for
(i=0;i<num;i++)
{
for
(j=1;j<num-i;j++)
{
if
(students[j-1].Average<students[j].Average)
{
tmp=students[j-1];
students[j-1]=students[j];
students[j]=tmp;
}
}
}
}
/*显示学生信息*/
void
Student_Display()
{
int
i;
printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");
printf("-------------------------------------------------------------\n");
for
(i=0;i<num;i++)
{
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[i].ID,students[i].Name,
students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);
}
}
/*将学生信息从文件读出*/
void
IO_ReadInfo()
{
FILE
*fp;
int
i;
if
((fp=fopen("Database.txt","rb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if
(fread(&num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;i<num;i++)
{
fread(&students[i],sizeof(struct
Student),1,fp);
}
}
fclose(fp);
}
/*将学生信息写入文件*/
void
IO_WriteInfo()
{
FILE
*fp;
int
i;
if
((fp=fopen("Database.txt","wb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if
(fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("写入文件错误!\n");
}
for
(i=0;i<num;i++)
{
if
(fwrite(&students[i],sizeof(struct
Student),1,fp)!=1)
{
printf("写入文件错误!\n");
}
}
fclose(fp);
}
/*主程序*/
main()
{
int
choice;
IO_ReadInfo();
while(1)
{
/*主菜单*/
printf("\n------
学生成绩管理系统------\n");
printf("1.
增加学生记录\n");
printf("2.
修改学生记录\n");
printf("3.
删除学生记录\n");
printf("4.
按姓名查询学生记录\n");
printf("5.
按平均成绩排序\n");
printf("6.
退出\n");
printf("请选择(1-6):");
scanf("%d",&choice);
getchar();
switch(choice)
{
case
1:
Student_Insert();
break;
case
2:
Student_Modify();
break;
case
3:
Student_Delete();
break;
case
4:
Student_Select();
break;
case
5:
Student_SortByAverage();
Student_Display();
break;
case
6:
exit();
break;
}
IO_WriteInfo();
}
}
你的串号我已经记下,采纳后我会帮你制作