C语言结构体数组初始化```从键盘输入

/*定义一个4个元素的STUDENT结构体数组保存四个学生的信息,求这四个学生的平均年龄。(要求求平均年龄的功能用函数实现)*/#include<stdio.h>stru... /*定义一个4个元素的STUDENT结构体数组保存四个学生的信息,求这四个学生的平均年龄。
(要求求平均年龄的功能用函数实现) */
#include<stdio.h>
struct STUDENT{
char name[20];
int age;
char sex;
int weight;
};
int aver(struct STUDENT *q,int n);
main()
{
struct STUDENT a[4];
struct STUDENT *p;
int ave,i;
p=a;
printf("请输入四个学生的数据:\n");
for(i=0; i<4; i++)
{
p=a;
printf("请输入第%d个学生的姓名:\n",i+1);
gets((p+i)->name);
printf("请输入第%d个学生的年龄,性别和体重:\n",i+1);
scanf("%d%c%d",&((p+i)->age),&((p+i)->sex),&((p+i)->weight));

}
ave=aver(p,4);
printf("四个学生的平均年龄是:%d",ave);
}
int aver(struct STUDENT *q,int n)
{
int ping,i,sum;
sum=0;
for(i=0; i<n; i++,q++)
{
sum+=q->age;
}
ping=sum/n;
return(ping);
}

大家帮我看看``我这个样子输入有什么不对```我认为没有什么问题,但是...

程序有什么问题吗?
我找不出错误来
但是出来的结构每次都和我预想的不一样
请各个达人们帮帮忙
展开
 我来答
忘至白葬不情必0T
2007-04-29 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
输入姓名时用scanf,不要用gets.gets会把上一个scanf("%d%c%d",&((p+i)->age),&((p+i)->sex),&((p+i)->weight)); 输入数据时,最后那个回车接收到,结果就等于你直接输入了一个回车,还没输入姓名.
而且建议
scanf("%d%c%d",&((p+i)->age),&((p+i)->sex),&((p+i)->weight));
这句,把%d%c%d之间加上分隔符,比如%d,%c,%d,或者%d %c %d
图灵使者波比
2007-04-29 · TA获得超过288个赞
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:133万
展开全部
因为没有分,所以大家都不愿意给你改,现在都是有偿劳动小朋友。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d1664e4
2007-04-29
知道答主
回答量:28
采纳率:0%
帮助的人:20.9万
展开全部
用了全局变量........

#include<stdio.h>

struct STUDENT{
char name[20];
int age;
char sex;
int weight;
};
int aver(struct STUDENT *q,int n);
struct STUDENT a[4];

int aver(int n)
{
int ping,i,sum;
sum=0;
for(i=0; i<n; i++)
{
sum+=a[i].age;
}
ping=sum/n;
return(ping);
}

void main()
{

//struct STUDENT *p;
int ave,i;
printf("请输入四个学生的数据:\n");
for(i=0; i<4; i++)
{
printf("请输入第%d个学生的姓名:\n",i+1);
gets(a[i].name);
printf("请输入第%d个学生的年龄,性别和体重:\n",i+1);
scanf("%d%c%d",&(a[i].age),&(a[i].sex),&(a[i].weight));

}
ave=aver(4);
printf("四个学生的平均年龄是:%d",ave);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式