1设计一个按键菜单,菜单项包括:
按A键打印四门课的总成绩
按B键打印出平均成绩
按C键打印最高分的学生信息
按D键显示所有学生信息
按E添加一个学生的记录
按F键删除一个学生记录
按Q键退出
最好编程序用多种方法,谢谢各位的帮忙
我要程序代码,不会的请不要来
这个容易哦,不过分太少了.
因为分太少,所以偷了点懒.按E和按F键的功能,我没有做.就是说,少写两个函数.
而且输入格式方面也有点问题.当然,改起来不难.
如果你加分的话,我会帮你做完.
呵呵,其实做到这里,其它的也不难了,可以自己练练.
#include<stdio.h>
#include <stdlib.h>
struct student
{
char name[20];
char num[20];
int a,a1,a2,a3,a4;
int aver;
}stu[10];
void mark(student *b)
{ int i;
for(i=0;i<10;i++)
{
b[i].a=b[i].a1+b[i].a2+b[i].a3+b[i].a3;
printf("%d ",b[i].a);
}
printf("\n");
}
void avemark(student *b)
{ int i;
for(i=0;i<10;i++)
{
b[i].a=b[i].a1+b[i].a2+b[i].a3+b[i].a3;
b[i].aver=b[i].a/4;
printf("%d ",b[i].aver);
}
printf("\n");
}
void maxstudent(student *b)
{ int i,max;
for(i=0;i<9;i++)
{
max=(b[i].a>b[i+1].a)?b[i].a:b[i+1].a;
}
for(i=0;i<10;i++)
if(b[i].a==max)
{
printf("最高分数学生的姓名,学号,总分,平均分如下:\n");
printf("%s %s %d\n",b[i].name,b[i].num,b[i].a,b[i].aver);
}
}
void xianshi(student *b)
{
int i;
printf("所有学生信息如下(依次为学生的姓名,学号,总分,四科成绩):\n");
for(i=0;i<10;i++)
{
printf("%s %s %d %d %d %d %d %d\n",b[i].name,b[i].num,b[i].a,b[i].a1,b[i].a2,b[i].a3,b[i].a4);
}
}
int main()
{ int i,n;char c;
printf("依次输入学生信息(姓名,学号,四科成绩\n注意:各项信息用空格分开,输完一个学生后按回车,接着输下一个学生\n");
printf("输入要输入学生的人数:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{gets(stu[i].name);gets(stu[i].num);scanf("%d%d%d%d",stu[i].a1,stu[i].a2,stu[i].a3,stu[i].a4);}
printf("菜单如下:\n按A键打印四门课的总成绩.\n按B键打印出平均成绩按.\n");
printf("C键打印最高分的学生信息\n按D键显示所有学生信息.\n");
printf("按E添加一个学生的记录.\n按F键删除一个学生记录.\n按Q键退出.\n");
printf("请按键选择(以小写字母输入):\n");
scanf("%c",&c);
switch(c)
{
case 'a':mark(stu);break;
case 'b':avemark(stu);break;
case 'c':maxstudent(stu);break;
case 'd':xianshi(stu);break;
case 'e':break;
case 'f':break;
case 'q':abort();
}
return 0;
}
因为分太少,所以偷了点懒.按E和按F键的功能,我没有做.就是说,少写两个函数.
而且输入格式方面也有点问题.当然,改起来不难.
如果你加分的话,我会帮你做完.
呵呵,其实做到这里,其它的也不难了,可以自己练练.
#include<stdio.h>
#include <stdlib.h>
struct student
{
char name[20];
char num[20];
int a,a1,a2,a3,a4;
int aver;
}stu[10];
void mark(student *b)
{ int i;
for(i=0;i<10;i++)
{
b[i].a=b[i].a1+b[i].a2+b[i].a3+b[i].a3;
printf("%d ",b[i].a);
}
printf("\n");
}
void avemark(student *b)
{ int i;
for(i=0;i<10;i++)
{
b[i].a=b[i].a1+b[i].a2+b[i].a3+b[i].a3;
b[i].aver=b[i].a/4;
printf("%d ",b[i].aver);
}
printf("\n");
}
void maxstudent(student *b)
{ int i,max;
for(i=0;i<9;i++)
{
max=(b[i].a>b[i+1].a)?b[i].a:b[i+1].a;
}
for(i=0;i<10;i++)
if(b[i].a==max)
{
printf("最高分数学生的姓名,学号,总分,平均分如下:\n");
printf("%s %s %d\n",b[i].name,b[i].num,b[i].a,b[i].aver);
}
}
void xianshi(student *b)
{
int i;
printf("所有学生信息如下(依次为学生的姓名,学号,总分,四科成绩):\n");
for(i=0;i<10;i++)
{
printf("%s %s %d %d %d %d %d %d\n",b[i].name,b[i].num,b[i].a,b[i].a1,b[i].a2,b[i].a3,b[i].a4);
}
}
int main()
{ int i,n;char c;
printf("依次输入学生信息(姓名,学号,四科成绩\n注意:各项信息用空格分开,输完一个学生后按回车,接着输下一个学生\n");
printf("输入要输入学生的人数:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{gets(stu[i].name);gets(stu[i].num);scanf("%d%d%d%d",stu[i].a1,stu[i].a2,stu[i].a3,stu[i].a4);}
printf("菜单如下:\n按A键打印四门课的总成绩.\n按B键打印出平均成绩按.\n");
printf("C键打印最高分的学生信息\n按D键显示所有学生信息.\n");
printf("按E添加一个学生的记录.\n按F键删除一个学生记录.\n按Q键退出.\n");
printf("请按键选择(以小写字母输入):\n");
scanf("%c",&c);
switch(c)
{
case 'a':mark(stu);break;
case 'b':avemark(stu);break;
case 'c':maxstudent(stu);break;
case 'd':xianshi(stu);break;
case 'e':break;
case 'f':break;
case 'q':abort();
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2006-12-11
用switch实现根据不同的字母实现不同的功能,可以把各种功能写成不同的函数.下面是主函数的框架,请参考.
#include <stdio.h>
#define N 60
int score[N][4];
char name[N][10];
void main()
{
char c;
c=getchar();
while (1){
switch(c){
case 'A': printSum();break;
case 'B' printAve();break;
case 'C': printMax();break;
case 'D': printAll();break;
case 'E': addStu();break;
case 'F': delStu();break;
case 'Q': return;
}
}
}
#include <stdio.h>
#define N 60
int score[N][4];
char name[N][10];
void main()
{
char c;
c=getchar();
while (1){
switch(c){
case 'A': printSum();break;
case 'B' printAve();break;
case 'C': printMax();break;
case 'D': printAll();break;
case 'E': addStu();break;
case 'F': delStu();break;
case 'Q': return;
}
}
}
第2个回答 2006-12-11
学习学习 先收藏起来
第3个回答 2006-12-11
这些书上都有相应的代码啊。。。。你只要弄个菜单就好了。