给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按升序输出。 输入描述 第1行为 N; 第2行为 N 个正整数,其间用空格间隔。 输出描述 增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。使用C语言
时间: 2024-10-14 13:17:25 浏览: 43
Python例题(一) 输入一个正整数判断是不是素数
在C语言中,你可以创建一个函数来遍历给定的整数数组,只对奇数进行操作并将其存储在一个新数组中。然后对这个新数组进行排序并打印出来。以下是一个简单的示例程序:
```c
#include <stdio.h>
#include <stdlib.h> // 用于malloc和free
#include <stdbool.h>
#include <string.h> // 用于字符串连接
// 判断是否为奇数
bool is_odd(int num) {
return num % 2 != 0;
}
// 创建一个新的数组来存储奇数
void store_odds(int* input, int n, int* output) {
int count = 0; // 记录奇数的数量
for (int i = 0; i < n; i++) {
if (is_odd(input[i])) {
output[count++] = input[i];
}
}
}
// 冒泡排序奇数数组
void bubble_sort(int arr[], int len) {
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 打印结果
void print_sorted_odds(int* arr, int length) {
char* result = malloc(length * sizeof(char) + 1); // 分配内存存储结果
for (int i = 0; i < length; i++) {
result[i] = arr[i] + '0'; // 将数字转换为字符并添加到结果字符串
if (i != length - 1) {
result[i] = ',';
}
}
result[length] = '\0'; // 结束字符串
printf("%s\n", result);
free(result); // 释放内存
}
int main() {
int N;
scanf("%d", &N);
int input[N], output[N]; // 输入和输出数组
// 读取输入数组
for (int i = 0; i < N; i++) {
scanf("%d", &input[i]);
}
// 存储和排序奇数
store_odds(input, N, output);
bubble_sort(output, count);
// 输出结果
print_sorted_odds(output, count);
return 0;
}
```
阅读全文