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 编辑 ]