帮我看看这哪出错了!

windylcx 2008-06-28 12:50:43
#include "stdio.h"//程序是输入几个学生数据并输出!
#define N 2
#define M 3
struct student //定义一个学生类型的结构体变量
{
int ID;//学号
char name[10];
int score[3];//三科成绩
};
struct student stu[N];
void main()
{
int i,j;
void input();
input();// 定义为外部变量,这里调用input是否将数据写入了并可为下个函数调用,
printf("output the dates:\n");//整个程序编译不报错,但程序不运行,定住了
for(i=0;i<N;i++)//还有请问这用指针怎么写
{
printf("%d %s %d",stu[i].ID,stu[i].name,stu[i].score);
for(j=0;j<M;i++)
printf("%d %d %d",stu[i].ID,stu[i].name,stu[i].score[j]);
}
}
void input()
{
int i,j;
printf("input the dates:\n");
for(i=0;i<N;i++)
{
scanf("%d%s%d",&stu[i].ID,stu[i].name,&stu[i].score);//这里的名字是否需要加取地址符
for(j=0;j<M;i++)
scanf("%d%d%d",&stu[i].ID,stu[i].name,&stu[i].score[j]);
}
}
...全文
74 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
长安宁 2008-06-28
  • 打赏
  • 举报
回复
scanf("%d%s%d",&stu[i].ID,stu[i].name,&stu[i].score);//这里的名字是否需要加取地址符
for(j=0;j <M;i++)
scanf("%d%d%d",&stu[i].ID,stu[i].name,&stu[i].score[j]);
改成
scanf("%d %s %d %d %d %d",&stu[i].ID,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
baihacker 2008-06-28
  • 打赏
  • 举报
回复
void main() 
{
int i,j;
void input();
input();// 定义为外部变量,这里调用input是否将数据写入了并可为下个函数调用,
printf("output the dates:\n");//整个程序编译不报错,但程序不运行,定住了
for(i=0;i <N;i++)//还有请问这用指针怎么写
{
printf("%d %s ",stu[i].ID,stu[i].name);
for(j=0;j <M;j++)
printf("%d ", stu[i].score[j]);
}
}
void input()
{
int i,j;
printf("input the dates:\n");
for(i=0;i <N;i++)
{
scanf("%d%s",&stu[i].ID,stu[i].name);//这里的名字是否需要加取地址符
for(j=0;j <M;j++)
scanf("%d ", &stu[i].score[j]);
}
}
windylcx 2008-06-28
  • 打赏
  • 举报
回复
喔......晕。。我粗心了。。原来一楼飞雪的是改好了的。。原来就是scanf("%d%d%d",&stu[i].ID,stu[i].name,&stu[i].score[j]); 多了几个参数。。呵呵
谢谢各位!
windylcx 2008-06-28
  • 打赏
  • 举报
回复
噢。。不好意思。。我是复制过去的。。没发现。下面那两个ID跟name是没有的。。。
bysdy 2008-06-28
  • 打赏
  • 举报
回复
一楼飞雪大哥的代码写全了就是这样:

#include "stdio.h"//程序是输入几个学生数据并输出!
#define N 2
#define M 3
struct student //定义一个学生类型的结构体变量
{
int ID;//学号
char name[10];
int score[3];//三科成绩
};
struct student stu[N];
void main()
{
int i,j;
void input();
input();// 定义为外部变量,这里调用input是否将数据写入了并可为下个函数调用, 写入了,可以调用
printf("output the dates:\n");//整个程序编译不报错,但程序不运行,定住了 输入格式不正确
for(i=0;i <N;i++)//还有请问这用指针怎么写
{
printf("%d %s ",(stu+i)->ID,(stu+i)->name);// printf("%d %s ",stu[i].ID,stu[i].name);
for(j=0;j <M;j++)
printf("%d ",(stu+i)->score[j]); // printf("%d ", stu[i].score[j]);

}
}
void input()
{
int i,j;
printf("input the dates:\n");
for(i=0;i <N;i++)
{
scanf("%d%s",&stu[i].ID,stu[i].name);//这里的名字是否需要加取地址符 不需要
for(j=0;j <M-1;j++)
scanf("%d ", &stu[i].score[j]);
scanf("%d",&stu[i].score[j]);
}
}

输入
1 ass 2 3 4
2 ds 3 4 45
输出
1 ass 2 3 4 2 ds 3 4 45
primula 2008-06-28
  • 打赏
  • 举报
回复
void input()
{
int i,j;
printf("input the dates:\n");
for(i=0;i <N;i++)
{
scanf("%d%s%d",&stu[i].ID,stu[i].name,&stu[i].score);//这里的名字不需要加取地址符
for(j=0;j <M;i++) //这个for为死循环...
scanf("%d%d%d",&stu[i].ID,stu[i].name,&stu[i].score[j]); //上面已经输过一次stu[i].ID和stu[i].name了,这里又输一次,为何?
}
}

而且楼主的这个input函数我看了之后根本不知道你想在这个函数里做什么样的操作....
bysdy 2008-06-28
  • 打赏
  • 举报
回复
楼主你再仔细看下一楼的啊~~~已经改好了~~
windylcx 2008-06-28
  • 打赏
  • 举报
回复
如果是10科成绩呢。。这样恐不行吧。。还有一楼的什么意思。。我看不明啊
windylcx 2008-06-28
  • 打赏
  • 举报
回复
???

69,373

社区成员

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

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