C语言编程 编写程序,从键盘输入一个字符串放在字符数组a中,用选择法将a中的有效字符按降序排列

C语言编程 编写程序,从键盘输入一个字符串放在字符数组a中,用选择法将a中的有效字符按降序排列

选择法 能运行成功 谢谢

第1个回答  推荐于2018-05-06
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void inOrder(char array[], int n );
int main(int argc, char *argv[])
{

char temp[100];
printf("请输入字符串:\n");
gets(temp);
char a[strlen(temp)+1];
strcpy(a,temp);
inOrder(a,strlen(temp));
int k;
for(k=0; k<strlen(temp); k++)
{
printf("%c",a[k]);
}
system("pause");
return 0;
}
//选择法排序函数
void inOrder(char array[], int n)
{
int i, j;
char temp;
for(i=0; i<n-1; i++)
{
for(j=i+1; j<n; j++)
{
if(array[j]>array[i])
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}

在DEV C++中编写可用,temp数组只是暂时存放输入字符串的,它的大小可根据你实际需要调大调小。本回答被提问者采纳
第2个回答  2010-10-31
我用C#的,给你一个思路,我懒得写了。

1、将字符串分离到字符数组里
2、判断字符是不是有效
3、将有效字符另存
4、将另存的数组循环排列
5、合并成字符串本回答被网友采纳
第3个回答  2010-11-04
void choise(int *a,int n)
{
int i,j,k,temp;
for(i=0;i<n-1;i++){
k=i;/*给记号赋值*/
for(j=i+1;j<n;j++)
if(a[k]>a[j]) k=j;/*是K总是指向最小元素*/
if(i!=k){/*当k!=j是才交换,否则a[i]即为最小*/
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}

参考资料:http://wenku.baidu.com/view/fa5387c69ec3d5bbfd0a7453.html