C语言编程:实现将任意一个给定的字符数组中下标值为奇数的元素从大到小排列,其它元素不变
2013-07-14
展开全部
这样,我给你实现方法:
在原来的数组基础上,在添加一个数组(str)
使用FOR循环,循环输出原来的数裂耐组(但把那个i++改为i=i+2,这样就取得了奇数位的值)
用新的数组储存这些字符串
然后对新的数组进行排序操作
如:string temp=str[0];
循环新的数组,在里面进行判段和排序换肆毕春位
最后在进行对原数组的循环操作将原来的奇数为的值替换为新数组的数碧值
就可以了
如有实现上的问题,可以继续问,我一般在线
在原来的数组基础上,在添加一个数组(str)
使用FOR循环,循环输出原来的数裂耐组(但把那个i++改为i=i+2,这样就取得了奇数位的值)
用新的数组储存这些字符串
然后对新的数组进行排序操作
如:string temp=str[0];
循环新的数组,在里面进行判段和排序换肆毕春位
最后在进行对原数组的循环操作将原来的奇数为的值替换为新数组的数碧值
就可以了
如有实现上的问题,可以继续问,我一般在线
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);
}
#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);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
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;
}
只需在原来比较排序裤判旅的基础上,在比较时让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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-14
展开全部
不添加一个数组可以吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询