user-0 提问: 求大佬看一下为啥错了，怎么修改

回复:
user: user-0
content: 引用 9 楼 拥抱Linux的回复:[quote=引用 8 楼 神无影 的回复:]  谢谢啦⊙∀⊙！问一下手机上怎么结帖  我没怎么用过CSDN的手机app，不清楚。你有空就摸索一下吧，找不到也没关系，把上面的问题搞懂就行了。[/quote] 嗯嗯，谢谢啦以后有问题了还希望多多指教非常感谢

user: user-1
content: 引用 8 楼 神无影 的回复:谢谢啦⊙∀⊙！问一下手机上怎么结帖  我没怎么用过CSDN的手机app，不清楚。你有空就摸索一下吧，找不到也没关系，把上面的问题搞懂就行了。

user: user-0
content: 引用 7 楼 拥抱Linux的回复:不是说好了数组长度是16个元素，而下标最大值为15么？  // 变量 i 作为数组下标，等于 16 的时候 越界访问了 // 改成 i < 16 或者 i < N  即可 for (i = 1; i <= 16; i++) { 		if ((a[i].s) < min) { 			min = a[i].s; 		} 	}  谢谢啦⊙∀⊙！问一下手机上怎么结帖

user: user-1
content: 不是说好了数组长度是16个元素，而下标最大值为15么？  // 变量 i 作为数组下标，等于 16 的时候 越界访问了 // 改成 i < 16 或者 i < N  即可 for (i = 1; i <= 16; i++) { 		if ((a[i].s) < min) { 			min = a[i].s; 		} 	}

user: user-0
content: 再问一下下面这个程序哪里错了没报错，就是没结果，要求输出成绩最低的几位，⊙∀⊙！手机上这程序怎么结帖 #include <stdio.h> #define N 16   typedef struct {       char num[10];       int s; } STREC; int fun(STREC a[], STREC b[]) {    int i,min,count=0;    min=a[0].s;    for(i=1;i<=16;i++)    {    	   if ((a[i].s)<min) 		  { 		  	min= a[i].s; 		  }     }    for(i=0;i<N;i++)    {        if( a[i].s==min )        {         b[count]=a[i];         count++;        }         }     return count; } int main() {      STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",91},{"GA017",64},{"GA018",64},{"GA016",72}};     STREC h[N];     int i,n;     n=fun(s,h);     for(i=0;i<n; i++)         printf("%s %4d\n",h[i].num,h[i].s);     return 0; }

user: user-2
content: int fun(STREC a[], STREC b[],int x,int y) {     int i,count=0;     for(i=0;i<N;i++)     {         if( (x <= a[i].s) && (a[i].s<= y) )         {             b[count] = a[i];             //b[count].num=a[i].num;             //b[count].s=a[i].s;             count++;         }      }     return count; } 供参考！  结构体可以直接赋值，如果结构体元素有10几个，那么你也要一个元素一个元素的赋值吗？

user: user-1
content: 自己发的帖子，在电脑上的浏览器里打开之后，标题右边有几个可以点击的文字块，其中一个就是「结帖」，那么点击「结帖」就进入了结帖环节。 结帖的时候，需要给某些楼层的回答「打分」，根据页面的指引，点击最终的「结帖」或者「完成」按钮就好了。

user: user-0
content: 引用 2 楼 拥抱Linux的回复:下次建议把程序的功能是什么，也说一下。 代码里的错误已经用注释标注出来了，具体如下：  #include <stdio.h> // 增加一个头文件<string.h> #include <string.h>  #define N 16  typedef struct { 	char num[10]; 	int s; } STREC;  int fun(STREC a[], STREC b[], int x, int y) { 	int i, count = 0; 	for (i = 0; i < N; i++) { 		if ((x <= a[i].s) && (a[i].s <= y)) { 			// 数组不能这样赋值，因为数组名在赋值运算符左边的时候它的值是一个地址常量，是不能被赋值的 			// 要么通过循环来对数组元素逐一赋值， 			// 对于字符数组的话，还可以使用<string.h>里的相关函数strcpy等 			//b[count].num = a[i].num; 			strcpy(b[count].num, a[i].num); 			b[count].s = a[i].s; 			count++; 		} 	} 	return count; }  // 整个程序是想输出成绩位于low和high之间的学生信息吗？ int main() { 	STREC s[N] = { { "GA005", 85 }, { "GA003", 76 }, { "GA002", 69 }, { "GA004", 85 }, { "GA001", 96 }, { "GA007", 72 }, { "GA008", 64 }, { "GA006", 87 }, 		       { "GA015", 85 }, { "GA013", 94 }, { "GA012", 64 }, { "GA014", 91 }, { "GA011", 90 }, { "GA017", 64 }, { "GA018", 64 }, { "GA016", 72 } }; 	STREC h[N]; 	int i, n, low, heigh, t;         // 高的英语单词是high，嘿嘿，这就不帮你改了 	scanf("%d%d", &low, &heigh); 	if (heigh < low) { 		t = heigh; 		heigh = low; 		low = t; 	} 	n = fun(s, h, low, heigh); 	printf("The student's data between %d--%d :\n", low, heigh); 	for (i = 0; i < n; i++) 		printf("%s %4d\n", h[i].num, h[i].s); 	return 0; }  Linux环境下，clang编译后，测试运行截图：  如有帮助，烦请及时结贴、给分！ ：） 问一下，怎么结帖，谢谢大佬啦

user: user-1
content: 下次建议把程序的功能是什么，也说一下。 代码里的错误已经用注释标注出来了，具体如下：  #include <stdio.h> // 增加一个头文件<string.h> #include <string.h>  #define N 16  typedef struct { 	char num[10]; 	int s; } STREC;  int fun(STREC a[], STREC b[], int x, int y) { 	int i, count = 0; 	for (i = 0; i < N; i++) { 		if ((x <= a[i].s) && (a[i].s <= y)) { 			// 数组不能这样赋值，因为数组名在赋值运算符左边的时候它的值是一个地址常量，是不能被赋值的 			// 要么通过循环来对数组元素逐一赋值， 			// 对于字符数组的话，还可以使用<string.h>里的相关函数strcpy等 			//b[count].num = a[i].num; 			strcpy(b[count].num, a[i].num); 			b[count].s = a[i].s; 			count++; 		} 	} 	return count; }  // 整个程序是想输出成绩位于low和high之间的学生信息吗？ int main() { 	STREC s[N] = { { "GA005", 85 }, { "GA003", 76 }, { "GA002", 69 }, { "GA004", 85 }, { "GA001", 96 }, { "GA007", 72 }, { "GA008", 64 }, { "GA006", 87 }, 		       { "GA015", 85 }, { "GA013", 94 }, { "GA012", 64 }, { "GA014", 91 }, { "GA011", 90 }, { "GA017", 64 }, { "GA018", 64 }, { "GA016", 72 } }; 	STREC h[N]; 	int i, n, low, heigh, t;         // 高的英语单词是high，嘿嘿，这就不帮你改了 	scanf("%d%d", &low, &heigh); 	if (heigh < low) { 		t = heigh; 		heigh = low; 		low = t; 	} 	n = fun(s, h, low, heigh); 	printf("The student's data between %d--%d :\n", low, heigh); 	for (i = 0; i < n; i++) 		printf("%s %4d\n", h[i].num, h[i].s); 	return 0; }  Linux环境下，clang编译后，测试运行截图：  如有帮助，烦请及时结贴、给分！ ：）

user: user-0
content: #include <stdio.h> #define N 16   typedef struct {       char num[10];       int s; } STREC; int fun(STREC a[], STREC b[],int x,int y) {    int i,count=0;    for(i=0;i<N;i++)    {        if( (x <= a[i].s) && (a[i].s<= y) )        {         b[count].num=a[i].num;         b[count].s=a[i].s;         count++;        }         }     return count; } int main() {      STREC s[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},{"GA001",96},{"GA007",72},{"GA008",64},{"GA006",87},{"GA015",85},{"GA013",94},{"GA012",64},{"GA014",91},{"GA011",90},{"GA017",64},{"GA018",64},{"GA016",72}};     STREC  h[N];     int i,n,low,heigh,t;     scanf("%d%d", &low,&heigh);     if ( heigh< low )     {          t=heigh;         heigh=low;         low=t;      }     n=fun( s,h,low,heigh );     printf("The student's data between %d--%d :\n",low,heigh);     for(i=0;i<n; i++)         printf("%s %4d\n",h[i].num,h[i].s);     return 0; }