C语言编程

[复制链接]
查看11 | 回复3 | 2009-6-25 23:47:04 | 显示全部楼层 |阅读模式
比较傻的做法。数组A,用于保存原始数据。数组B,用于保存从小到大的排列结果。数组C,用于保存从大到小的排列结果。函数B,用于将一个数组按从小到大的顺序排列。函数C,用于将一个数组按从大到小的顺序排列。首先输入A,然后调用函数B,将结果保存在数组B中。然后调用函数C,将结果保存在数组C中。判断输入的是A还是D,输出对应的结果。
回复

使用道具 举报

千问 | 2009-6-25 23:47:04 | 显示全部楼层
#includevoid swap(int&,int&);void A(int*);void D(int*);void main(){ int num[10]; int i; char n; printf("输入10个数据:\n"); for(i=0;inum[j])
swap(num,num[j]);}void D(int *num){ int i,j; for(i=0;ivoid main(){ int a[10],i,j,b; char c; for(i=0;i0;i--)for(j=0;ja[j+1]){
b=a[j];
a[j]=a[j+1];
a[j+1]=b; }} scanf("%c",&c); if(c=='A')for(i=0;i=0;i--)printf("%d ",a);}scanf用的读取格式是"%d "所以你在输入的时候要按格式输入,举例:1 2 3 4 5 6 7 8 9 10 A要这么输。这可以算是这个程序的一个缺点吧。这个程序的大概内容就是先输入10个数,然后用冒泡法排序。根据输入字符判断,如果为A则正向输出数组(从a[0]到a[9]);否则逆序输出(从a[9]到a[0])能力所限,献丑了 大大们不要笑话
回复

使用道具 举报

千问 | 2009-6-25 23:47:04 | 显示全部楼层
#include #include int cmpa(const void *a,const void *b){ return *(int*)(a)-*(int*)(b);}int cmpd(const void *a,const void *b){ return *(int*)(b)-*(int*)(a);}void main(){ int a[10]; int i; for(i=0;i<10;i++) {scanf("%d",&a); } getchar(); char c; int f=1; while(f) {printf("please input A or D\n");scanf("%c",&c);if(c=='A'){ qsort(a,10,sizeof(int),cmpa); f=0;}else if(c=='D'){ qsort(a,10,sizeof(int),cmpd); f=0;}else printf("Error!"); } for(i=0;i<10;i++) {printf("%d ",a); } printf("\n");}
回复

使用道具 举报

千问 | 2009-6-25 23:47:04 | 显示全部楼层
用sort()函数排序,头文件#includeusing namespace std;main()函数中调用库函数sort,格式为sort(s,s+n);s是要排序的数组,n是数组长度。然后输入字符变量进行选择,如果是A,则从0到9输出,如果是D,则从9到0输出。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行