user-0 提问: 帮我看我的程序，实在找不出那个地方出问题了。

回复:
user: user-1
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-2
content: 引用 楼主 qq_28456621 的回复:#include<stdio.h> int main() {     float a; 	int c=1,f=1,g,p=1,sum=0,l,n,z=0; 	int b[1000],d; 	printf("请输入学生人数："); 	scanf("%d",&d); loop2:for(;f<=d;f++) 	{         printf("请输入学号为"); 	    printf("%d",f);         printf("学生成绩：0~100的实数。 \n"); 		break; 	} loop:scanf("%f",&a); 		 if((a<=100)&&(a>=0)) 			 	 	while(c<=d) 	{ 		c++; 		b[c]=a; 		f++; 		goto loop2; 	} 					//printf("%2.1f\n",a); 		 else { 			 printf("输入范围有误，请重新输入：0~100的实数。\n");          goto loop; 		 } 	 	c=1; 		f=1; loop3:for(;f<=d;f++) 	{         printf("学号为"); 	    printf("%d",f);         printf("学生成绩为:\t"); 		break; 	} 	while(c<=d) 	{ 		c++; 		printf("%d",b[c]); 			printf("\n"); 			f++; 			goto loop3; 	} loop4:printf("\n"); 	printf("\n"); 	printf("1.学生的平均成绩\n"); 	printf("2.学生及格的人数\n"); 	printf("3.学生不及格的人数\n"); 	printf("4.学生的排名\n"); 	printf("\n"); 	printf("请输入要查询的编号，按Enter。"); 	scanf("%d",&g); 	if(g==1){ 		for(c=1;c<=d;c++) 		{ 		sum=sum+b[c]; 		} 		l=sum/d; 		printf("%d",l); 	}else if(g==2){for(c=1;c<=d;c++) 			{ 				if(b[c]>=60)n++; 			} 				printf("%d",n); 	}else if(g==3){for(c=1;c<=d;c++) 				{ 					if(b[c]<=60)n++; 				} 				printf("%d",n); 	}else if(g==4){for(c=1;c<=d;c++) 					{ 						if(b[c]<=b[c++]) 						{ 							z=b[c]; 							b[c]=b[c++]; 							b[c++]=z; 						} 	} 	} 	goto loop4;   system("pause"); } 呵呵，又是学生管理系统。。。。 看了你的程序，我有几点建议： 1、改进程序风格，尽量不用goto 2、变量命名尽可能取有意义的名字，而不是a b c d这些 3、{和}最好单独占用一行，这个和个人风格有关，如果你觉得你这种写法最漂亮清晰，你可以维持，我觉得单独占一行要比你这么写清晰漂亮的多。 4、if else 如果前面用了代码块，后面最好保持风格统一，建议无论语句多少都使用复合语句代码块。 5、main函数应该简短并只负责功能驱动，如果代码量少没什么关系，如果代码量多，你这么写将降低程序可读性，建议合理划分具体功能，定义具体函数，共同完成相关的功能。

user: user-2
content: 引用 5 楼 zhao4zhong1 的回复:[quote=引用 4 楼 jack960330 的回复:] [quote=引用 3 楼 zhao4zhong1 的回复:] 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。 为什么你不能像我一样，一点点提出建议，而是发一段在话呢，很容易被人认为你是copy的[/quote] 我copy我自己的也侵权吗？证明NM是NM？[/quote] 比别误会啊，我不是这个意思

user: user-1
content: 引用 4 楼 jack960330 的回复:[quote=引用 3 楼 zhao4zhong1 的回复:] 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。 为什么你不能像我一样，一点点提出建议，而是发一段在话呢，很容易被人认为你是copy的[/quote] 我copy我自己的也侵权吗？证明NM是NM？

user: user-2
content: 引用 3 楼 zhao4zhong1 的回复:代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。 为什么你不能像我一样，一点点提出建议，而是发一段在话呢，很容易被人认为你是copy的

user: user-3
content: 修改如下：  #include<stdio.h> int main() { 	float a; 	int c = 1, f = 1, g, p = 1, sum = 0, l, n, z = 0; 	int b[1000], num[1000], d; 	printf("请输入学生人数："); 	scanf("%d", &d); 	//读入学生的成绩 	while (f <= d) 	{ 		printf("请输入学号为%d学生成绩：0~100的实数:"); 		scanf("%f", &a); 		if ((a <= 100) && (a >= 0)) 		{ 			b[c] = a; 		} 		else printf("输入范围有误，请重新输入：0~100的实数。\n"); 	} 	c = 1; 	f = 1; 	//打印学生成绩 	for (; f <= d; f++) printf("学号为%d的学生的成绩为:%d\n", f, b[c++]); loop4: 	printf("\n"); 	printf("\n"); 	printf("1.学生的平均成绩\n"); 	printf("2.学生及格的人数\n"); 	printf("3.学生不及格的人数\n"); 	printf("4.学生的排名\n"); 	printf("\n"); 	printf("请输入要查询的编号，按Enter。"); 	scanf("%d", &g); 	if (g == 1) { 		for (c = 1; c <= d; c++) 		{ 			sum = sum + b[c]; 		} 		l = 1.0 * sum / d; 		printf("%d", l); 	} 	else if (g == 2) { 		for (c = 1; c <= d; c++) 		{ 			if (b[c] >= 60)n++; 		} 		printf("%d", n); 	} 	else if (g == 3) { 		for (c = 1; c <= d; c++) 		{ 			if (b[c] <= 60) n++; 		} 		printf("%d", n); 	} 	else if (g == 4) { 		for (c = 1; c <= d; c++) 		{ 			num[c] = c; 			for (p = c + 1; p <= d; p++) 			{ 				num[p] = p; 				if (b[c] < b[p]) 				{ 					z = b[c]; 					b[c] = b[p]; 					b[p] = z; 					z = num[c]; 					num[c] = num[p]; 					num[p] = z; 				} 			} 			pirntf("%3d", num[c]);   //打印学号 		} 		printf('\n'); 	} 	goto loop4; 	system("pause"); }