C语言结构体阵列的定义

 我来答
天罗网17
2022-09-26 · TA获得超过6134个赞
知道小有建树答主
回答量:306
采纳率:100%
帮助的人:70.7万
展开全部
C语言结构体阵列的定义 1、C语言结构体阵列的定义:阵列是有序的并且具有相同型别的资料的集合。

2、结构阵列就是具有相同结构型别的变数集合。假如要用C语言,定义一个班级40个同学的姓名、性别、年龄和住址, 可以做成一个结构阵列。

结构阵列成员的访问是以阵列元素为结构变数的,它的形式为:

1、结构阵列元素—成员名。

2、例如:student[0].name,student[30].age

3、实际上结构阵列相当于一个二维构造, 第一维是结构阵列元素, 每个元素是一个结构变数, 第二维是结构成员。

注意:结构阵列的成员也可以是阵列变数。
C语言结构体阵列的定义是什么?
结构阵列就是具有相同结构型别的变数集合。

假如要定义一个班级40个同学的姓名、性别、年龄和住址, 可以定义成一个结构阵列。如下所示:

struct{
char name[8];
char sex[2];
int age;
char addr[40];
}student[40];

也可定义为:

struct string{
char name[8];
char sex[2];
int age;
char addr[40];
};
struct string student[40]。

C语言是一门通用计算机程式语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低阶储存器、产生少量的机器码以及不需要任何执行环境支援便能执行的程式语言。

尽管C语言提供了许多低阶处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程式可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(微控制器或称MCU)以及超级电脑等作业平台。
C语言结构体阵列
结构阵列就是具有相同结构型别的变数集合。
假如要定义一个班级40个同学的姓名、性别、年龄和住址, 可以定义成一个结构阵列。如下所示:
struct{ char name[8]; char sex[2]; int age; char addr[40]; }student[40];
也可定义为:
struct string{ char name[8]; char sex[2]; int age; char addr[40]; }; struct string student[40];

scanf_s("%s %d %d %d", s[p].name,10,s[p].score[0],1, s[p].score[1],1, s[p].score[2]),1;
前面的name不用加& 因为是阵列名 但是后面的score都需要加&的啊、
c语言结构体阵列
引数2 和你 宣告的不同
C语言结构体阵列的使用
(1)初始化语句中的每个初始化值用单引号引起来,即改为iA[N]={{‘1’,‘2’},{‘1’,‘1’},{‘1’,‘3’}},B[N]={{‘1’,‘1’},{‘1’,‘3’},{‘1’,‘5‘}};
(2)输出语句printf("%s.%s ",(A[m].a),(A[m].b));中的%s改成%c
急!c语言结构体阵列的问题
#include<stdio.h>
#include<conio.h>
struct student
{
int num;
char name[20];
double class1;
double class2;
double class3;
};
struct student stu[20];
void input()
{
int i;
for(i=0;i<5;i++)
{
scanf("%d%s%lf%lf%lf",&stu[i].num,stu[i].name,&stu[i].class1,&stu[i].class2,&stu[i].class3);
}
}
void average()
{
int i;
for(i=0;i<5;i++)
{
printf("Student %s's average is %lf\n",stu[i].name,(stu[i].class1+stu[i].class2+stu[i].class3)/3);
}
}
void class_average()
{
int i,j;
double sum = 0;
for(i=0;i<5;i++)
{
sum+=stu[i].class1;
}
printf("class 1's average is %lf\n",sum/5);
sum = 0;
for(i=0;i<5;i++)
{
sum+=stu[i].class2;
}
printf("class 2's average is %lf\n",sum/5);
sum = 0;
for(i=0;i<5;i++)
{
sum+=stu[i].class3;
}
printf("class 3's average is %lf\n",sum/5);
}
void class()
{
int i,j,k;
double maxscore;
k = 0;
maxscore = -1;
for(i=0;i<5;i++)
{
if((stu[i].class1+stu[i].class2+stu[i].class3)/3>maxscore)
{
maxscore = (stu[i].class1+stu[i].class2+stu[i].class3)/3;
k = i;
}
}
printf("The highest average score is:%s\n",stu[k].name);
}
void class_max()
{
int i,j,turn1,turn2,turn3;
double max1=-1,max2=-1,max3=-1;
for(i=0;i<5;i++)
{
if(stu[i].class1>max1)
{
max1 = stu[i].class1;
turn1 = i;
}
}
for(i=0;i<5;i++)
{
if(stu[i].class2>max2)
{
max2 = stu[i].class2;
turn2 = i;
}
}
for(i=0;i<5;i++)
{
if(stu[i].class3>max3)
{
max3 = stu[i].class3;
turn3 = i;
}
}
printf("The high‘s score of class1 is %s %lf\n",stu[turn1].name,max1);
printf("The high‘s score of class2 is %s %lf\n",stu[turn2].name,max2);
printf("The high‘s score of class3 is %s %lf\n",stu[turn3].name,max3);
}
int main()
{
input();
class_average();
return 0;
}
你看看吧!我测试过了 能用,具体的输出格式 你来决定,输入资料要这样输入
001 liming 87.00 94.00 79.00
002 chenfei 68.00 89.00 82.00
003 sunjie 78.00 90.00 74.00
004 hewei 69.00 70.00 62.00
005 liuli 84.00 92.00 81.00
C语言结构体阵列的初始化
同学,你注意到了Create()函式里面,你又定义了一句:
List pr;
了么?这句话时关键,首先,你在main 函式(我猜应该是main吧)中写道:
List pr1=Creat("p1",2,1); Insert(&pr1);
看,你这个pr1是个区域性变数吧?只在main()中有效的。而你上面那个Create中定义的呢?也是个区域性变数,只在Create()中有效。所以,即使你在Create()中费劲全力为pr赋值。等呼叫完Create()后,pr还是会消亡的,回到main,时,这里的pr1就是另一个List变量了。

总而言之,Creat()里面的pr和main()里面的pr1是完全不同的两个变数。要想让他们变成一个变数。可选用指标传参。或者定义成全域性变数。

另外,我一看到你的描述的那个“烫”字,就知道你用的是VC6.0吧?呵呵
c语言结构体阵列问题
理解有误
你的阵列vCPUWRITE_Rx1它的型别是char []也就是说 它是一个8个字元的char型阵列 而不是结构体阵列
结构体型别为struct tag_ID501
这里用了一个很常用的方式 即通过巨集定义dCPUWRITE_Rx1 把char阵列vCPUWRITE_Rx1对映成了struct tag_ID501 (二者都是占8个位元组的空间 所以可以这样做 不然会出错)
所以呼叫的时候可以
dCPUWRITE_Rx1.CPUWRITE_DAT1 = ...
dCPUWRITE_Rx1.CPUWRITE_DAT4...
其他的元素类似
C语言结构体阵列问题
遍历结构体阵列与遍历普通阵列的方法是完全一样的。下面提供一个例子作参考。#include "stdafx.h"If the vc++6.0, with this line.#include "stdio.h"struct stu{ int num; char *name,sex; float score;}boy[2]={ {1,"ck",'M',100}, {2,"aa",'W',99}};int main(void){ struct stu *p; for(p=boy;pnum,p->name,p->sex,p->score); return 0;}输出如图片:当boy的元素n太大(如几千或几万以上)时,主函式中可增设一个structstu*pend指标,事先计算出pend=boy+n;,for回圈控制语句写p
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
VSH艾羽
2024-10-27 广告
ANSYS是一款功能强大的有限元分析软件,广泛应用于航空航天、汽车、电子、能源等多个领域。它能够进行结构、流体、热、电磁等多物理场的仿真分析,支持复杂的几何建模、高效的网格划分和多种求解器,帮助工程师优化产品设计,减少开发成本,提高生产效率... 点击进入详情页
本回答由VSH艾羽提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式