#实现输出结构体类型数组的输出
定义一个函数,实现结构体一维数组中各元素成员变量name和总分的输出,name与部分之间用空格分开。具体参考初始代码,结构体类型定义如下;
struct student
{
char name[10];
int math;
int computer;
};
#include <stdio.h>
struct student
{
char name[10];
int math;
int computer;
};
void print(struct student b[2]) //括号中加形参
{
//补充代码/
int i,total;
for(i=0;i<2;i++)
{
total=b[i].math+b[i].computer;
printf("%s %d\n",b[i].name,total);
}
/
}
int main(void)
{
struct student a[2]={{"zhang",100,70},{"wang",70,80 }};
print(a);
return 0;
}
#找出总分在240以下的学生
如下所示为学生的姓名和各门课成绩的结构体类型,以及在main函数中进行了初始化的语句。编一个程序,输出两门课总分在240分以下的学生姓名【按照初始化数组当中的顺序换行输出】,然后把整个数组按各人总分从小到大输出姓名,每行一个姓名。
struct student
{
char name[20];
float Math;
float English;
};
初始化语句:
struct student a[4]={
{"Wang dong",98.0,87.0,77.0},
{"Qian min",90.5,91.0,88.0},
{"Sun qi",74.0,77.5,66.5},
{"Li xin",84.5,64.5,55.0}
};
#include <stdio.h>
struct student
{
char name[20];
float Math;
float English;
float C_Programing;
};
int main(void)
{
struct student a[4]={
{"Wang dong",98.0,87.0,77.0},
{"Qian min",90.5,91.0,88.0},
{"Sun qi",74.0,77.5,66.5},
{"Li xin",84.5,64.5,55.0}
};
int i;
for (i = 0; i < 4; ++i)
{
float total = a[i].Math + a[i].English + a[i].C_Programing;
if (total < 240.0)
{
printf("%s\n", a[i].name);
}
}
int j;
for (i = 0; i < 3; ++i)
{
for (j = i + 1; j <4; ++j)
{
float total_i = a[i].Math + a[i].English + a[i].C_Programing;
float total_j = a[j].Math + a[j].English + a[j].C_Programing;
if (total_i > total_j)
{
struct student temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
for (i = 0; i < 4; ++i)
{
printf("%s\n", a[i].name);
}
return 0;
}