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

\u6c42\u9ad8\u624b\u5e2e\u52a9\uff01\u7f16\u5199\u7a0b\u5e8f\uff0c\u4ece\u952e\u76d8\u8f93\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\u653e\u5728\u5b57\u7b26\u4e32\u6570\u7ec4a\u4e2d\uff0c\u7528\u9009\u62e9\u6cd5\u5c06a\u4e2d\u7684\u6709\u6548\u5b57\u7b26\u6309\u964d\u5e8f\u6392\u5217\u3002

\u8fd9\u4e2a\u7edd\u5bf9\u80fd\u884c\uff0c\u8bd5\u8bd5\u770b\u2026\u2026
#include
main()
{
char a[50]="";
int i=0,j,k,l,temp;
gets(a);
while(a[i]!='\0')
{
i++;

}
for(j=0;j<=i;j++)
{
l=j;
for(k=j+1;k<=i;k++)
if(a[l]<a[k]) l=k;
temp=a[l];a[l]=a[j];a[j]=temp;
}
puts(a);


}

\u3010\u7a0b\u5e8f\u3011
#include
#include
void sort(char *str)
{ int i,j;
char c;
for ( i=0;i<strlen(str)-1;i++ )
for ( j=i+1;j<strlen(str);j++ )
if ( str[i]<str[j] )
{ c=str[i]; str[i]=str[j]; str[j]=c; }
}
void main()
{ char s[256];
printf("\u8bf7\u8f93\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u5b57\u7b26\u6570\u6700\u591a255\u4e2a:"); scanf("%s",s);
sort(s);
printf("\u6392\u5e8f\u540e\u7ed3\u679c: %s\n",s);
}
\u3010\u8fd0\u884c\u7ed3\u679c\u3011
\u8bf7\u8f93\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u5b57\u7b26\u6570\u6700\u591a255\u4e2a:abioqujakdnciuyewqrjklvjlduioauior
\u6392\u5e8f\u540e\u7ed3\u679c: ywvuuuurrqqooonllkkjjjiiiieddcbaaa

#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数组只是暂时存放输入字符串的,它的大小可根据你实际需要调大调小。

我用C#的,给你一个思路,我懒得写了。

1、将字符串分离到字符数组里
2、判断字符是不是有效
3、将有效字符另存
4、将另存的数组循环排列
5、合并成字符串

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;
}
}
}

扩展阅读:少儿编程一共有几级 ... c++简单程序实例 ... 手机c++编程软件 ... 一节课教你学会c++视频 ... c++面试题 ... 如何自己编程做游戏 ... 少儿编程有必要学吗 ... c++编程可以自学吗 ... c++编程适合几岁学 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网