C语言编程:实现将任意一个给定的字符数组中下标值为奇数的元素从大到小排列,其它元素不变

紧急,紧急,比十万仲要火急,请C人才帮忙打救在水深火热的小弟

这样,我给你实现方法:
在原来的数组基础上,在添加一个数组(str)
使用FOR循环,循环输出原来的数组(但把那个i++改为i=i+2,这样就取得了奇数位的值)
用新的数组储存这些字符串

然后对新的数组进行排序操作
如:string temp=str[0];
循环新的数组,在里面进行判段和排序换位

最后在进行对原数组的循环操作将原来的奇数为的值替换为新数组的值
就可以了

如有实现上的问题,可以继续问,我一般在线
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-14
///这里用了桶排.

#include <stdio.h>
void main()
{
char str[1000];
int a[100];
int i,k,j;
for(i=0;i<100;i++) a[i]=0;
scanf("%s",&str);
for(i=0;str[i]!='\0';i++)
if(i%2==0) a[str[i]]++;
k=0;
for(i=99;i>=0;i--)
{
for(j=0;j<a[i];j++)
{
str[k]=i;
k=k+2;
}
}
printf("%s\n",str);
}本回答被网友采纳
第2个回答  2013-07-14
题解:我给出一个比较容易理解的方法,如果对时间没有过分要求或者数组元素比较少的话可以考虑
只需在原来比较排序的基础上,在比较时让i只取奇数位即可。即,i初值为一,每次加2(i += 2)。
#include <stdio.h>
#include <string.h>
int main()
{
char str[100], flag;
int len, i, j;
scanf("%s", str);
len = strlen(str);
for(i = 1; i < len; i += 2)
{
for(j = i; j < len; j += 2)
{
if(str[i] < str[j])
{
flag = str[i];
str[i] = str[j];
str[j] = flag;
}
}
}
puts(str);
return 0;
}
第3个回答  2013-07-14
不添加一个数组可以吗

编写程序,实现将字符串str中下标值为偶数的元素由小到大排序,其他元素...
main(){ int i=0,j;char t,str[40];\/\/设定为字符变量 printf("input the string:\\n");gets(str);for(i=0;str[i]!='\\0'||str[i+1]!='\\0';i=i+2){ for(j=i+2;str[j]!='\\0'||str[j+1]!='\\0';j=j+2)\/\/从下一个字符开始 if(str[i]>str[j]){ t=str[j]...

用C语言编写程序,将字符串a中下标值为偶数的元素由小到大排序,其他元素...
吧循环中的i++变成i+=2就可以,其他的不变 如 for(i=0;i<N;i++)for(j=i+1;j<N;j++)if(a[i]<a[j]){ t=a[i];a[i]=a[j];a[j]=t;} 变成 for(i=0;i<N;i+=2)for(j=i+2;j<N;j+=2)if(a[i]

c语言中比较一个数组中元素的大小
int _max = 0; \/\/保存最大元素下标,如果需要记录那个元素最大 for(int i=1; i<10; i++) \/\/ 10为数组元素数量 { if( a[i]>max ) \/\/比较元素大小,记录最大元素及其下标 { max = a[i];_max = i;} } 最后 a[_max] 就是最大元素,值同时也保存在变量max里。

...并找出数组元素中最大值和最小值及其相应下标!
1.编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。要求:(1)数组为整型数组(10个元素)。(2)使用scanf函数实现数组元素的输入。在输入前给出必要的提示。(3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值...

怎样用C语言对一串整行数从大到小排序
在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点, 并且对插入下一个数没有提供任何帮助。如果比较相隔较远距离(称为 增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除 多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现 了这一思想。算法先将要排序的一组数按某个...

用C语言编程.写出一函数,求出有N个元素的整数数组的最大值及其...
楼主,我的程序如下。函数max读入一个n元素的数组a,返回其中最大元素的地址。这样,在调用max的函数中(这里是main),可以通过两种运算分别得到最大元素的值和它的下标(见main中注释)include <stdio.h> int max(int * a, int n){ int i;int * p = a;for ( i = 0; i < n; i++ ...

编程实现:求一个一维整型数组的最大值及下标,数组长度为10?_百度知 ...
;max_index = i;} } printf("The maximum value is %d, and it is at index %d.\\n", max_value, max_index);return 0;} 输出:The maximum value is 9, and it is at index 5.这段代码会初始化一个长度为 10 的整型数组 a,然后遍历数组中的所有元素,找到最大值并记录下标。

定义一个一维整型数组,有10个元素。(5,4,9,2,6,11,14,8,10,16)?
int diff(int x, int y) { \/\/ 求差函数 if (x > y)return x - y;else return y - x;} int main() { int a[10] = {5,4,9,2,6,11,14,8,10,16}; \/\/ 定义数组并初始化 int max = a[0], min = a[0], sum, i;printf("下标为奇数的元素: ");for (i = 1; i...

将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请问这个...
for(i=0; i<k-2; i+=2)for(j=i+2; j<k; j++ )if( a[i]>a[j] )printf("\\n");可以不要puts(a)会自动换行

C语言编程题:定义一个长度为10的数组,求最大值及下标。
C语言程序如下:include <stdio.h> void fun(int a[],int n,int *k){ int i,maxxr,j;maxxr=a[0];for(i=0;i<n;i++){ if(maxxr<a[i]){ maxxr=a[i];} } for(i=0;i<n;i++){ if(maxxr==a[i]){ j=i;break;} } k=j;} int main(void){ int a[10]={ 876,...

相似回答