中易网

C++结构体的程序题

答案:2  悬赏:10  
解决时间 2021-03-03 06:05
从键盘上输入某个班n个同学的记录(包括学号、姓名、性别和英语成绩,并且输出)
麻烦帮我看一下
#include
#include
using namespace std;
struct student
{
char id[10];
char name[10];
char sex[6];
float score;
};
void output(student *p,int n);
void main()
{
student x[3];
int i;
for(i=0;i<3;i++)
{
cout<<"输入第"< cin>>x[i].id;
cin>>x[i].name;
cin>>x[i].sex;
cin>>x[i].score;
}
output(x,3);
}
void output(student *p,int n)
{
int i;
for(i=0;i {
cout<<"第"< cout<<"姓名"<<(*(p+i)).name< cout<<"学号"<<(*(p+i)).id< cout<<"性别"<<(*(p+i)).sex< cout<<"分数"<<(*(p+i)).score< }
}
为什么在函数output声明时不能声明为void output(student,int)
最佳答案
因为是一个数组。
严格地说也可以,不过需要一些特殊的编程技巧。
AKA,把(*(p+i)).name这些换成:
(*(&p+i)).name这样。
全部回答

楼上那位大哥改对了,我说明一吧,错误是在:stu[5].name="asa";

因为在结构体中 name 定义是有10个整形数据的数组。但是在初始化的时候只输入了4个,不匹配,所以,出错,可以考虑动态开辟空间,不过在这里太麻烦了,可以把 name [] 改成指针类型,*name 那么就可以存放没有具体要求的字节数字符,当然,就可以运行了...

#include <iostream.h> struct student { char *name; char sex[5];

}stu[50]; void main() { stu[5].name="asa"; cout<<(*(stu+5)).name<<endl;

}

修改后可以运行,如下:

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
什么是一次回风系统?
亦仙足道养生馆在哪里啊,我有事要去这个地方
深圳酒店传菜员工资多少
达县福善镇计划生育服务站地址在什么地方,想
天津东站到奥森物流最晚的公交车是几点
怎样更好地执行物业绿化、保洁管理制度
遇到一个小学时暗恋的男生,一听到他的名字心
小番茄就是圣女果吗?为什么叫圣女果?
用KC手机网络电话打给对方会显示自己的手机号
刚拔智齿能喝鲫鱼汤吗
保定市出租车从业资格证怎么办理
请问这种刀叫什么?
网页在dw预览时出现错误
妃子美容汗蒸馆地址在什么地方,想过去办事
前几天我在农村商业银行活期转定期存款,一个
推荐资讯
阳晨宾馆怎么去啊,有知道地址的么
甘露醇打的快好还是慢好呢?
天龙八部珍兽高级净化技能书值多少钱
福清市玉屏街道社区卫生服务中心这个地址在什
在四川广安,办临时身份证需要本人回去吗?
推荐几本好看的末日灭世类小说
点击了li元素后怎么获取它的id值
如何让实体店铺增加人气?
康乐干洗店(康乐街)地址有知道的么?有点事想
x-80%x+40=30%
Word2003里的插入的图片的“设置图片格式-版
我每个月交社保200元能领多少退休
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?