题目:奇数的取出
蒜头君给了一个长度为 NN(不大于 500500)的正整数序列(正整数的值不超过 NN),请将其中的所有奇数取出,并按升序输出。
输入格式
共 22 行:
第 11 行为 NN;
第 22 行为 NN 个正整数,其间用空格间隔。
输出格式
增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。
Sample Input
10 1 3 2 6 5 4 9 8 7 10
Sample Output
1,3,5,7,9
掌握要点:冒泡循环***
a,做两次 for 循环
b.比较前后两个数,并交换大小
解决问题
运行代码
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int a[n+10];//防止数组越界 *
int q=0;//数组下标从 0 开始
for(int i=0;i<n;i++){
int x;
scanf("%d",&x);//输入测试数据
//判断奇数并保存
if(x%2!=0){
a[q]=x;
q++;//数组下标加加等价于q=q+1
}
}
//冒泡排序模板 ***
int t;
for(int i=0;i<q;i++){//q等于保存的奇数个数
for(int j=i+1;j<q;j++){//j从i+1开始,始终大于i
if(a[i]>a[j]){//比较前一个和后一个数大小并交换*
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(int i=0;i<q;i++){
printf("%d",a[i]);//输出处理过的数据
if(i!=q-1){//标点符号处理并输出
printf(",");
}
}
return 0;
}