| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1270 人关注过本帖
标题:这个题调试半天下标就弄不好了,求大神~~
只看楼主 加入收藏
lovecao954
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-4-23
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:19 
这个题调试半天下标就弄不好了,求大神~~
Q:从键盘输入10个整型数据,找出最大值和最大值的下标并输出?

#include <stdio.h>
#define N 10
void input (int array_b[N])
{
    int i;
    printf("请输入%d个整数:",N);
    for(i=0;i<N;i++)
    {
        scanf("%d",&array_b[i]);
    }
}
int max(int array_b[N])
{
    int i,maxmum,j;
    maxmum=array_b[0];
    for(i=1;i<N;i++)
    {
        if(array_b[i]>maxmum)
        maxmum=array_b[i];
    }
    return maxmum;
}
int main()
{
    int array_a[N],maxmum,i,j;
    input(array_a);
    maxmum=max(array_a);  
    printf("maxmum=%d\n",maxmum);
     {
         if(maxmum=array_a[N])
       {
           maxmum=array_a[N];
          j=N;
        }     
     }
               
     printf("最大值的下标:%4d\n",j);
     return 0;   
}
搜索更多相关主题的帖子: include return 最大值 键盘 
2014-04-23 22:51
容微人生
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2014-4-22
收藏
得分:0 
你好,有C语言编程软件不?能不能发个给我啊,谢谢了,我扣扣825116989。
2014-04-23 23:42
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:15 
回复 楼主 lovecao954
程序代码:
#include 
#define N 10
void input (int array_b[N])
{
    int i;
    printf("请输入%d个整数:",N); //此处最好加上"\n", 在行首输入感觉比在
    for(i=0;i    {                //半行上输入舒服些, 不加也可以. 
        scanf("%d",&array_b);
    }
}
int max(int array_b[N])
{
    int i,maxmum,j;
    maxmum=array_b[0];
    for(i=1;i    {
        if(array_b>maxmum)
        maxmum=array_b;
    }
    return maxmum;
}
int main()
{
    int array_a[N],maxmum,i,j;
    input(array_a);
    maxmum=max(array_a);  
    printf("maxmum=%d\n",maxmum);
     {
         if(maxmum=array_a[N]) //此处连同下面两处一样. N在程序开始被定义成10, 
       {                       //maxnum是整型变量,没法被赋值为数组.
           maxmum=array_a[N];  //另外数组的起始下标为0,即使此处对了, j也应该是
          j=N;                 //j=N+1.
        }     
     }
               
     printf("最大值的下标:%4d\n",j); //或者此处改成j+1.    
     return 0;    
}
附上我修改后的代码,输入函数和求最大值的函数基本没有改动,主要是输出下标的部分:
程序代码:
#include <stdio.h>
#define N 10
void input (int array_b[N])
{
    int i;
    printf("请输入%d个整数:\n",N);   
    for(i=0;i<N;i++)
    {
        scanf("%d",&array_b[i]);
    }
}
int max(int array_b[N])
{
    int i,maxmum,j;
    maxmum=array_b[0];
    for(i=1;i<N;i++)
    {
        if(array_b[i]>maxmum)
        maxmum=array_b[i];
    }
    return maxmum;
}
int main()
{
    int array_a[N],m,i,j;
    input(array_a);
    m=max(array_a); 
    printf("maxmum=%d\n",m);
     for(i=0;i<N;i++)
        {           
         if(m==array_a[i])     //依次比较最大值和数组array_a中的各个元素的值,
         j=i+1;                //如果相等,输出下标.  
        }             
     printf("最大值的下标:%d\n",j);
           
     return 0;   
}
在改动你的代码之前,我自己试着写了下实现你的要求的代码.
程序代码:
//输入10个整数,输出最大值及其在输入中的序数.
#include "stdio.h"
int main()
{
    int array[10];
    int i,j,max;
    printf("请输入10个整数:\n");
    for(i=0;i<10;i++)
    {
        scanf("%d",&array[i]);
    }   
    max=array[0];
    for(i=1;i<10;i++)
    {
        if(array[i]>max){max=array[i];
        j=i;
        }
    }
        printf("最大数为: %d\n",max);
        printf("最大数的下标为: %d\n",j+1);
   
   
    return 0;
}
我不怎么喜欢自己书写新的函数, 也不喜欢用宏定义. 可能是因为编不了稍微大的程序吧. 几乎都是很简单的小程序.练手玩的. 我也是新手,共同交流, 谢谢.

代码测试环境:  WinXP+C-Free5.0.
2014-04-24 03:22
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:0 
回复 2 楼 容微人生
我现在用的C-Free. 免费的. 我感觉挺好用的,不妨试一下. 下载地址:http://www.

默认的编译器是MinGW. 编译中的有些提示是按照C++语法提示的.

代码测试环境:  WinXP+C-Free5.0.
2014-04-24 03:25
lovecao954
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-4-23
收藏
得分:0 
回复 3 楼 vvvcuu
如果输入0 1 2 3 4 55 6 7 8 9的话,输出的下标应该是5吧,从a[0]开始的
2014-04-24 12:29
lovecao954
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-4-23
收藏
得分:0 
回复 3 楼 vvvcuu
应该是j=i,不能+1
2014-04-24 12:31
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:0 
回复 5 楼 lovecao954
你看看它在第几个位置.  看看是否需要+1.  数组的下标是从0开始, 而你输入的数字的序号是从1开始的, 所以输出的下标的时候需要+1.

输入完了,先在编译器上模拟运行一下, 看看效果.

虽然程序不一定正确,  算法不一定是最简洁的, 至少目前实现了自己的需求.

代码测试环境:  WinXP+C-Free5.0.
2014-04-24 12:54
lovecao954
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-4-23
收藏
得分:0 
回复 7 楼 vvvcuu
运行出来是不需要+1,+1就不对了
2014-04-24 12:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
回复 楼主 lovecao954
繞圈了,嘗試把你的程序寫簡單一些。先整理好思路!

授人以渔,不授人以鱼。
2014-04-24 13:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
程序代码:
/*
From: <span style="color: #008000; text-decoration: underline;"><span style="color: #008000; text-decoration: underline;">https://bbs.bccn.net/thread-430550-1-1.html[/color]
Q:从键盘输入10个整型数据,找出最大值和最大值的下标并输出?
[/color]*/

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

int GetInt(void);
void Pause(void);

const int Number = 10;

int main(void)
{
    int int_array[Number];
    int index;
    int max_value_index, max_value;        // 最大値及其下標

    // 輸入數據
    for (index = 0; index < _countof(int_array); ++index)
    {
        printf_s("[%2d] ", index + 1);
        int_array[index] = GetInt();
    }

    // 顯示輸入的數據
    printf_s("The array list is:\n");
    for (index = 0; index < _countof(int_array); ++index)
    {
        printf_s("[%2d] = %d\n", index, int_array[index]);
    }

    // 核心代碼,求最大値及其下標,然後輸出
    max_value_index = 0;
    max_value = int_array[max_value_index];
    for (index = 1; index < _countof(int_array); ++index)
    {
        if (int_array[index] > max_value)
        {
            max_value_index = index;
            max_value = int_array[max_value_index];
        }
    }
    printf_s("\nThe maximum value is :[%2d] = %d\n", max_value_index, max_value);

    Pause();

    return EXIT_SUCCESS;
}

int GetInt(void)
{
    int value;

    do
    {
        printf_s("Please input a integer number and press <Enter>: ");
        rewind(stdin);
    } while (fscanf_s(stdin, "%d", &value) != 1);

    return value;
}

void Pause(void)
{
    printf_s("\nPress <Enter> key to continue...");
    rewind(stdin);
    fgetc(stdin);
}



[ 本帖最后由 TonyDeng 于 2014-4-24 14:10 编辑 ]

授人以渔,不授人以鱼。
2014-04-24 13:41
快速回复:这个题调试半天下标就弄不好了,求大神~~
数据加载中...
 
   



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

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