1.
printf("请输入姓名");
scanf("%d",&stu_1.name); //这是字符串类型,数组名就是首地址。用%S并不需要&。
改成。scanf("%s",stu_1.name)。
2.
printf("请输入性别");
scanf("%c",(*p).sex); /*后又试:scanf("%c",&(*P).sex);又将%c改为%s,均不成功*/ p->sex 是字符型,取址就是&(p->sex)
scanf("%C",&(p->sex));
3.printf("请输入成绩");
scanf("%c",p->sex); /*后又试:scanf("%c",&p->sex);均不成功*/
scanf("%f",p->score);
4.printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p_>name,(*p).score); 指针指向符号不是下划线,是减号。
改成printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p->name,p->score);
#include
void main()
{
struct student
{
long int num;
char name[20];
char sex;
float score;
};
struct student stu_1;
struct student *p;
p=&stu_1;
printf("请输入学号");
scanf("%d",&stu_1.num);
getchar();
printf("请输入姓名");
scanf("%s",&stu_1.name);
getchar();
printf("请输入性别");
scanf("%c",&(p->sex)); //or scanf("%c",&((*p).sex));
getchar();
printf("请输入成绩");
scanf("%f",&(p->score)); //or scanf("%f",&((*p).score));
getchar();
printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",
stu_1.num, p->name, p->score); //or stu_1.num, (*p).name,(*p).score);
}
好多问题啊
第一个是分号
是全角的....
然后是scanf的修饰符
字符串用%d...
还有中间用getchar();读掉回车符
不然会直接跳过不让你输入
结构体指针访问成员我喜欢
p->成员名
继续加油!!~
//可以了...给点分.刚才又修改了一下
#include
void main()
{
struct student
{ long int num;
char name[20];
char sex;
float score;
};
struct student stu_1;
struct student *p;
p=&stu_1;
printf("请输入学号");
scanf("%d",&stu_1.num);
printf("请输入姓名");
scanf("%s",&stu_1.name);
printf("请输入性别");
scanf("%s",&(p->sex));
printf("请输入成绩");
scanf("%f",&(p->score));
printf("学号:%ld\n姓名:%s\n性别:%c\n成绩:%.1f\n",stu_1.num,p->name,p->sex,(*p).score);
return;
}
printf("请输入姓名");
scanf("%d",&stu_1.name);
这里应该是:
printf("请输入姓名");
scanf("%d",stu_1.name); //因为name是地址,所以不用&了。
#include
void main()
{ struct student
{ long int num;
char name[20];
char sex;
float score;
};
struct student stu_1;
struct student *p;
p=&stu_1;
printf("请输入学号");
scanf("%ld",&p->num);
printf("请输入姓名");
scanf("%s",&p->name);
printf("请输入性别");
getchar();
scanf("%c",&p->sex); /*存如字符就行了,刚才错误是把内存中存的回车取走了!*/
printf("请输入成绩");
scanf("%f",&p->score); /*错误原因是score是浮点型的啊*/
printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p->name,(*p).score);
}