
关于一个C程序的问题,敬请高手不吝赐教,高分,急
摘自C语言程序设计(曾怡)第二十八讲例11.3#include<stdio.h>voidmain(){structstudent{longintnum;charname[...
摘自C语言程序设计(曾怡)第二十八讲
例11.3
#include <stdio.h>
void main()
{ struct student
{ long int num;
char name[20];
char sex;
float score;
};
struct student stu_1;
struct student *p;
p=&stu_1;
stu_1.num=89101l;
strcpy(stu-1.name,"lilin");
(*P).sex='M';
p->score=89.5;
printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p_>name,(*p).score);
}
小可想:
1.在运行时输入学号姓名性别成绩而不是在源程序中预先设置好;
2.要可以用结构体变量时,采用结构体变量.成员名,(*p).成员名,p->成员名三形式相结合
其在此,特修改如下:
#include <stdio.h>
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("%d",&stu_1.name);
printf("请输入性别");
scanf("%c",(*p).sex); /*后又试:scanf("%c",&(*P).sex);又将%c改为%s,均不成功*/
printf("请输入成绩");
scanf("%c",p->sex); /*后又试:scanf("%c",&p->sex);均不成功*/
printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p_>name,(*p).score);
}
问怎样修改啊?!!错因在哪啊
改正各位所指错误后,运行时:
请输入学号;98706(或别的) 回车
请输入姓名:张帆(或别的)回车 (则出现以下情况:)
请输入姓别:请输入成绩:scanf:floating point formats not linked
Abnormal program termination. 展开
例11.3
#include <stdio.h>
void main()
{ struct student
{ long int num;
char name[20];
char sex;
float score;
};
struct student stu_1;
struct student *p;
p=&stu_1;
stu_1.num=89101l;
strcpy(stu-1.name,"lilin");
(*P).sex='M';
p->score=89.5;
printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p_>name,(*p).score);
}
小可想:
1.在运行时输入学号姓名性别成绩而不是在源程序中预先设置好;
2.要可以用结构体变量时,采用结构体变量.成员名,(*p).成员名,p->成员名三形式相结合
其在此,特修改如下:
#include <stdio.h>
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("%d",&stu_1.name);
printf("请输入性别");
scanf("%c",(*p).sex); /*后又试:scanf("%c",&(*P).sex);又将%c改为%s,均不成功*/
printf("请输入成绩");
scanf("%c",p->sex); /*后又试:scanf("%c",&p->sex);均不成功*/
printf("学号:%ld\n姓名:%s\n成绩:%.1f\n",stu_1.num,p_>name,(*p).score);
}
问怎样修改啊?!!错因在哪啊
改正各位所指错误后,运行时:
请输入学号;98706(或别的) 回车
请输入姓名:张帆(或别的)回车 (则出现以下情况:)
请输入姓别:请输入成绩:scanf:floating point formats not linked
Abnormal program termination. 展开
6个回答
展开全部
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);
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 <stdio.h>
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->成员名
继续加油!!~
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 <stdio.h>
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;
}
#include <stdio.h>
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是地址,所以不用&了。
scanf("%d",&stu_1.name);
这里应该是:
printf("请输入姓名");
scanf("%d",stu_1.name); //因为name是地址,所以不用&了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
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);
}
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);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询