一道c语言题,可以编译,但是不能正常运行

xiaopang08 2010-04-29 04:46:36
//利用结构体变量输入学生信息并显示
/*大家帮忙看一下啊,出错是在输出student name之后*/

#include <stdio.h>

void output(struct student stu);

struct student
{
long number;
char name[20];
char sex;
float score[3];
};

struct student stu[2];

void main()
{
int i,j;
for(i=0;i<2;i++)
{
printf("请输入第%d个学生的信息\n", i+1);
printf("student number: ");
scanf("%l", &stu[i].number);
printf("student name: ");
//gets(stu[i].name);
scanf("%s", stu[i].name);
printf("student sex(Man or Female): ");
scanf("%c", &stu[i].sex);
printf("student score: ");
for(j=0;j<3;j++)
scanf("%f", &stu[i].score[j]);
}
printf("* * * * * * * * * *输出学生信息* * * * * * * * * *\n");
printf("number name sex score\n");
output(stu[1]);
output(stu[2]);
}

void output(struct student stu)
{
int i;
printf("%-11l", stu.number);
printf("%-9s", stu.name);
printf("%-8c", stu.sex);
for(i=0; i<3; i++)
{
printf("%f ", stu.score[i]);
}
printf("\n");
}
...全文
210 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
将输入改为gets(stu[i].name);
使用scanf容易出问题
shashenyidaoOCEAN 2010-04-29
  • 打赏
  • 举报
回复
都回答了就只有看看了
the_venus 2010-04-29
  • 打赏
  • 举报
回复
void output(struct student stu);
将之改为void output(struct student *stu);
使用指针传递参数,否则的话, printf("%-9s", stu.name);
这句话执行时出错,建议你看看值传递和指针传递的区别了...
aleyn 2010-04-29
  • 打赏
  • 举报
回复
楼上的基本都回答了,再回答也没有意思
ypb362148418 2010-04-29
  • 打赏
  • 举报
回复
内存泄露,调试一下,看那块异常了,然后查找问题
z569362161 2010-04-29
  • 打赏
  • 举报
回复
#include <stdio.h>
struct student
{
long number;
char name[20];
char sex;
float score[3];
};
struct student stu[2];
void output(struct student stu)
{
int i;
printf("%-11l", stu.number);
printf("%-9s", stu.name);
printf("%-8c", stu.sex);
for(i=0; i<3; i++)
printf("%f ", stu.score[i]);
printf("\n");
}
int main()
{
int i,j;
for(i=0;i<2;i++)
{
printf("请输入第%d个学生的信息\n", i+1);
printf("student number: ");
scanf("%l", &stu[i].number);
printf("student name: ");
scanf("%s", stu[i].name);
printf("student sex(Man or Female): ");
scanf("%c", &stu[i].sex);
printf("student score: ");
for(j=0;j<3;j++)
scanf("%f", &stu[i].score[j]);
}
printf("* * * * * * * * * *输出学生信息* * * * * * * * * *\n");
printf("number name sex score\n");
output(stu[0]);
output(stu[1]);
}
huanmie_09 2010-04-29
  • 打赏
  • 举报
回复
数组元素取越界了,
struct student stu[2];
最大的小标应该为2-1=1.
主函数有取stu[2]。
huanmie_09 2010-04-29
  • 打赏
  • 举报
回复

#include <stdio.h>

void output(struct student stu);

struct student
{
long number;
char name[20];
char sex;
float score[3];
};

struct student stu[2];

void main()
{
int i,j;
for(i=0;i<2;i++)
{
printf("请输入第%d个学生的信息\n", i+1);
printf("student number: ");
scanf("%ld", &stu[i].number);
printf("student name: ");
//gets(stu[i].name);
scanf("%s", stu[i].name);
printf("student sex(Man or Female): ");
rewind(stdin); //调整输入缓冲区.
scanf("%c", &stu[i].sex);
printf("student score: ");
for(j=0;j<3;j++)
scanf("%f", &stu[i].score[j]);
}
printf("* * * * * * * * * *输出学生信息* * * * * * * * * *\n");
printf("number name sex score\n");
output(stu[0]);
output(stu[1]);
//output(stu[2]); //越界了
}

void output(struct student stu)
{
int i;
printf("%-11l", stu.number);
printf("%-9s", stu.name);
printf("%-8c", stu.sex);
for(i=0; i<3; i++)
{
printf("%f ", stu.score[i]);
}
printf("\n");
}

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧