#include<stdio.h>#include<stdlib.h>#include<string.h>struct record{char xuehao[10]//学号char name[20]//姓名char sex[3]//性别int ke1//数学int ke2 //语文int ke3//英语int pin}stu[50]int k=1,n,mvoid readfile()void seek()void insert()void del()void save()void menu() void seek(){int i,j,item,flag<br>char s1[20]<br>printf("------------------\n")<br>printf("1.按学号查询\n")<br>printf("2.退出本菜单\n")<br>printf("------------------\n")<br>while(1)<br>{ printf("请选择子菜单编号:")<br>scanf("%d",&item)<br>flag=0<br>switch(item)<br>{<br>case 1:<br>printf("
请输入要查询的
学生的学号:\n")<br>scanf("%s",s1)<br>for(i=0i<ni++)<br>if(strcmp(stu[i].xuehao,s1)==0)<br>{ flag=1<br>printf("该学生学号,姓名,性别,数学,语文,英语 分别为:\n")<br>printf("%s%s%s %d%d%d",stu[i].xuehao,stu[i].name,<br>stu[i].sex,stu[i].ke1,stu[i].ke2,stu[i].ke3)<br>}if(flag==0)printf("该学号不存在!\n")breakcase 2:returndefault:printf("请在1-2之间选择\n")}}}void insert(){ int i=n,j,flagprintf("请输入待增加的学生数:\n")scanf("%d",&m)do{ flag=1while(flag){ flag=0printf("请输入第 %d 个学生的学号:\n",i+1)scanf("%s",stu[i].xuehao)for(j=0j<ij++)if(strcmp(stu[i].xuehao,stu[j].xuehao)==0){ printf("已有该学号,请检查后重新录入!\n")flag=1break}}printf("请输入第 %d 个学生的姓名:",i+1)scanf("%s",stu[i].name)printf("\n请输入第 %d 个学生的性别:",i+1)scanf("%s",stu[i].sex)printf("\n请输入第 %d 个学生的数学
成绩:",i+1)scanf("%d",&stu[i].ke1)printf("\n请输入第 %d 个学生的语文成绩:",i+1)scanf("%d",&stu[i].ke2)printf("\n请输入第 %d 个学生的英语成绩:",i+1)scanf("%d",&stu[i].ke3)if(flag==0){ i=ii++}}while(i<n+m)n+=mprintf("录入完毕!\n\n")}void del(){ int i,j,flag=0char s1[20]printf("请输入要删除学生的学号:\n")scanf("%s",s1)for(i=0i<ni++)if(strcmp(stu[i].xuehao,s1)==0){ flag=1for(j=ij<n-1j++)stu[j]=stu[j+1]}if(flag==0)printf("该学号不存在!\n")if(flag==1){ printf("删除成功,显示结果请选择菜单6\n")n--}}void readfile(){char buf[80],*p="student.dat"FILE *fpint i=0if ((fp=fopen("student.dat","r"))==NULL){ printf("Open file %s error! Strike any key to exit!",p)system("pause")exit(0)}while(fscanf(fp,"%s%s%s%d%d%d",stu[i].xuehao,stu[i].name,stu[i].sex,&stu[i].ke1,&stu[i].ke2,&stu[i].ke3)==6){ i++i=i}fclose(fp)n=iprintf("录入完毕!\n")}void save(){ int i,j,k,flag=0FILE *fpfp=fopen("student.dat","w")for(i=0i<mi++){ fprintf(fp,"%s%s%d%d%d",stu[i].xuehao,stu[i].name,stu[i].sex,&stu[i].ke1, &stu[i].ke2,&stu[i].ke3)fclose(fp)printf("已储存")}}void paixu(){ int i,j,k,tfor(i=0i<mi++) { stu[i].pin=(stu[i].ke1+stu[i].ke2+stu[i].ke3)/3} for(i=0i<=m-2i++) { k=i for(j=i+1j<=m-1j++) if(stu[j].pin<stu[k].pin) k=j if(k!=i) { t=stu[k].pin stu[k].pin=stu[i].pin stu[i].pin=t } } for(i=0i<mi++) {printf("第 %d 个学生的姓名%s:",i+1,stu[i].name)<br> printf("\n第 %d 个学生的性别:%s",i+1,stu[i].sex)<br> printf("\n第 %d 个学生的数学成绩:%d",i+1,stu[i].ke1)<br> printf("\n第 %d 个学生的语文成绩:%d",i+1,stu[i].ke2)<br> printf("\n第 %d 个学生的英语成绩:%d",i+1,stu[i].ke3)<br> printf("\n第 %d 个学生的平均成绩:%d",i+1,stu[i].pin)<br>}}void menu(){ int nubprintf(" \n\n学生成绩管理系统\n\n")printf("*****系统功能菜单*****\n")printf("----------------------\n")printf("1.输入学生信息\n")printf("2.查询学生信息\n")printf("3.按学号删除信息\n")printf("4.读入学生信息\n")printf("5.保存信息(要把修改保存到文件,退出程序前必须执行本项)\n")printf("6.查询学生平均成绩信息\n")printf("0.退出系统\n")printf("----------------------\n")printf("请选择菜单编号:")scanf("%d",&nub)switch(nub){case 1:insert()breakcase 2:seek()breakcase 3:del()breakcase 4:readfile()breakcase 5:save()breakcase 6:paixu()breakcase 0:k=0breakdefault:printf("请在0-6之间选择\n")}}void main(){while(k)menu()}//平均数是排序后,输出的,如果你不想直接输入,那就不要对每个学生进行选择排序了//分数序列如:2\1,3\2.5\3,8\5.13\8,21\13.......的前20项之和。
#include//直接看这一组数列有什么规律,很容易发现,从2/1开始,后一组的分母为前一组的一个分子
//后一项的分子为前一项的分母分子之和,如果用An表示分母,Bn表示分子,则有递推工式,B(n+1)=An::A(n+1)=An+Bn知道这个就很好办了
float getMe(int n)//这个函数就是求第n项的那个数的值
{
float An=2.0float Bn=1.0
float temp
while(--n)
{
temp=Bn
Bn=An
An=An+temp
}
return(An/Bn)}
void main()
{
int n
float theSum=0.0
printf("请输入你想要求的前n项的和:")
scanf("%d",&n)
for(n>0n--)
{
theSum=theSum+getMe(n)
}
printf("%f",theSum)
}
#include<iostream>
#include<string.h>
using
namespace
std
struct
student
{
char
name[50]
int
score
}
void
teacherC(student
*stu)//老师录入成绩
{
int
i,n
cout<<"请输入需要录入的学生的个数\n"
cin>>n
cout<<"请依次输入学生的姓名和成绩\n"
for(i=0i<ni++)
{
cin>>stu[i].name>>stu[i].score
}
stu[i].score=-1
}
void
show(student
*stu)
{
int
i=0
for(i<100i++)
{
if(stu[i].score==-1)
break
cout<<stu[i].name<<"
"<<stu[i].score<<endl
}
}
int
search(student
*stu,char
*name)
{
int
i=0,k=-1
for(i<100i++)
{
if(stu[i].score==-1)
break
if(strcmp(stu[i].name,name)==0)
{
k=i
break
}
}
return
k
}
void
edit(student
*stu)
{
int
i=0,j=0
char
name[30],an
while(1)
{
cout<<"请输入需要修改的学生名字\n"
cin>>name
i=search(stu,name)
if(i>=0)
{
cout<<"该学生的信息为:\n"
cout<<stu[i].name<<"
"<<stu[i].score<<endl
cout<<"确定要修改该学生的信息是的输入Y不是输入N:\n"
cin>>an
if(an=='Y'||an=='y')
{
cout<<"请输入修改后的姓名成绩:\n"
cin>>stu[i].name>>stu[i].score
cout<<"修改成功\n"
}
cout<<"继续修改请输入1退出输入0:\n"
cin>>j
if(j==0)
break
}
else
cout<<"没有该学生的信息\n"
}
}
void
dele(student
*stu)
{
int
i=0,j=0
char
name[30],an
while(1)
{
cout<<"请输入需要删除的学生名字\n"
cin>>name
i=search(stu,name)
if(i>0)
{
cout<<"该学生的信息为:\n"
cout<<stu[i].name<<"
"<<stu[i].score<<endl
cout<<"确定要删除该学生的信息是的输入Y不是输入N:\n"
cin>>an
if(an=='Y'||an=='y')
{
*stu[i].name=0
cout<<"删除成功\n"
}
cout<<"继续删除请输入1退出输入0:\n"
cin>>j
if(j==0)
break
}
else
cout<<"没有该学生的信息\n"
}
}
int
main()
{
int
i,n
char
name[30]
student
stu[100]//学生总数上限为100个
while(1)
{
cout<<"请做出以下的选择:"<<endl
cout<<"输入
0
退出系统\n"
cout<<"输入
1
教书录入成绩\n"
cout<<"输入
2
学生查询成绩\n"
cout<<"输入
3
修改学生成绩\n"
cout<<"输入
4
删除学生成绩\n"
cin>>i
switch(i)
{
case
1:
teacherC(stu)break
case
2:
cout<<"请输入查询的姓名\n"
cin>>namen=search(stu,name)cout<<"该学生成绩是:"<<stu[n].score<<endlbreak
case
3:
edit(stu)break
case
4:
dele(stu)break
default:if(i!=0)cout<<"请输入有效数字\n"
}
if(i==0)
break
}
return
0
}