| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 622 人关注过本帖
标题:[求助]为什么我的运行后出现未定义 student
只看楼主 加入收藏
twfxtc
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-7-4
收藏
 问题点数:0 回复次数:4 
[求助]为什么我的运行后出现未定义 student

#include "stdio.h"
#define N 5
void print(struct student stu[3]);
struct student
{
int num;
float math,chinese,
english,total,A;
}stu[N];
void main()
{

int i;
for(i=0;i<=3;i++)
{
printf("input num of stu %d:\n",i+1);
printf("NO.:");
scanf("%d",stu[i].num);
printf("math:");
scanf("%2f",stu[i].math);
printf("chinese:");
scanf("%2f",stu[i].chinese);
printf("english:");
scanf("%2f",stu[i].english);
stu[i].total=stu[i].math+stu[i].chinese+stu[i].english;
stu[i].A=stu[i].total/3.0;

printf("\n");
}print(stu);
}
void print(struct student stu[3])
{
int i;
printf("\n NO. math,chinese english total A\n");
for(i=0;i<3;i++)
{
printf("%d%2f%2f%2f%2f%2f",stu[i].num,stu[i].math,stu[i].chinese,
stu[i].english,stu[i].total,stu[i].A);
}printf("\n");
}

我用WIN-TC1.91运行之后怎么都出现未定义 student 啊
请知道的告诉我一下 要怎么改 谢谢!

搜索更多相关主题的帖子: student 定义 运行 void 
2007-07-04 20:37
twfxtc
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-7-4
收藏
得分:0 
用TC2.0/3.0运行都一样 都是出现那个错误
2007-07-04 20:44
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
程序从上至下编译 不是立体编译 明白了?
2007-07-04 20:45
Javal
Rank: 1
等 级:新手上路
威 望:1
帖 子:108
专家分:0
注 册:2006-5-7
收藏
得分:0 
在c-free3.5上可以编译通过,但是运行出问题

scanf("%d",stu[i].num);



猝然临之而不惊,无故加之而不怒 /?spaced" target="_blank">Linux C资料
2007-07-04 20:52
windflush
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:886
专家分:0
注 册:2007-7-1
收藏
得分:0 
楼主,你的这个程序如果使用GCC编译是通不过的。

错误很多。
1.scanf("%d",stu[i].num);给int型数复制,请在前面加取地址符&。
2.void print(struct student stu[3]);
请注意:数组在作为参数传递时,退化成了指针,所以,你这么写相当于:
void print(struct student *stu);
传递数组的时候可以参考这个例子:
void foo(void *array, int length);/*length :数组长度*/

还有一点:
我印象中采用这种结构体定义方式的话:
struct 结构体名
{

}参数列表;

好像这样的话,在其他地方定义或声明该结构体就会有错误或者警告:
例如这个程序在GCC下的警告:
warning: ‘struct student’ declared inside parameter list
warning: its scope is only this definition or declaration, which is probably not what you want

你可以将它改为这种定义方式比较妥当,当然,纯属个人建议:
struct 结构体名
{

};
struct 参数列表名;


最后一点,根据C的标准,不管是C89还是C99,main函数只有两种声明方式:
int main(void)
int main(int argc,char **argv)

论坛里也曾经专门有贴子讨论过这个问题,链接为:




2007-07-04 21:09
快速回复:[求助]为什么我的运行后出现未定义 student
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014464 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved