c语言编程,输出最高分和最低分,为什么出错了···

#include
void main()
{
float maxscore,minscore,minnum,maxnum;
int i,n;
printf("请输入8位同学的学号num:\n");
scanf("%d",&n);
printf("输入8名同学的英语成绩score:\n");
for(i=0;i scanf("%d",&num[i],&score[i]);
maxscore = score[0];minsore= score[0];
maxnum = num[0];minnum= num[0];
for(i=0;i {
if(score[i]>maxscore)
{
maxscore=score[i];
maxnum=num[i];
}
else if (score[i]<minscore)
{

minscore = score[i];

minnum = num[i];
}
}
printf("maxscore=%f,maxnum=%d\n",maxscore,maxnum);
printf("minscore=%f,minnum=%d\n",maxscore,minnum);
}

for(i=201201;i<201209;i++)

for的执行语句是空的

是不是要用二维数组······

if哪里要用等于两个等于号

if(i==0),for()里面错误

int i,a[8],max=0,min=100;//这里不需要用到Grade这个变量
printf("请输入8个同学的成绩=\n");
for(i=0;i {scanf("%d",&a[i]);}
max=a[0];//假设第一个最大,每一次都跟最大的比较
min=a[0];//假设第一个最小,每一次都跟最小的比较
for(i=1;i {
if (max if (min>a[i])min=a[i];//如果后面的数有比min小的就更新min
}
printf("最高分同学的学号i=%d和成绩max%f\n",i,max);
printf("最低分同学的学号i=%d和成绩min%f\n",i,min);

#include
#include

//定义有多少个学生
#define MAX_LENGTH 8

void main()
{
int iArrayNo[MAX_LENGTH];
int iMaxNo = 0;
int iMinNo = 0;
float fArrayValue[MAX_LENGTH];
float fMaxValue = 0.0;
float fMinValue = 100.0;
int i = 0;

for(i=0; i<MAX_LENGTH; i++)//初始化两个数组
{
    iArrayNo[i] = 0;
    fArrayValue[i] = 0.0;
}

printf("请输入%d个同学的成绩:\n", MAX_LENGTH);

for(i=0; i<MAX_LENGTH; i++)
{
    printf("请输入第%d位同学的学号:\n",i+1);
    scanf("%d", &iArrayNo[i]);
    getchar();//清除回车 linux系统

    printf("请输入第%d位同学的成绩:\n",i+1);
    scanf("%f",&fArrayValue[i]);
    getchar();//清除回车 linux系统
}   

fMaxValue=fArrayValue[i];//这一行不需要,你的程序中有,我就没有删除

for(i=0; i<MAX_LENGTH; i++)
{
    if( fMinValue >= fArrayValue[i])//判断最低分
    {
        fMinValue = fArrayValue[i];
        iMinNo = iArrayNo[i];
    }

    if( fMaxValue <= fArrayValue[i] )//判断最高分
    {
        fMaxValue = fArrayValue[i];
        iMaxNo = iArrayNo[i];
    }
}

printf("最高分同学的学号是%d和成绩是%.1f\n", iMaxNo, fMaxValue);
printf("最低分同学的学号是%d和成绩是%.1f\n", iMinNo, fMinValue);

/* 说明一下:
 * 这种排序方式会出现会将比较成功的数据作为输出的成绩
*/
return ;

}

在Linux系统下测试成功,你看一看

 #include <stdlib.h>
#include <stdio.h>

//定义有多少个学生
#define MAX_LENGTH 8 

void main()
{
    int iArrayNo[MAX_LENGTH];
    int iMaxNo = 0;
    int iMinNo = 0; 
    float fArrayValue[MAX_LENGTH];
    float fMaxValue = 0.0;
    float fMinValue = 100.0;
    int i = 0;

    for(i=0; i<MAX_LENGTH; i++)//初始化两个数组
    {
        iArrayNo[i] = 0;
        fArrayValue[i] = 0.0;
    }

    printf("请输入%d个同学的成绩:\n", MAX_LENGTH);

    for(i=0; i<MAX_LENGTH; i++)
    {
        printf("请输入第%d位同学的学号:\n",i+1);
        scanf("%d", &iArrayNo[i]);
        getchar();//清除回车 linux系统

        printf("请输入第%d位同学的成绩:\n",i+1);
        scanf("%f",&fArrayValue[i]);
        getchar();//清除回车 linux系统
    }   

    fMaxValue=fArrayValue[i];//这一行不需要,你的程序中有,我就没有删除

    for(i=0; i<MAX_LENGTH; i++)
    {
        if( fMinValue >= fArrayValue[i])//判断最低分
        {
            fMinValue = fArrayValue[i];
            iMinNo = iArrayNo[i];
        }

        if( fMaxValue <= fArrayValue[i] )//判断最高分
        {
            fMaxValue = fArrayValue[i];
            iMaxNo = iArrayNo[i];
        }
    }

    printf("最高分同学的学号是%d和成绩是%.1f\n", iMaxNo, fMaxValue);
    printf("最低分同学的学号是%d和成绩是%.1f\n", iMinNo, fMinValue);

    /* 说明一下:
     * 这种排序方式会出现会将比较成功的数据作为输出的成绩
    */
    return ;
}

我在你的基础上写的,你试试!
#include

int main()
{
int i,j,k,a[8],max=0,min=100;
printf("请输入8个同学的成绩=\n");
for(i=0;i<8;i++)
{
scanf("%d",&a[i]);
}

for(i=0;i {
if(max {
max=a[i];
j=i;
}
}
for(i=0;i {
if(min>a[i])
{
min=a[i];
k=i;
}
}
printf("最高分同学的学号i=%d和成绩max=%d\n",j,max);
printf("最低分同学的学号i=%d和成绩min=%d\n",k,min);
return 0;
}

  1. //刚刚没看到还要输出学号
  2. ```
  3. #include
  4. int main()
  5. {
  6. int i,a[8],max,min;//这里不需要这个变量Grade,
  7. int minNum,maxNum;//记录学号
  8. printf("请输入8个同学的成绩=\n");
  9. for(i=0;i<8;i++)
  10. scanf("%d",&a[i]);
  11. max=a[0];
  12. min=a[0];
  13. for(i=1;i<8;i++)
  14. {
  15. if (max<a[i]){
  16. max=a[i];//如果有比max的数,更新max
  17. maxNum=i;//这里需要一个东西记录学号 ,每次更新最大值的时候更新学号
  18. }
  19. if (min>a[i]){
  20. min=a[i];
  21. minNum=i;//这里也一样,需要更新 和记录
  22. }
  23. }
  24. printf("最高分同学的学号i=%d和成绩max=%d\n",maxNum,max);//你输出最好跟你输入的数据类型一样 ,不然要用到强制转换
  25. printf("最低分同学的学号i=%d和成绩min=%d\n",minNum,min);
  26. }

#include

int main()
{
int i,j,k,a[8],max=0,min=100;
printf("请输入8个同学的成绩=\n");
for(i=0;i<8;i++)
{
scanf("%d",&a[i]);
}

for(i=0;i {
if(max {
max=a[i];
j=i;
}
}
for(i=0;i {
if(min>a[i])
{
min=a[i];
k=i;
}
}
printf("最高分同学的学号i=%d和成绩max=%d\n",j,max);
printf("最低分同学的学号i=%d和成绩min=%d\n",k,min);
return 0;
}


回答后效果变了,再发一次

题目要求输出要得到最高分和最低分的同学的学号(201201-201208)和成绩

你粘贴的代码不全,for循环缺表达式缺括号
而且数据类型定义有点混乱,
还有输入输出的指定格式要按你定义的数据类型去指定,分数定义了float就要用%f, 学号定义了int就要用%d
最后一行输出最小的分数变量却用maxscore代替了。

 #include <stdio.h>
void main()
{
    //定义最大成绩,最小成绩,8位同学成绩存储变量
    float maxscore, minscore,  score[8];
    //定义循环变量,最大分数对应的序号,最小分数对应的学号
    int i, num[8], maxnum, minnum;

    printf("输入8名个学号和对应的英语成绩,\n");
    printf("学号在和英语成绩之间以空格隔开(如1001 90),\n");
    printf("每输入完一组学号和成绩,按Enter键换行:\n");
    //输入8个学号及8个对应的英语成绩
    for(i=0;i<8;i++)
    {
        scanf("%d %f", &num[i], &score[i]);
    }

    //设定初始最大值及最小值
    maxscore = score[0]; 
    minscore= score[0];
    maxnum = num[0];
    minnum= num[0];

    //真正开始比较,寻找最大值,最小值
    for(i=0;i<8;i++) 
    {
        if(score[i]>maxscore)
        {
            maxscore = score[i];
            maxnum = num[i];
        }
        else if (score[i]<minscore)
        {
            minscore = score[i];
            minnum = num[i];
        }
    }

    //输出结果
    printf("maxscore=%f, maxnum=%d\n", maxscore, maxnum);
    printf("minscore=%f, minnum=%d\n", minscore, minnum);
}

你题意的要求是什么,如果仅仅输出最高分,最低分,冒泡排序就行了,如果要输出最高分最低分的同时要输出对应的学生的信息,这个时候最好用结构体,定义结构体变量来做,这样信息量大很多

for(i=0;i scanf("%d",&num[i],&score[i]);这句话是什么