标题:for中嵌套if有点问题,求助
只看楼主
想了很多网名
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2019-11-22
结帖率:75%
已结贴  问题点数:20 回复次数:11 
for中嵌套if有点问题,求助
题目;输入十个学生的成绩,放在一维数组中,找出成绩最高的学生的成绩和该生的序号。
以下是我编写的的代码
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
    float a[10],max=0;
    int i,imax;
    printf("请输入十个学生的成绩;\n");
    for(i=0;i<10;i++)
    {
        scanf("%f",&a[i]);
        if(a[i]>max)
        max=a[i];
        imax=i;
    }
    printf("最高成绩:%6.2f\n该生序号;%d",max,imax);
    return 0;
}

出现的问题:随便输入十个数,能找出最大的数,但是不能正确的输出该数的序号,imax始终等于9,这是怎么回事啊?请教一下各位
搜索更多相关主题的帖子: for 序号 学生 max 成绩 
2019-12-31 16:41
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:10 
scanf("%f",&a[i]);这一句什么意思我学C++的只能看懂一个scanf
max=a[i];这一句的意思是你输入的数如果大于Max,则a[i]的位置和Max互换,直至Max成为最大的数,Max是一个最大的数而不是数组

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2019-12-31 18:23
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:10 
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main() {
    float a[10];
    float max=a[0];
    int maxi=0;


    for(int i=1; i<10; ++i)
    {   cin >> a[i];
        if(max<a[i])
        {   max=a[i];
            maxi=i;
        }
    }
    cout<<"最大值为" <<max;
    cout << "最大值下标为" <<maxi<< endl;

}


把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2019-12-31 18:56
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
    float a[10],max=a[0];
    int i,imax=0;
    printf("请输入十个学生的成绩;\n");
    for(i=1;i<10;i++)
    {
        scanf("%f",&a[i]);
        if(a[i]>max)
        {max=a[i];
        imax=i;}
    }
    printf("最高成绩:%6.2f\n该生序号;%d",max,imax);
    return 0;
}

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2019-12-31 19:06
想了很多网名
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2019-11-22
得分:0 
回复 2楼 叶纤
scanf("%f",&a[i])的意思是:输入一个实数,将其存放在数组中序号为i的元素中。
2020-01-01 13:43
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
回复 5楼 想了很多网名
已经知道了,我也已经把答案给你说了,你的float Max=0,并没有和你输入的数组联系起来,所以i总是固定一个数你把
float Max=0,改成float max=a[0]就行了

[此贴子已经被作者于2020-1-1 16:58编辑过]


把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-01-01 16:56
想了很多网名
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2019-11-22
得分:0 
回复 6楼 叶纤
好的    谢谢咯
2020-01-02 14:48
想了很多网名
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2019-11-22
得分:0 
回复 4楼 叶纤
我刚又仔细的看了一下,i总是等于一个固定的数的原因:
 imax=i;  这个语句不是在if语句的范围内,而是在for的范围内。用一个大括号把  max=a[i]; 和imax=i;括起来就行了。还有就是imax=i;要改为imax=i+1;         
    尴尬啊。
2020-01-02 15:19
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
回复 8楼 想了很多网名
你原先的代码用for(i=0)开始的确实后面需要加个一,不过我还是比较喜欢for(i=1)开始,循环的少了,内存会变得少一点吧(个人见解)

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-01-02 15:35
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
哥嘞,别纠结这个程序了,知道程序运行的思维就行了,你先尝试着给程序加点难度,比如学生的成绩和,学生的平均数,奇数个数偶数个数,还有输入数字在第几个,然后给数组按成绩大的或小的排序等等
如果还需要提升难度,试一试二维或者三维数组

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-01-02 15:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498753-1-1.html




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

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