| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1987 人关注过本帖
标题:C语言试题,不明白为什么总是说i没有定义,求大神指教
只看楼主 加入收藏
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
结帖率:100%
收藏
已结贴  问题点数:18 回复次数:9 
C语言试题,不明白为什么总是说i没有定义,求大神指教
题目:学生的记录是由学号和成绩组成的,N名同学的数据已在主函数中放入结构体数组s中,请编写函数fun,他的功能是:函数返回指定学好的学生数据,指定的学号在主函数输入。如果没有找到指定学号,在结构体变量中给学号置空串,给成绩-1(我的问题是为什么以下代码总是提示i没有定义,)
程序代码:
#include <stdio.h>
#include <string.h>
#define N 16
typedef struct
{char num[10];
   int s;
} STREC;
STREC fun(STREC *a, char *b)
{STREC d;
d.s=-1;
d.num[0]='\0';
int i;

 for(i=0;i<N;i++)
     if(strcmp(a[i].num,b)==0)
     {strcpy(d.num,a[i].num);
      d.s=a[i].s;
      break;}

 return d;

}
main()
{STREC s[N]={{"GA005",85},{"GA003",76}, {"GA002",69},{"GA004",85},{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}};
   STREC h;
   char m[10];
   int i;FILE *out ;
   printf("The original data:\n");
   for(i=0; i<N; i++)
   {if(i%4==0) printf("\n");
      printf("%s %3d ",s[i].num,s[i].s);
   }
   printf("\n\nEnter the number: ");gets(m);
   h=fun(s,m);
   printf("The data : ");
   printf("\n%s  %4d\n",h.num,h.s);
   printf("\n");
   out = fopen("out.dat","w");
   h=fun(s,"GA013");
   fprintf(out,"%s  %4d\n",h.num,h.s);
   fclose(out);
}
搜索更多相关主题的帖子: C语言 结构体 
2017-03-23 15:57
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
贴提示信息

DO IT YOURSELF !
2017-03-23 16:00
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 2楼 wp231957
大神,什么意思
2017-03-23 16:03
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 2楼 wp231957
D:\WEXAM\24101001\prog1.c(13) : error C2143: syntax error : missing ';' before 'type'
D:\WEXAM\24101001\prog1.c(14) : error C2065: 'i' : undeclared identifier
这个提示的错误
2017-03-23 16:04
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:5 
我这编译无异常
2017-03-23 16:13
初学编程的人
Rank: 2
等 级:论坛游民
威 望:2
帖 子:90
专家分:84
注 册:2017-3-12
收藏
得分:5 
跟我一样啊,这就是编译器的问题,必须把声明放在最前面,在声明之前不能有任何其他语句
只要有计算或者转换在声明之前都出这个错误,估计也是用的微软的vs2010之类的编译器

[此贴子已经被作者于2017-3-23 16:36编辑过]

2017-03-23 16:34
核心利益
Rank: 2
等 级:论坛游民
威 望:2
帖 子:19
专家分:44
注 册:2016-12-31
收藏
得分:5 
我在Code::Blocks 16.01 上运行没问题,应该是编译器的问题
#include <stdio.h>
#include <string.h>
#define N 16
typedef struct
{char num[10];
   int s;
} STREC;
STREC fun(STREC *a, char *b)
{STREC d;
d.s=-1;
d.num[0]='\0';
int i;
 for(i=0;i<N;i++)
     if(strcmp(a[i].num,b)==0)
     {strcpy(d.num,a[i].num);
      d.s=a[i].s;
      break;}
 return d;

}
main()
{STREC s[N]={{"GA005",85},{"GA003",76}, {"GA002",69},{"GA004",85},{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}};
   STREC h;
   char m[10];
   int i;FILE *out ;
   printf("The original data:\n");
   for(i=0; i<N; i++)
   {if(i%4==0) printf("\n");
      printf("%s %3d ",s[i].num,s[i].s);
   }
   printf("\n\nEnter the number: ");gets(m);
   h=fun(s,m);
   printf("The data : ");
   printf("\n%s  %4d\n",h.num,h.s);
   printf("\n");
   out = fopen("out.dat","w");
   h=fun(s,"GA013");
   fprintf(out,"%s  %4d\n",h.num,h.s);
   fclose(out);
}
The original data:

GA005  85 GA003  76 GA002  69 GA004  85
GA001  91 GA007  72 GA008  64 GA006  87
GA015  85 GA013  91 GA012  64 GA014  91
GA011  77 GA017  64 GA018  64 GA016  72

Enter the number:
2017-03-23 16:58
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 5楼 吹水佬
大神我还有提个问题就是:
d.num[0]='\0';
这个长度不是零吗?为什么还能这样:
strcpy(d.num,a[i].num
第一个的长度不是小于第二个的吗?
2017-03-23 18:09
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 6楼 初学编程的人
是这样的,把
int i;
提前就好了,我用的是VC++6.0
2017-03-23 18:11
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
d.num[0]='\0';
这是初始化 不是长度为0

DO IT YOURSELF !
2017-03-23 20:31
快速回复:C语言试题,不明白为什么总是说i没有定义,求大神指教
数据加载中...
 
   



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

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