偶数降序输出
给定一个长度为N(不大于500)的正整数序列,请将其中的所有偶数取出,并按降序输出。
时间限制:1000
内存限制:65536
输入
共2行: 第1行为 N; 第2行为 N 个正整数,其间用空格间隔。
输出
降序输出的偶数序列,数之间以空格间隔。数据保证至少有一个偶数。
样例输入
10
1 3 2 6 5 4 9 8 7 10
样例输出
10 8 6 4 2
你把序列扔到数组里。用算法库的sort排序一下就行了。
#include <stdio.h>
#include <algorithm>
using namespace std;
#pragma warning(disable:4996)
bool cmp1(int a, int b)//int为数组数据类型
{
return a > b;//降序排列
//return a<b;//默认的升序排列
}
int main() {
int arrs[1000];
int n = 0;
int count = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int x = 0;
scanf("%d", &x);
if (x % 2 == 0) {
arrs[count++] = x;
}
}
sort(arrs, arrs + count, cmp1);
for (int i = 0; i < count; i++) {
printf("%d ", arrs[i]);
}
}
#include "stdio.h"
#include<stdlib.h>
//冒泡排序
void choose(int a[],int n){
int i,j,temp;
for(i=1;i<n;i++)
{
for(j=n-1;j>=i;j--)
{
if(a[j]>a[j-1]){
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
}
//输出
void output(int a[],int n){
int i;
for(i=0;i<n;i++)
printf("%d\t",a[i]);
}
void main()
{
int a[1000];
int b[1000];
int n;
int i;
int index=0;
printf("请输入N:");
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
if(a[i]%2==0){
b[index++] = a[i];
}
}
//冒泡排序
choose(b,index);
//输出
output(b,index);
}
#include <iostream>
using namespace std;
int jishu(int N, int shuzu[500])
{
int b = 0;
for (int a = 0; a < N; a++)
if (shuzu[a] % 2 == 0)
{
shuzu[b] = shuzu[a];
b++;
}
return b;
}
void paixu(int N, int shuzu[500])
{
int b;
b = jishu(N, shuzu);
int a, k, j;
for (a = 0; a < b; a++)
for (k = a + 1; k < b; k++) //排序
{
if (shuzu[a] < shuzu[k])
{
j = shuzu[a];
shuzu[a] = shuzu[k];
shuzu[k] = j;
}
}
for (a = 0; a < b; a++)
cout << shuzu[a] << " ";
}
int main()
{
int N, shuzu[500], a;
cin >> N;
for (a = 0; a < N; a++)
cin >> shuzu[a];
paixu(N, shuzu);
return 0;
}
供参考:
#include<stdio.h>
int main()
{
int a[500],n,in,i,k=0,t;
scanf("%d",&n);
while(n--)
{
scanf("%d",&in);
if(in%2==0)
{
if(k==0) a[k++] = in;
else{
a[k++] = in;
for(i=0;i<k;i++)
if(a[k-1] > a[i])
{t=a[k-1];a[k-1]=a[i];a[i]=t;}
}
}
}
for(i=0;i<k;i++)
printf("%d ",a[i]);
return 0;
}