用c语言二维数组写出从键盘输入10个整数,计算其奇数的个数并输出
时间: 2024-05-01 15:16:50 浏览: 124
```c
#include <stdio.h>
int main() {
int arr[10];
int count = 0; // 计数器,用于记录奇数的个数
printf("请输入10个整数:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
if (arr[i] % 2 != 0) { // 判断是否为奇数
count++; // 计数器加一
}
}
printf("奇数的个数为:%d\n", count);
return 0;
}
```
相关问题
(用c语言)随机产生20个不大于10的自然数,将其存储在一个二维数组中,且偶数与奇数分别存储在不同列上。输出该数组并统计偶数与奇数的个数
在C语言中,你可以使用`rand()`函数生成随机数,并结合`srand()`设置随机种子以保证每次运行程序都会得到不同的结果。首先,创建一个二维数组来存储20个随机数,然后使用条件判断将它们分开存储。下面是简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROWS 4 // 20个数需要4行,因为最大值是10
#define COLS 5 // 每行可以容纳的最大数字个数
int main() {
int arr[ROWS][COLS];
srand(time(0)); // 设置随机种子
int count_even = 0;
int count_odd = 0;
for (int i = 0; i < ROWS; i++) { // 行
for (int j = 0; j < COLS / 2; j++) { // 偶数位置
arr[i][j] = rand() % 10 + 1; // 随机生成1到10的整数
if (arr[i][j] % 2 == 0) {
count_even++;
}
}
for (int k = COLS / 2; k < COLS; k++) { // 奇数位置
arr[i][k] = rand() % 10 + 1;
if (arr[i][k] % 2 != 0) {
count_odd++;
}
}
}
printf("Array:\n");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
printf("Number of even numbers: %d\n", count_even);
printf("Number of odd numbers: %d\n", count_odd);
return 0;
}
```
这段代码会生成一个4x5的二维数组,其中前两列存储偶数,后两列存储奇数。注意,由于每个数字都是从1到10随机选择的,所以偶数和奇数的数量可能会有所不同。
用C语言解决将一维整型数组调整为左右两部分,左边所有元素均为奇数,右边所有元素均为偶数。 【输入】 第一行一个整数,表示该数组元素的个数;第二行n个整数,表示该数组的n个元素值。 【输出】 输出调整后的数组元素,每个元素后面用一个空格分隔,要求所有奇(偶)数相对位置不变。
在C语言中,你可以通过两个指针分别指向数组的头和尾,然后遍历整个数组,对奇数和偶数进行分类并交换。这里是简单的步骤:
1. **读取输入**:
- 首先读取数组长度 `n` 和一个一维整型数组 `arr[]`。
2. **初始化指针**:
- 创建两个指针 `left` 和 `right`,初始时指向数组的第一个元素(即索引0)和最后一个元素(即索引`n-1`)。
3. **遍历数组**:
- 当 `left < right` 时,进入循环:
- 检查 `arr[left]` 是否为奇数,如果是,则不动它,`left++`;
- 否则,检查 `arr[right]` 是否为偶数,如果是,则不动它,`right--`;
- 如果此时 `arr[left]` 是偶数而 `arr[right]` 是奇数,交换它们的位置,并更新 `left` 和 `right`。
4. **输出结果**:
- 一旦 `left >= right`,说明已经处理完了所有奇偶元素,可以直接遍历数组打印出来。注意,在输出前,要判断当前元素是否应保留原顺序(即左半部分的元素),还是应该按照新的奇偶分组。
5. **结束程序**:
- 结束循环后,程序退出。
下面是一个简化的伪代码示例:
```c
int main() {
int n, arr[100];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int left = 0, right = n - 1;
while (left < right) {
if (arr[left] % 2 != 0) { // 奇数
while (left < right && arr[right] % 2 == 0) { // 找到右侧第一个偶数
right--;
}
if (left < right) {
swap(&arr[left], &arr[right]); // 交换
}
left++;
} else { // 偶数
left++; // 直接向右移动
}
}
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
// 请注意,上述代码中 `swap()` 函数需要你自己实现,用于交换两个变量的值。
```
阅读全文
相关推荐














