C语言结构体数组 的输入方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言结构体数组 的输入方式相关的知识,希望对你有一定的参考价值。
如题 我写了一个 小程序,不知道为什么 明明我定义了要输入2个啊 但是为啥 要输入3个才能完成呢 不能理解啊 难道 这个和普通的数组输入方式不同吗?哪位前辈能够帮我 看看 到底出错在哪里了?
#include<stdio.h>
#define size 2 //定义结构体的长度
int main()
int i;
struct Date //定义日期结构体
int year; //年
int month; //月
int day; //日
;
struct Student
int key; //学号
char name[10]; //姓名
struct Date birthday; //生日 属于日期结构体
;
struct Student student[size]; //要求输入的十个学生
printf("学号\t姓名\t生日\n");
for(i=0;i<size;i++)
scanf("%d%s%d%d%d
",&student[i].key,student[i].name,&student[i].birthday.year,&student[i].birthday.month
,&student[i].birthday.day);
printf("输入完成\n");
getch();
return 0;
C
语言中,结构体(struct)是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。
结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
定义与声明
结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。
在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。
在C语言中,定义结构体数组和定义结构体变量的方式类似;
例:
struct stu
char*name;//姓名
int num;//学号
int age;//年龄
char group;//所在小组
float score;//成绩
class[5];
表示一个班级有5个学生。
扩展资料:
结构体数组的引用与引用一个结构体变量在原理上是一样的。只不过结构体数组中有多个结构体变量,我们只需利用for循环一个一个地使用结构体数组中的元素。
下面编写一个程序,编程要求:从键盘输入5个学生的基本信息,如姓名、年龄、性别、学号,然后将学号最大的学生的基本信息输出到屏幕。
#include<stdio.h>
#include<string.h>
struct STU
char name[20];
int age;
char sex;
char num[20];
;
void OutputSTU(struct STU stu[5]);
//函数声明,该函数的功能是输出学号最大的学生信息
int main(void)
int i;
struct STU stu[5];
for(i=0;i<5;++i)
printf("请输入第%d个学生的信息:",i+1);
scanf("%s%d%c%s",
stu<i>.name,
&stu<i>
.age,&stu<i>
.sex,stu<
i>.num);/*%c
前面要加空格,不然输入时会将空格赋给%c*/
OutputSTU(stu);
return 0;
void OutputSTU(struct STU stu[5])
struct STU stumax=stu[0];
int j;
for(j=1;j<5;++j)
if(strcmp(stumax.num,stu[j]
.num)<0)//strcmp函数的使用
stumax=stu[j];
printf("学生姓名:%s学生年龄:%d学生性别:%c学生学号:
%s\\n",stumax.name,
stumax.age,stumax.
sex,stumax.num);
输出结果是:
请输入第1个学生的信息:小红22 F Z1207031
请输入第2个学生的信息:小明21 M Z1207035
请输入第3个学生的信息:小七23 F Z1207022
请输入第4个学生的信息:小欣20 F Z1207015
请输入第5个学生的信息:小天19 M Z1207024
学生姓名:小明学生年龄:21学生性别:M学生学号:Z1207035
参考资料:
百度百科——结构体
输入方式:
scanf("%d%s%d%d%d",&student[i].key,student[i].name,&student[i].birthday.year,&student[i].birthday.month,&student[i].birthday.day);一次输入了5个数据for(i=0;i<size;i++)循环两次2*5=10。
C语言中,结构体(struct)是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。
结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
结构体作用
结构体和其他类型基础数据类型一样,例如int类型、char类型,只不过结构体可以做成你想要的数据类型。以方便日后的使用。在实际项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。由于C语言内部程序比较简单,研发人员通常使用结构体创造新的“属性”,其目的是简化运算。
结构体在函数中的作用不是简便,其最主要的作用就是封装。封装的好处就是可以再次利用。让使用者不必关心这个是什么,只要根据定义使用就可以了。
以上内容参考:百度百科-结构体
参考技术Bscanf("%d%s%d%d%d
",&student[i].key,student[i].name,&student[i].birthday.year,&student[i].birthday.month
,&student[i].birthday.day);
一次输入了5个数据
for(i=0;i<size;i++)
循环两次
2*5=10
所以你只要输入10个数据就可以,不管你怎么输入,具体情况请看图片:
谢谢 我找到了 问题 就是 我最后一个%d后面多了一个空格 但是 为什么 我多了这么一个空格就要 输入15个数据呢 好奇怪啊 您能够解释一下吗?
参考技术C1、如果从标准输入中输入,只有挨个输入每个结构体对象的成员。如果从文件输入,则可以用fread函数直接读入整个对象。
2、例程:
#include <stdio.h>struct student
int num;
char name;
int score[3];
;
void main()
void print(struct student);
struct student stu[5];
int i;
for(i=0;i<5;i++) //问题在%c前要一个空格,还有少了&
scanf("%d %c%d%d%d",&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
printf("输入完成\\n");
for(i=0;i<5;i++)
print(stu[i]);
void print(struct student stu)
printf("%d%c%d%d%d\\n",stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2]);
参考技术D 没找到,在我这是输入两次
#include<stdio.h>
#include<conio.h>
#define size 2 //定义结构体的长度
int main()
int i;
struct Date //定义日期结构;
int year; //年
int month; //月
int day; //日
;
struct Student
int key; //学号
char name[10]; //姓名
struct Date birthday; //生日 属于日期结构体
;
struct Student student[size]; //要求输入的十个学生
printf("学号\t姓名\t生日\n");
for(i=0;i<size;i++)
printf("输入学号,姓名,生日(年,月,日) :");
scanf("%d%s%d%d%d",&student[i].key,student[i].name,&student[i].b\
irthday.year,&student[i].birthday.month,&student[i].birthday.day);
printf("输入完成\n");
getch();
return 0;
C语言关于结构体变量为动态数组赋值问题
C语言关于结构体变量为动态数组赋值问题for(x=0;x<num;x++)
printf("学号:%d\n姓名:%s\n班级:%d\n",array[x].Num+M_1,array[x].Name,array[x].Banji);
不知道为什么每次输出的都是循环最后一次的结果,而不会把全部输入的数据进行输出,小白一个,求大神指教,谢谢
以上是关于C语言结构体数组 的输入方式的主要内容,如果未能解决你的问题,请参考以下文章