标题:求最小值,一直出不来正确的下标,求大佬救命哇哇
只看楼主
关耳扛刀
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2018-9-27
结帖率:80%
已结贴  问题点数:20 回复次数:9 
求最小值,一直出不来正确的下标,求大佬救命哇哇
问题描述:输入n个数(n小于100),输出这n个数中的最小值及其下标。 要求定义和调用函数,寻找n个数中的最小值及其下标,在函数中使用指针、数组。
输入:输入有两行,第一行是一个整数n,表示有多少个整数。第二行有n个整数,中间用空格分开。
输出:在单独的一行中输出两个数min和k,min表示最小值,k表示其在数组中的下标。中间用一个空格分开。
输入样列
5
3 2 1 4 5
输出样例
1 2
#include<stdio.h>
int main()
{
    int n,i,min;
    int f[100];
    scanf("%d\n",&n);
    scanf("%d",&f[0]);
    min=f[0];
    for(i=1;i<=n-1;i++){
        scanf("%d",&f[i]);
        if(min>f[i]){
            min=f[i];
        }
    }
    printf("%d %d\n",min,i);
    return 0;
}
问题:我输出的不知道为什么是1 5
搜索更多相关主题的帖子: 最小值 输入 输出 min scanf 
2018-10-19 18:48
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
#include<stdio.h>
int main()
{
    int n,i,min=0;
    int f[100];
    scanf("%d",&n);
    for (i=0; i<n; ++i)
    {
        scanf("%d", &f[i]);
        if (f[min] > f[i])
            min = i;
    }
    printf("%d %d\n",f[min],min);
    return 0;
}

[此贴子已经被作者于2018-10-20 04:29编辑过]

2018-10-19 19:03
关耳扛刀
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2018-9-27
得分:0 
可是这样最后输出变成了1 1
2018-10-20 08:49
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
得分:10 
程序代码:
#include<stdio.h>
int main()
{
    int n,i,min;
    int k;  // 新加一个变量,存储最小变量的下标
    int f[100];
    scanf("%d\n",&n);
    scanf("%d",&f[0]);
    min=f[0];
    k=0;  // 最小变量的下标
    for(i=1;i<=n-1;i++){
        scanf("%d",&f[i]);
        if(min>f[i]){
            min=f[i];
            k=i; // 最小变量的下标
        }
    }
    printf("%d %d\n",min,k);// 最小变量、最小变量的下标
    return 0;
}


[此贴子已经被作者于2018-10-20 11:46编辑过]


126邮箱联系方式:no1xijin@126. com
2018-10-20 09:05
关耳扛刀
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2018-9-27
得分:0 
噢噢二楼的佬,是我错了,一时迷糊了,现在搞懂了
谢谢四楼的帮助
2018-10-20 09:22
逆鹰
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-10-20
得分:0 
#include<stdio.h>
int main()
{
    int n,i,min=0;
    int f[100];
    scanf("%d",&n);
    for (i=0; i<n; ++i)
    {
        scanf("%d", &f[i]);  //这个为什么要写这里,按我的理解不应该写在for语句外面吗?
        if (f[min] > f[i])
            min = i;
    }
    printf("%d %d\n",f[min],min);
    return 0;
}
2018-10-20 14:40
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用逆鹰在2018-10-20 14:40:23的发言:

#include<stdio.h>
int main()
{
    int n,i,min=0;
    int f[100];
    scanf("%d",&n);
    for (i=0; i<n; ++i)
    {
        scanf("%d", &f);  //这个为什么要写这里,按我的理解不应该写在for语句外面吗?
        if (f[min] > f)
            min = i;
    }
    printf("%d %d\n",f[min],min);
    return 0;
}

想看看按你理解写的代码
2018-10-20 14:54
逆鹰
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-10-20
得分:0 
回复 7楼 吹水佬
#include<stdio.h>
int main()
{
    int n,i,min=0;
    int f[100];
    scanf("%d",&n);
    scanf("%d", &f[i]);
    for (i=0; i<n; ++i)
    {
        if (f[min] > f[i])
            min = i;
    }
    printf("%d %d\n",f[min],min);
    return 0;
}

我的理解是这样的
2018-10-20 15:07
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用逆鹰在2018-10-20 15:07:50的发言:

#include<stdio.h>
int main()
{
    int n,i,min=0;
    int f[100];
    scanf("%d",&n);
    scanf("%d", &f[i]);
    for (i=0; i<n; ++i)
    {
        if (f[min] > f[i])
            min = i;
    }
    printf("%d %d\n",f[min],min);
    return 0;
}

我的理解是这样的

    int n,i,min=0;
    int f[100];
    scanf("%d",&n);
    scanf("%d", &f[i]); 只输入了一个元素的值,且这时的 i 是多少?

[此贴子已经被作者于2018-10-20 15:30编辑过]

2018-10-20 15:28
w1480569941
Rank: 2
来 自:河南省周口市项城市
等 级:论坛游民
威 望:1
帖 子:21
专家分:27
注 册:2018-10-15
得分:0 
不是要用指针吗
2018-10-20 15:53



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




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

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