A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张海龙重新起航 中级黑马   /  2014-4-5 23:36  /  1649 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张海龙重新起航 于 2014-4-6 08:35 编辑

设计一个函数,找出整型数组元素的最小值,不知道哪里错了,得不出正确结果,希望大家帮忙看看,谢谢!
  1. /*
  2. 设计一个函数,找出整型数组元素的最小值
  3. */
  4. #include <stdio.h>
  5. int min(int *array,int length)
  6. {
  7.     int min=0;
  8.     for (int i=0; i<length-1; i++) {
  9.         if(array[i+1]<array[min])
  10.             array[min]=array[i+1];
  11.     }
  12.     printf("整形数组元素的最小值是%d\n",array[min]);
  13.     return 0;
  14. }

  15. int main()
  16. {
  17.     int *array;//定义一个数组;
  18.     int length;//定义数组长度;
  19.     printf("请输入整形数组的元素个数:\n");
  20.     scanf("%d",&length);//获取数组长度
  21.     printf("请输入%d个元素:\n",length);
  22.     //获取一个数组
  23.     for (int i=0; i<length; i++) {
  24.         scanf("%d",&array[i]);
  25.     }
  26.     min(array,length);//获取函数最小值
  27.     return 0;
  28. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

5 个回复

倒序浏览
请输入整形数组的元素个数:
6
请输入6个元素:
8 9 5 6 3 1 2
整形数组元素的最小值是1
Program ended with exit code: 0


没有出错吧
回复 使用道具 举报
haohaoxuexi 发表于 2014-4-5 23:43
请输入整形数组的元素个数:
6
请输入6个元素:

为什么在我xcode里是错的呢,输出结果老是为0
回复 使用道具 举报
简单看了一下程序,第一句int *array在你这里相当于野指针。虽然程序编译可以通过,但是array指针的指向仍然不确定,不一定指向的一定是整型数组。所以还是定义一个整型数组int array【100】这样的好一些或者是将array指针确定指向一个数组。
修改:
#include <stdio.h>

int min(int *array,int length)
{
    int min=0;

    for (int i=0; i<length-1; i++) {
        if(array[i+1]<array[min])
            array[min]=array[i+1];
    }
    printf("整形数组元素的最小值是%d\n",array[min]);
    return 0;
}

int main()
{
    int array[100];//定义一个数组; /***************修改**************/
    int length;//定义数组长度;
    printf("请输入整形数组的元素个数:\n");

    scanf("%d",&length);//获取数组长度
    printf("请输入%d个元素:\n",length);

    //获取一个数组
    for (int i=0; i<length; i++) {
        scanf("%d",&array[i]);
    }

    min(array,length);//获取函数最小值
    return 0;
}

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
Freedam 发表于 2014-4-5 23:50
简单看了一下程序,第一句int *array在你这里相当于野指针。虽然程序编译可以通过,但是array指针的指向仍 ...

谢谢~~~~
回复 使用道具 举报
简单看了下,这个明显有问题,min和arry[i+1]进行交换时,肯定需要第三方变量的,比如说两个杯子换水,不可能不借助第三个空杯子,就直接给两个被子将水换下,所以可以这样子
int tamp=min;
  min=arry[i+1];
arry[i+1]=tamp;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马