
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);
}
大家帮我看看``我这个样子输入有什么不对```我认为没有什么问题,但是...
程序有什么问题吗?
我找不出错误来
但是出来的结构每次都和我预想的不一样
请各个达人们帮帮忙 展开
(要求求平均年龄的功能用函数实现) */
#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);
}
大家帮我看看``我这个样子输入有什么不对```我认为没有什么问题,但是...
程序有什么问题吗?
我找不出错误来
但是出来的结构每次都和我预想的不一样
请各个达人们帮帮忙 展开
3个回答
展开全部
输入姓名时用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
而且建议
scanf("%d%c%d",&((p+i)->age),&((p+i)->sex),&((p+i)->weight));
这句,把%d%c%d之间加上分隔符,比如%d,%c,%d,或者%d %c %d
展开全部
因为没有分,所以大家都不愿意给你改,现在都是有偿劳动小朋友。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用了全局变量........
#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);
}
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询