从一组一位数组中删除所有的matlab抽取奇数列数组并输出,求教,想知道我错在了哪里。

C语言编程:实现将任意一个给定的字符数组中下标值为奇数的元素从大到小排列,其它元素不变
C语言编程:实现将任意一个给定的字符数组中下标值为奇数的元素从大到小排列,其它元素不变
紧急,紧急,比十万仲要火急,请C人才帮忙打救在水深火热的小弟
///这里用了桶排.

#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);
}
略懂社热议
这样,我给你实现方法:
在原来的数组基础上,在添加一个数组(str)
使用FOR循环,循环输出原来的数组(但把那个i++改为i=i+2,这样就取得了奇数位的值)
用新的数组储存这些字符串

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

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

如有实现上的问题,可以继续问,我一般在线


题解:我给出一个比较容易理解的方法,如果对时间没有过分要求或者数组元素比较少的话可以考虑
只需在原来比较排序的基础上,在比较时让i只取奇数位即可。即,i初值为一,每次加2(i += 2)。
#include &stdio.h&
#include &string.h&
int main()
{

char str[100],

int len, i,

scanf(&%s&, str);

len = strlen(str);

for(i = 1; i & i += 2)

{

for(j = j & j += 2)

{

if(str[i] & str[j])

{

flag = str[i];

str[i] = str[j];

str[j] =

}

}

}

puts(str);

return 0;
}

不添加一个数组可以吗
略懂社热议
等待您来回答
编程领域专家
&SOGOU - 京ICP证050897号如何重新排列数组使得数组左边为奇数,右边为偶数,并使得空间复杂度为O(1),时间复杂度为O(n) - ... - 推酷
如何重新排列数组使得数组左边为奇数,右边为偶数,并使得空间复杂度为O(1),时间复杂度为O(n) - ...
思路分析:
类似快速排序的处理。可以用两个指针分别指向数组的头和尾,头指针正向遍历数组,找到第一个偶数,尾指针逆向遍历数组,找到第一个奇数,使用引用参数传值交换两个指针指向的数字,然后两指针沿着相应的方向继续向前移动,重复上述步骤,直到头指针大于等于尾指针为止。
代码如下:
#include &stdafx.h&
#include &iostream&
void Swap(int& a, int& b)
int temp =
void ReverseArray(int arr[], int len)
if (arr == NULL || len &= 0)
printf(&数组中无元素,变换毛线啊。&);
int begin = 0;
int end = len - 1;
while (begin & end)
while (arr[begin] % 2 == 1 && end&begin)
while (arr[end] % 2 == 0 && end & begin)
Swap(arr[begin], arr[end]);
int main()
int array[] = { 1, 23, 2, 34, 21, 45, 26, 22, 41, 66, 74, 91, 17, 64 };
int len = sizeof(array) / sizeof(array[0]);
printf(&原数组为:&);
for (i = 0; i & i++)
printf(&%d &, array[i]);
printf(&\n&);
ReverseArray(array, len);
printf(&经过变换后的数组为:&);
for (i = 0; i & i++)
printf(&%d &, array[i]);
printf(&\n&);
getchar();
效果如图:
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
浙ICP备号-2
扫一扫,把题目装进口袋最后一个广告位招租
PythonTip是一个公益项目,网站托管于付费服务器。由于目前访问人数飙升,每日流量等资源消耗较多,现出售广告位以支付每月机器费用,有意者请加qq联系站长。~
将一个数组中的偶数放前面奇数放后面
一个数组由若干个整数组成,现要求:将偶数放到前面,奇数放到后面,并输出数组。
解决(python)
#coding:utf-8
is_odd_number = lambda data:(data%2!=0)
def odd_even_sort(lst):
"""利用list conprehension"""
tmp_list1 = [item for item in lst if is_odd_number(item)]
tmp_list2 = [item for item in lst if not is_odd_number(item)]
test_lst = [7,9,12,5,4,9,8,3,12,89]
print (odd_even_sort(test_lst))
本问题由黄老师提供并解决,他的微博
解决(python)
def odd(x):return x%2==1
#判断是否为奇数,是则返回true
def even(x):return x%2==0
if __name__=="__main__":
test_lst = [7,9,12,5,4,9,8,3,12,89]
print filter(even,test_lst)+filter(odd,test_lst)
#利用filter函数
解决 (racket 5.2.1)
#lang racket
; 定义函数 odd-even-separator
; 输入一个由整数构成的列表
; 输出一个新的列表, 其元素取自输入的列表
; 假设输入列表长度为 N, 列表元素中有 k 个偶数, N-k 个奇数
; 那么输出的列表中, 前 k 个元素就是输入列表中的 k 个偶数
; 后 N-k 个元素就是输入列表中的 N-k 个奇数.
(define (odd-even-separator num-array)
([odd-arr (filter odd? arr1)] 取出全部奇数形成新列表
[even-arr (filter even? arr1)] ; 取出全部偶数形成新列表
[separated-arr
(append even-arr odd-arr)]) 把两个新列表连接起来
(displayln separated-arr))) 打印到标准输出
; 函数调用, 正常运行后, 应该显示 (2 6 4 1 3 5 7 9)
(odd-even-separator '(1 3 2 6 5 7 9 4))
更多算法问题,请到:
原文链接:/articles/UVnAFvJ
阅读: 2737 |C 语言30道例题东大期末考试+答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C 语言30道例题东大期末考试+答案
上传于||文档简介
&&东​北​大​学​往​年​期​末​考​试​题​目​及​部​分​答​案
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩14页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 python怎么输出奇数 的文章

 

随机推荐