定义一个长度为10的整型数组,随机的输入10个数。要求统计该数组中奇数和偶数的个数,并把全部奇数和偶数输出来。分别用下面三种办法实现。 下标法 用a[i]实现 通过数组名计算元素的地址a+i 用指针变量p指向数组元素a[i]
时间: 2024-02-14 17:12:53 浏览: 168
3、 定义一个包含10个整数的数组,求该数组中的最大值、最小值、平均值与总和、并从小到大排序。
5星 · 资源好评率100%
下面是三种不同实现方式的代码示例:
1. 下标法
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int a[10], i, odd_count = 0, even_count = 0;
srand(time(NULL)); // 设置随机数种子
for (i = 0; i < 10; i++) {
a[i] = rand() % 100; // 生成0~99之间的随机数
if (a[i] % 2 == 0) {
even_count++; // 统计偶数的个数
} else {
odd_count++; // 统计奇数的个数
}
}
printf("数组中一共有%d个奇数,分别是:\n", odd_count);
for (i = 0; i < 10; i++) {
if (a[i] % 2 == 1) {
printf("%d ", a[i]); // 输出奇数
}
}
printf("\n数组中一共有%d个偶数,分别是:\n", even_count);
for (i = 0; i < 10; i++) {
if (a[i] % 2 == 0) {
printf("%d ", a[i]); // 输出偶数
}
}
return 0;
}
```
2. 用a+i实现
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int a[10], i, odd_count = 0, even_count = 0;
int *p;
srand(time(NULL)); // 设置随机数种子
for (i = 0; i < 10; i++) {
*(a+i) = rand() % 100; // 生成0~99之间的随机数
if (*(a+i) % 2 == 0) {
even_count++; // 统计偶数的个数
} else {
odd_count++; // 统计奇数的个数
}
}
printf("数组中一共有%d个奇数,分别是:\n", odd_count);
for (p = a; p < a+10; p++) {
if (*p % 2 == 1) {
printf("%d ", *p); // 输出奇数
}
}
printf("\n数组中一共有%d个偶数,分别是:\n", even_count);
for (p = a; p < a+10; p++) {
if (*p % 2 == 0) {
printf("%d ", *p); // 输出偶数
}
}
return 0;
}
```
3. 用指针变量p指向数组元素a[i]
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int a[10], i, odd_count = 0, even_count = 0;
int *p;
srand(time(NULL)); // 设置随机数种子
for (i = 0; i < 10; i++) {
*(a+i) = rand() % 100; // 生成0~99之间的随机数
if (*(a+i) % 2 == 0) {
even_count++; // 统计偶数的个数
} else {
odd_count++; // 统计奇数的个数
}
}
printf("数组中一共有%d个奇数,分别是:\n", odd_count);
for (i = 0; i < 10; i++) {
p = &a[i]; // 指针变量p指向数组元素a[i]
if (*p % 2 == 1) {
printf("%d ", *p); // 输出奇数
}
}
printf("\n数组中一共有%d个偶数,分别是:\n", even_count);
for (i = 0; i < 10; i++) {
p = &a[i]; // 指针变量p指向数组元素a[i]
if (*p % 2 == 0) {
printf("%d ", *p); // 输出偶数
}
}
return 0;
}
```
阅读全文