| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 286 人关注过本帖
标题:C问题,不能理解
只看楼主 加入收藏
shzlw
Rank: 2
等 级:论坛游民
帖 子:11
专家分:14
注 册:2010-10-2
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:3 
C问题,不能理解
#include<stdio.h>
#define N 10
int Ascending(int,int);
int Descending(int a,int b);
void swap(int *,int *);
void BubbleSort(int a[],int n,int(*compare)(int,int));
void Display(int a[],int n);
void main()
{
    int a[N]={12,34,21,46,89,54,26,8,17};
    int flag;
    while(1)
    {
        printf("输入1从小到大排列.\n输入2从大到小排列\n.输入3退出!\n");
        scanf("%d",&flag);
        switch(flag)
        {
        case 1:
            printf("排序前的数据顺序为");
            Display(a,N);
            BubbleSort(a,N,Ascending);
            printf("从小到大排序为:");
            Display(a,N);
            break;
        case 2:
            printf("排序前的数据顺序为");
            Display(a,N);
            BubbleSort(a,N,Descending);
            printf("从大到小的顺序为");
            Display(a,N);
            break;
        case 3:
            return;break;
        default:
            printf("输入不合法请重新输入");

        }


    }


}

void BubbleSort(int a[],int n,int(*compare)(int,int))
{
    int i,j;
    for(i=0;i<n;i++)
        for(j=0;j<n-1;j++)
            if((*compare)(a[j],a[j+1]))
                swap(&a[j],&a[j+1]);


}
int Ascending(int a,int b)
{
    if(a>b)
        return 1;
    else
        return 0;



}
int Descending(int a,int b)
{
    if(a<b)
        return 1;
    else
        return 0;



}
void Display(int a[],int n)
{
    int i;
    for(i=0;i<n;i++)
        printf("%4d",a[i]);
    printf("\n");
}
void swap(int *a,int *b)
{
    int t;
    t=*a;
    *a=*b;
    *b=t;

}


当我输入的是字符时 例如g时,为什么却不断的重复输出 :输入不合法请重新输入  输入1从小到大排列.输入2从大到小排列\.输入3退出!

[ 本帖最后由 shzlw 于 2010-10-17 11:55 编辑 ]
2010-10-17 10:39
自由战士89
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:387
注 册:2010-9-2
收藏
得分:10 
default:
            fflush(stdin);//清空输入缓存区
            printf("输入不合法请重新输入");


[ 本帖最后由 自由战士89 于 2010-10-17 11:41 编辑 ]
2010-10-17 11:37
自由战士89
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:387
注 册:2010-9-2
收藏
得分:0 
别忘了头文件#include<stdlib.h>
2010-10-17 11:43
sunmingchun
Rank: 4
来 自:安徽-滁州
等 级:业余侠客
帖 子:198
专家分:277
注 册:2010-4-2
收藏
得分:10 
我给你改了一下你看看,可是你的程序没有实现从大到小输出啊!我给你重新改了一下,你看看吧!
#include<stdio.h>
#define N 10
int Ascending(int,int);
int Descending(int a,int b);
void swap(int *,int *);
void BubbleSort(int a[],int n,int(*compare)(int,int));
void BubbleSort1(int a[],int n,int(*compare)(int,int));
void Display(int a[],int n);
void main()
{
    int a[N]={12,34,21,46,89,54,26,8,17};
    int flag;
    while(1)
    {
        printf("输入1从小到大排列.\n输入2从大到小排列\n.输入3退出!\n");
        scanf("%d",&flag);
        getchar();
        switch(flag)
        {
        case 1:
            printf("排序前的数据顺序为");
            Display(a,N);
            BubbleSort(a,N,Ascending);
            printf("从小到大排序为:");
            Display(a,N);
            break;
        case 2:
            printf("排序前的数据顺序为");
            Display(a,N);
            BubbleSort1(a,N,Ascending);
            printf("从大到小的顺序为");
            Display(a,N);
            break;
        case 3:
            return;break;
        default:
            printf("输入不合法请重新输入");

        }


    }


}

void BubbleSort(int a[],int n,int(*compare)(int,int))
{
    int i,j;
    for(i=0;i<n;i++)
        for(j=0;j<n-1;j++)
            if((*compare)(a[j],a[j+1]))
                swap(&a[j],&a[j+1]);


}
int Ascending(int a,int b)
{
    if(a>b)
        return 1;
    else
        return 0;



}
int Descending(int a,int b)
{
    if(a<b)
        return 1;
    else
        return 0;



}
void Display(int a[],int n)
{
    int i;
    for(i=0;i<n;i++)
        printf("%4d",a[i]);
    printf("\n");
}
void swap(int *a,int *b)
{
    int t;
    t=*a;
    *a=*b;
    *b=t;

}
void BubbleSort1(int a[],int n,int(*compare)(int,int))
{
    int i,j;
    for(i=0;i<n;i++)
        for(j=0;j<n-1;j++)
            if((*compare)(a[j+1],a[j]))
                swap(&a[j+1],&a[j]);


}


[ 本帖最后由 sunmingchun 于 2010-10-17 12:06 编辑 ]
2010-10-17 11:48
快速回复:C问题,不能理解
数据加载中...
 
   



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

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