给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按升序输出。c语言
时间: 2024-06-13 18:07:04 浏览: 215
以下是C语言的代码实现,可以将一个长度为N的正整数序列中的所有奇数取出,并按升序输出:
```c
#include <stdio.h>
int main()
{
int N;
scanf("%d", &N);
int arr[N], odd[N], j = 0;
for (int i = 0; i < N; i++) {
scanf("%d", &arr[i]);
if (arr[i] % 2 != 0) {
odd[j] = arr[i];
j++;
}
}
for (int i = 0; i < j - 1; i++) {
for (int k = 0; k < j - i - 1; k++) {
if (odd[k] > odd[k + 1]) {
int temp = odd[k];
odd[k] = odd[k + 1];
odd[k + 1] = temp;
}
}
}
for (int i = 0; i < j; i++) {
printf("%d ", odd[i]);
}
return 0;
}
```
相关问题
c语言给定一个长度为 N(不大于 500)的正整数序列,请将其中的所有奇数取出,并按升序输出
好的,我可以帮你写一个 C 语言程序解决这个问题。以下是代码:
```c
#include <stdio.h>
int main() {
int n, i, j, temp;
int a[500];
// 输入序列长度和序列元素
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
// 冒泡排序,将奇数按升序排在前面
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (a[j] % 2 == 0 && a[j+1] % 2 == 1) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
// 输出奇数序列
for (i = 0; i < n; i++) {
if (a[i] % 2 == 1) {
printf("%d ", a[i]);
}
}
printf("\n");
return 0;
}
```
程序的思路是先输入序列长度和元素,然后通过冒泡排序将奇数按升序排在前面,最后输出奇数序列。程序中用到了取余操作符 `%`,用来判断一个数是奇数还是偶数。
给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按升序输出。 输入描述 第1行为 N; 第2行为 N 个正整数,其间用空格间隔。 输出描述 增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。使用C语言
在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;
}
```
阅读全文