写一道C语言题目(必须是要用C语言写的)
要求如下(尽量不要用指针和链表):有十个学生,每个学生的成绩包括:学号,姓名,三门课程的成绩,输入十个学生的数据,求每个学生的平均成绩,并按平均成绩由高到低输出学生的姓名,学号,和平均成绩。欢迎回答!不甚感激!
追问:来自手机问问大哥,我要的是不要用链表的……
要求如下(尽量不要用指针和链表):有十个学生,每个学生的成绩包括:学号,姓名,三门课程的成绩,输入十个学生的数据,求每个学生的平均成绩,并按平均成绩由高到低输出学生的姓名,学号,和平均成绩。欢迎回答!不甚感激!
追问:来自手机问问大哥,我要的是不要用链表的……
答案:学校的题目出来出去都是这种题目#include<stdlib.h>
#include<stdio.h>
void xuesheng()
{
struct date
{
int num;
char name[20];
int score[3];
float average;
}stu[5];
struct date *p=stu,*t;
struct date *p1[5]={&stu[0],&stu[1],&stu[2],&stu[3],&stu[4]};
int i,j;
char c;
FILE *fp;
printf("本程序是上机课写的,现改进一下输入过程,不会混乱\n");
for(i=0;i<5;i++)
{
printf("输入学号:");
scanf("%d",&(p+i)->num);
c=getchar();
while(c!='\n')
{
c=getchar();
}
printf("输入名字:");
scanf("%[^\n]",&(p+i)->name);
printf("输入三科成绩:");
for(j=0;j<3;j++)
scanf("%d",&(p+i)->score[j]);
getchar();
}
for(i=0;i<5;i++)
(p+i)->average=((p+i)->score[0]+(p+i)->score[1]+(p+i)->score[2])/3;
for(i=0;i<4;i++)
for(j=0;j<5-i;j++)
if(p1[j]->average>p1[j+1]->average)
{
t=p1[j];
p1[j]=p1[j+1];
p1[j+1]=t;
}
printf(" 学号 姓名 成绩1 成绩2 成绩3 平均分\n");
printf(" (num) (name) (score1) (score2) (score3) (average)\n");
for(i=0;i<5;i++)
{
printf("%7d%11s",p1[i]->num,p1[i]->name);
for(j=0;j<3;j++)
printf("%8d",p1[i]->score[j]);
printf(" %9f",p1[i]->average);
printf("\n");
}
if((fp=fopen("C:\\Documents and Settings\\All Users\\桌面\\studsort.txt","w+"))==NULL)
{printf("error:");
exit(0);
}
fprintf(fp," 学号 姓名 成绩1 成绩2 成绩3 平均分\n");
fprintf(fp," (num) (name) (score1) (score2) (score3) (average)\n");
for(i=0;i<5;i++)
{
fprintf(fp,"%7d%11s",p1[i]->num,p1[i]->name);
for(j=0;j<3;j++)
fprintf(fp,"%8d",p1[i]->score[j]);
fprintf(fp," %9f",p1[i]->average);
fprintf(fp,"\n");
}
fclose(fp);
}#include <stdio.h>
#include <string.h>#define MAXLen 3
struct student {
int code;
char name[20];
double aver;
}students[MAXLen];void mswap(struct student *stua,struct student *stub) {
int tcode;
char tname[20];
double taver;
tcode = stua->code;
stua->code = stub->code;
stub->code = tcode;
strcpy(tname,stua->name);
strcpy(stua->name,stub->name);
strcpy(stub->name,tname);
taver = stua->aver;
stua->aver = stub->aver;
stub->aver = taver;
}void bubble_sort(struct student *stu, unsigned n) { // 选择排序函数
unsigned i,j,k;
double tmp;
for(i = 0; i < n - 1; i++) {
k = i;
tmp = stu[i].aver;
for(j = i + 1; j < n; j++) if(stu[j].aver > tmp) {
k = j;
tmp = stu[j].aver;
}
if(k != i) mswap(&stu[i],&stu[k]);
}
}int main() {
int i,j;
char *courses[3] = {"英语成绩","物理成绩","C语言成绩"};
double sum,grade;
for(i = 0;i < MAXLen;i++) {
printf("第%d个学生的学号 : ",i + 1);
scanf("%d",&students[i].code);
printf("第%d个学生的姓名 : ",i + 1);
scanf("%s",students[i].name);
sum = 0.0;
for(j = 0;j < 3;j++) {
printf("%s : ",courses[j]);
scanf("%lf",&grade);
sum = sum + grade;
}
students[i].aver = sum/3.0;
}
bubble_sort(students, MAXLen);
printf("*********************\n");
printf(" 序号 姓 名 平均成绩\n");
printf("*********************\n");
for(i = 0;i < MAXLen;i++) {
printf(" %4d",students[i].code);
printf(" %-6s",students[i].name);
printf(" %6.2lf\n",students[i].aver);
}
return 0;
}