C语言,学生成绩排序,用VC能输出正确的结果,但学校的编译器是g++,总提示无效内存引用,求助!!!!
#include<stdio.h>#include<stdlib.h>intmain(intargc,char*argv[]){inta[2][20],i,j,c,m,n...
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int a[2][20],i,j,c,m,n,k,p; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&a[1][i]); a[0][i]=i+1; } for(j=0;j<n-1;j++) {c=j; for(i=j+1;i<n;i++) if(a[1][c]<a[1][i]) c=i; if(c!=j) {k=a[1][c]; p=a[0][c]; a[1][c]=a[1][j]; a[0][c]=a[0][j]; a[1][j]=k; a[0][j]=p;} } for(i=0;i<n;i++) if(a[1][
按学生的序号输入 n 名学生的成绩,按照分数由高到低的顺序输出学生的名次、序号和成绩,要求成绩相同的学生具有相同的名次。
输入: 学生人数和 n 名学生的成绩
输出: 按 分数由高到低的顺序输出学生的名次、序号和成绩 展开
按学生的序号输入 n 名学生的成绩,按照分数由高到低的顺序输出学生的名次、序号和成绩,要求成绩相同的学生具有相同的名次。
输入: 学生人数和 n 名学生的成绩
输出: 按 分数由高到低的顺序输出学生的名次、序号和成绩 展开
2个回答
展开全部
for(a[i][c]<a[1][i]) c = i;
//首先说说 a[2][20];
1.scanf("%d",&n);//n最好先初始化一下,输入无效值“s”,n的值乱七八糟的。
2.若n的值超过20,数组是不是越界了,可以这样 n = n>20?20:n;
//其次说说if(a[i][c]<a[1][i]) c = i;
若a[1][0] < a[1][1] c = 1;
若a[1][0] < a[1][2] c = 2;
..........................;
若a[1][0] < a[1][arraysize] c = arraysize;
for(a[i][c]<a[1][i]) c = i;//不明白要做什么。
//最后可以定义一个结构体。
struct _student
{
int stu_no;
int stu_grade;
};
#define ARRAY_SIZE 20;
_student stu[ARRAY_SIZE];
信息:给每个结构体赋给学生成绩和序号,
排序:小量数据可以用冒泡排序法排序,
输出: 把结构体数据输出就完成这个功能了。
vc6.0的语法没有gcc严谨
建议同学遵守下变量的命名规则吧。
个人觉得,一个二维数组信息放序号跟成绩,这个真是很奇怪的事情。
代码我没有怎么看,看不懂 莫怪。
上面是见到一些错误和给出的建议。希望对你有帮助。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询