标题:关于选择排序的一道难题
只看楼主
棽华
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-12-14
 问题点数:0 回复次数:4 
关于选择排序的一道难题
,这是一道让我发晕的题目,本人经历了半个小时的苦楚搜寻还是没有找到错误之处,忘高手指点:
应该是错在自定义函数那块吧

原题:程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入一个正整数 n (1<n<=10),再输入 n 个整数存入数组 a 中,用选择法将数组 a 中的元素按升序排列,最后输出排序后的数组元素。
要求定义并调用函数 sort(a,n),它的功能是采用选择排序算法,将数组 a 的前 n 个元素按从小到大的顺序排序,函数形参 a 的类型是整型指针,形参n的类型是int,函数的类型是void。
输入输出示例:括号内为说明
输入
3           (repeat=3)
4           (n=4)
5 1 7 6
3           (n=3)
1 2 3
5           (n=5)
5 4 3 2 1
输出
After sorted: 1 5 6 7  
After sorted: 1 2 3
After sorted: 1 2 3 4 5

下面是我编的,但是不知道哪里错了,郁闷,
#include <stdio.h>
void sort(int a[],int n);
int main(void)
{
    int i, n;
    int repeat, ri;
    int a[10];

    scanf("%d", &repeat);
    for(ri = 1; ri <= repeat; ri++){
        scanf("%d", &n);
        for(i = 0; i < n; i++)
            scanf("%d", &a[i]);
            sort(a,n);
/*---------*/
        printf("After sorted: ");
        for(i = 0; i < n; i++)
            printf("%d ", a[i]);
        printf("\n");
    }
    void sort(int a[],int n){
         int i,j;
         int index,temp;
         
         for(i=0;i<n;i++){
                         index=i;
                         for(j=i+1;j<n;j++)
            if(a[index]>a[j]){
         index=j;
            temp=a[index];
            a[index]=a[j];
            a[j]=temp;            
                          }     
                           }
                                 }
                                       
         
   
搜索更多相关主题的帖子: 难题 选择 
2010-12-14 18:54
myang
Rank: 4
等 级:业余侠客
威 望:1
帖 子:88
专家分:208
注 册:2009-8-28
得分:0 
#include <stdio.h>
void sort(int a[],int n);
int main(void)
{
    int i, n;
    int repeat, ri;
    int a[10];

    scanf("%d", &repeat);
    for(ri = 1; ri <= repeat; ri++){
        scanf("%d", &n);
        for(i = 0; i < n; i++)
            scanf("%d", &a[i]);
            sort(a,n);
/*---------*/
        printf("After sorted: ");
        for(i = 0; i < n; i++)
            printf("%d ", a[i]);
        printf("\n");
    }
}//兄弟哦,少了一个大括号呀!!!
    void sort(int a[],int n){
         int i,j;
         int index,temp;
         
         for(i=0;i<n;i++){
                         index=i;
                         for(j=i+1;j<n;j++)
            if(a[index]>a[j]){
         index=j;
            temp=a[index];
            a[index]=a[j];
            a[j]=temp;            
                          }     
                           }
                                 }

QQ群:214453442
2010-12-15 22:32
s545167866
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2010-11-28
得分:0 
#include <iostream>
using namespace std;

void Sort(int *a, int n);
void Print(int *a, int n);

int main()
{
    int repeat;//重复次数
    int *a = 0;//整形数组
    int n = 0;//数组中元素个数

    cin >> repeat;
    for (int i=0; i<repeat; ++i)
    {
        cin >> n;
        a = new int[n];
        for (int j=0; j<n; ++j)
        {
            cin >> a[j];
        }
        Sort(a, n);
        cout << "After sort:";
        Print(a, n);
        delete [] a;
        a = 0;
    }

    return 0;
}

void Sort(int *a, int n)
{
    if (a == 0)
    {
        return;
    }

    for (int i=0; i<n-1; ++i)
    {
        int lowIndex = i;
        int temp;
        for (int j=n-1; j>i; --j)
        {
            if (a[j] < a[lowIndex])
            {
                lowIndex = j;
            }
        }

        if (i != lowIndex)
        {
            temp = a[lowIndex];
            a[lowIndex] = a[i];
            a[i] = temp;
        }
    }
}

void Print(int *a, int n)
{
    if (0 == a)
    {
        return;
    }
    for (int i=0; i<n; ++i)
    {
        cout << a[i] << "  ";
    }
    cout << endl;
}
2010-12-16 20:58
qianhaimin
Rank: 1
等 级:新手上路
帖 子:8
专家分:6
注 册:2010-10-1
得分:0 
你写的习惯太差了。。
2010-12-20 11:31
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
得分:0 
靠,C问题不要跑到C++来好不?
2010-12-26 07:54



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




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

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