c语言:利用结构体编写:分别输入10个学生的英语 数学 编程成绩,并求和。最后用冒泡法排序,并输出。

#include<stdio.h>
struct student
{
char na[50];
char ID[11];
int English,Math,C_pro;
int sum;
}s[N],*p=s;

main()
{

}

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

}

void sort (struct student *p,int n)
{

}

void disp(struct student *p,int n)
{

}

代码如下:

#include <stdio.h>
#include <stdlib.h>

#define N 10

struct student {
char na[50];
char ID[11];
int English, Math, C_pro;
int sum;
}s[N], *p=s;

void input(struct student *p, int n)
{
printf("请输入%d个学生信息:\n", n);

for (int i = 0; i < n; i++) {
scanf("%s%s%d%d%d", &p[i].na, &p[i].ID, &p[i].English, &p[i].Math, &p[i].C_pro);
p[i].sum = p[i].English + p[i].Math + p[i].C_pro;
}
}

void sort(struct student *p, int n)
{
int i, j;
struct student tmp;

for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (p[j].sum < p[j + 1].sum) {
memcpy(&tmp, &p[j], sizeof(struct student));
memcpy(&p[j], &p[j + 1], sizeof(struct student));
memcpy(&p[j + 1], &tmp, sizeof(struct student));
}
}
}
}

void disp(struct student *p, int n)
{
for (int i = 0; i < n; i++) {
printf("%s\t%s\t%d\t%d\t%d\t%d\n", p[i].na, p[i].ID, p[i].English, p[i].Math, p[i].C_pro, p[i].sum);
}
}

int main()
{
input(p, N);

sort(p, N);

disp(p, N);
system("pause");
return 0;
}

运行结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-14

下图是输入3个学生数据的情形:

#include<stdio.h>
#define N 10
struct student
{
char na[50];
char ID[11];
int English,Math,C_pro;
int sum;
}s[N],*p=s;
main()
{void input (struct student *p,int n);
 void sort (struct student *p,int n);
 void disp(struct student *p,int n);
 input(s,N);
 sort(s,N);
 disp(s,N);
}
void input (struct student *p,int n)
{int i;
 for(i=0;i<n;i++,p++)
   {scanf("%s %s%d%d%d",p->na,p->ID,&p->English,&p->Math,&p->C_pro);
    p->sum=p->English+p->Math+p->C_pro;  
   }
}
void sort (struct student *p,int n)
{int i,j;
 struct student t;
 for(i=0;i<n-1;i++)
   for(j=0;j<n-1-i;j++)
     if((p[j].sum)<(p[j+1].sum))
     {t=p[j];p[j]=p[j+1];p[j+1]=t;}
}
void disp(struct student *p,int n)
{int i;
 for(i=0;i<n;i++,p++)
   printf("%20s%10s%4d%4d%4d%6d\n",p->na,p->ID,p->English,p->Math,p->C_pro,p->sum);
}

相似回答