| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 745 人关注过本帖
标题:顺序排序这样写程序为什么会错误呢/
只看楼主 加入收藏
饶强c
Rank: 1
等 级:禁止访问
帖 子:15
专家分:7
注 册:2014-7-10
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:7 
顺序排序这样写程序为什么会错误呢/
这是我写的一个对整数数组按从小到大的顺序排序的程序,请大家帮我看看哪里写错了,谢谢了;
程序代码:
/**************************************************************************************************************
*file:paixu.c
*
*function:顺序排序程序
*
***************************************************************************************************************/
#include<stdio.h>
#define max 1000 //定义最大数组长度1000;
#define sign 123//定义终止输入标识符:数字123;
static int findsmallindex(int array[max],int i,int n);//寻找最小整数下标函数声明;
static void swapinteger (int array[max],int i,int smallindex);//交换数组元素函数声明;
void main()
{
    int array[max],n=0,value,smallindex,i;
    printf("this program sort the first n elements in array into increasing numberical order");              
    printf("the length of the array must less than 1000\n");
    printf("please input the data and use the integer 123 as terminate sign\n");             
    while(1)//用户输入数据存入数组array[max]循环;
    {
        scanf("%d",&array[n]);
        value=array[n];
        if(value==sign)
        {
            printf("terminate sign is occur\n");
            break;
        }
        if(n>=1000)
        {
            printf("the input is too many\n");
            break;
        }
        n++;
    }
    for(i=0;i<n-1;i++)//排序循环;
    {
        smallindex=findsmallinteger(array[max],i,n-1);//寻找i到n的最小整数下标smallinteger函数;
        swapinteger(array[max],i,smallindex);//交换array[i]和array[smallindex]函数;
    }
    for(i=0;i<=n-1;i++)//输出循环;
    {
        printf("%d\t",array[i]);
    }
    printf("\n");
}
//子函数1:寻找最小整数的下标函数;
static int findsmallinteger(int array[max],int i,int n)
{
    int j,smallest=array[i],k=i;
    for(j=i+1;j<=n;j++)
    {
        if(array[j]<smallest)
        {
            smallest=array[j];
            k=j;
        }
    }
    return (k);
}

 //子函数2:交换数组元素函数;
static void swapinteger (int array[max],int i,int smallindex)
{
    int temp;
    temp=array[i];
    array[i]=array[smallindex];
    array[smallindex]=temp;
}


搜索更多相关主题的帖子: function file 
2014-07-14 21:29
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:1 
smallindex=findsmallinteger(array[max],i,n-1);//寻找i到n的最小整数下标smallinteger函数;
swapinteger(array[max],i,smallindex);//交换array[i]和array[smallindex]函数;

坚持----------------------------------唯一的道路
shit ! ! !
2014-07-15 09:27
饶强c
Rank: 1
等 级:禁止访问
帖 子:15
专家分:7
注 册:2014-7-10
收藏
得分:0 
回复 2 楼 wssy213
这两个函数错了吗?
2014-07-15 09:42
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:3 
int array[max]是个数组吧,  请问楼主在代码里,出现array[0]是什么东西?array[1]呢?
array[2]呢?
array[3]呢?
array[4]呢?
array[5]呢?

总有那身价贱的人给作业贴回复完整的代码
2014-07-15 10:11
饶强c
Rank: 1
等 级:禁止访问
帖 子:15
专家分:7
注 册:2014-7-10
收藏
得分:0 
回复 4 楼 embed_xuel
请版主明示,我还是没看出来哪里出现了array[0]的,你方便吧具体的代码段圈一下吗?
2014-07-15 10:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:6 
以下是引用饶强c在2014-7-15 10:45:29的发言:

请版主明示,我还是没看出来哪里出现了array[0]的,你方便吧具体的代码段圈一下吗?


    for(i=0;i<n-1;i++)//排序循环;
    {
         smallindex=findsmallinteger(array[max],i,n-1);//寻找i到n的最小整数下标smallinteger函数;
        swapinteger(array[max],i,smallindex);//交换array[i]和array[smallindex]函数;
    }

这里描红的,你传的是数组中的单个元素,不是传数组!而且,它实际上是传的array[1000]这个元素,溢出了。

授人以渔,不授人以鱼。
2014-07-15 10:48
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 5 楼 饶强 c
我不是说具体的代码。
举个例子:
int a[5];  //a是个数组吧
a[0]=0;
a[1]=1;
a[2]=2;
a[3]=3;
a[4]=4;

请问:
a[0]表示什么?
a[1]表示什么?
a[2]表示什么?
a[3]表示什么?
a[4]表示什么?

总有那身价贱的人给作业贴回复完整的代码
2014-07-15 10:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
函数原型的声明就不对。明显是一气写完了编译不通过的,当然不知道错在哪里了。你写一行或几行就编译一下,出错了就肯定在刚写的有问题,一气写完了再编译,那么多行你怎么猜是哪行的问题。编译器虽然告诉了你哪行有问题,但你不会贴编译信息,自然表明你不会看编译提示,更糟糕。

在vc中按一下F5就可以执行编译,马上有结果。在高版本VC中更方便,代码写错了马上就有红色波浪线标出(它是后台多任务编译的)。

[ 本帖最后由 TonyDeng 于 2014-7-15 10:59 编辑 ]

授人以渔,不授人以鱼。
2014-07-15 10:54
快速回复:顺序排序这样写程序为什么会错误呢/
数据加载中...
 
   



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

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