C++:键盘输入n,然后输入n个整数存入数组a,将奇数移到a的前端,要求见下。咋编?

要求:1)0<n<=100,越界默认100。2)当n>10时自动随机输入数据,n<=10时手工输入数据。3)移动时分别保持奇数和偶数的相对顺序。4)输出每10个数一行,行... 要求:
1)0<n<=100,越界默认100。
2)当n>10时自动随机输入数据,n<=10时手工输入数据。
3)移动时分别保持奇数和偶数的相对顺序。
4)输出每10个数一行,行末不留空格;最后一行不足10个数时要回行。
5)给代码作适当注释。
展开
 我来答
White_MouseYBZ
2020-09-14 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:5800万
展开全部


代码文本:

//#include "stdafx.h"//vc++ 6.0? Maybe should add this line.

#include <iostream>

#include "time.h"

using namespace std;

int main(int argc,char *argv[]){

int a[100],i,j,t,n;

cout << "Enter n...\n";

if(cin >> n,n>100 || n<1)

n=100;

if(n>10){//n>10时自动随机输入并显示

srand((unsigned)time(NULL));

for(i=0;i<n;){

cout.width(6);//输出格式占宽6列右对齐

cout << (a[i++]=rand());

if(i%10==0 || i==n)//输出10个数或最后一行末回车

cout << endl;

}

}

else{//n<=10时手工输入显示

cout << "Please enter " << n << " integer(s)(SEP by ' ')...\n";

for(i=0;i<n;cin >> a[i++]);

cout << endl;

}

for(i=0;i<n;i++){//把奇数移到a前端算法

if((a[i]&1)==0){

for(j=i+1;j<n;j++)

if(a[j]&1){//在i后找到奇数则保存至t

for(t=a[j];j>i;a[j--]=a[j-1]);//a[i]~a[j]顺序向后移一位

a[i]=t;//把a[j]拷贝到a[i];这样奇偶数的相对顺序不变

break;

}

if(j==n)//若i后无奇数了就中止外for操作

break;

}

}

cout << "OUT:\n";

for(i=0;i<n;){//输出

cout.width(6);//输出格式占宽6列右对齐

cout << a[i++];

if(i%10==0 || i==n)//输出10个数或最后一行末回车

cout << endl;

}

return 0;

}

xoaxa
2020-09-14 · TA获得超过8600个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3231万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

2020-09-14 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.7亿
展开全部
要完成把一个数组中所有的奇数移到前端的操作,实质上还是一个排序的操作。只是判断大小的情况是,如果前面的数是偶数,而后面的数是奇数,那么就交换这一对数。按这个原则进行排序,就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式