结构体数组
在我们实际应用中经常遇到需要使用结构体数组来表示多个具有相同数据结构的一个群体。
所谓结构体数组,就是数组元素类型为结构体类型的数组。因此,结构体数组的每个 元素都是具有相同结构体类型的下标结构体变量。 结构体数组的使用与结构体变量类似,需要先构造类型,再定义变量,定义结构体数组时只需说明它为数组类型
即可。
结构体数组的定义
结构体类型标识符 数组名[长度];结构体数组的定义与普通结构体变量的定义相同,也是分为三种形式具体请阅读上篇。
结构体数组的引用
数组名[下标].成员名; stu[0].num;stu[1].age;
例如上述结构体数组的引用:stu[0].num表示第0行数组的成员num的值,stu[1].age表示第1行数组的成员age的值。
结构体数组的初始化
结构体数组定义好之后就可以对结构体数组进行赋值操作了,其中包括在定义结构体数组时赋值和在定义结构体数组之后的赋值。
在定义结构体数组时赋值
struct stu { int num; char name[20]; char sex; float score; }student[2]={{1001,"Zhang",'M',73.5}, {1002,"Li",'F' ,67.5}, {1003,"Hu",'M',78.5}};
当对全部元素进行初始化时,
数组长度可以省略。数组元素相互之间用“{}”括起来,“{}”和“{}”之间用“,”逗号分隔
编译时,系统会根据给出初值的结构体常量的个数来确定数组元素的个数。一个结构体常量包括结构体中全部成员的值。
在定义结构体数组之后赋值
在定义结构体数组之后对其进行赋初值操作,与一维数组的操作相类似,可以使用for循环语句,通过格式输入语句进行赋值。
使用案例
#include<stdio.h> struct stu { int num; int chinese; int english; int maths; } int main() { struct stu student[5]; int i; for(i=0;i<5;i++) { printf("输入第%d个学生的学号、语文、英语、数学成绩: \n";i); scanf("%d%d%d%d", &student[i].num, &student[i].chinese, &student[i].english, &student[i].maths ); } printf("学生基本信息为: \n"); for(i=0; i<5; i++) printf( "%d\t%d\t%d\t%d\n", student[i].num, student[j].chinese,student[i].english, student[i].maths); return 0; }
今日题目
使⽤结构体 读⼊ n(>0)名学⽣的姓名、学号、成绩,分别输出成绩最⾼和成绩最低学⽣的姓名
和学号
输⼊: 3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
注释:总共输⼊了3名学⽣
输出: Mike CS991301
Joe Math990112
最后的话 :如果大家觉得这篇文章对你们有帮助的话希望你们能够点点关注,你们的关注是我继续写下去的动力,谢谢大家。
答案与解析
思路:先求和,然后一直取余就行了。最后倒着输出
#include<stdio.h> int main() { int number_a=0,number_b=0,number_c=0,sum=0,count=0; int p[100]={0}; scanf("%d %d %d",&number_a,&number_b,&number_c); sum=number_a+number_b;//求和 while(sum){ p[count++]=sum%number_c;//取余 sum=sum/number_c; } for(int i=count-1;i>=0;i--){//倒着输出 printf("%d",p[i]); } if(count==0) printf("0");//如果sum为0输出0 return 0; }