c语言统计数组中的不同数字并打印
时间: 2023-05-08 09:55:45 浏览: 199
在C语言中,要统计数组中的不同数字并打印,我们可以使用一个计数器和一个标志数组来实现。首先,初始化一个长度为数组长度的标志数组,所有元素的值都设置为0,然后遍历数组中的每个元素,如果该元素在标志数组中没有被标记过(即元素对应的标志数组中的值为0),那么就将计数器加一,并将该元素对应的标志数组中的值标记为1。最后打印出计数器的值即可。
以下是一个简单的示例代码:
```c
#include <stdio.h>
#define ARRAY_SIZE 10 // 数组大小
int main() {
int array[ARRAY_SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 1}; // 测试数组
int count = 0; // 计数器
int flag[ARRAY_SIZE] = {0}; // 标志数组,初始值都设置为0
for (int i = 0; i < ARRAY_SIZE; i++) {
if (flag[i] == 0) { // 如果该元素没有被标记过
flag[i] = 1; // 标记该元素
count++; // 计数器加一
printf("%d ", array[i]); // 输出不同的数字
}
}
printf("\n数组中不同的数字有 %d 个。\n", count); // 输出不同数字的个数
return 0;
}
```
相关问题
c语言,数组,输入一个字符串,统计其中数字字符出现的次数
在C语言中,你可以通过以下几个步骤来输入一个字符串并统计其中数字字符(0-9)的出现次数:
1. **声明数组和变量**:首先,你需要定义一个动态数组(如`int count[10]`),用于存储每个数字(0-9)的计数。另外,定义一个整型变量`total_count`记录整个字符串中数字字符的总数。
```c
#include <stdio.h>
#include <ctype.h> // 引入ctype.h库,获取isdigit函数
int main() {
char str[100];
int count[10] = {0}; // 初始化所有计数为0
int total_count = 0;
```
2. **输入字符串**:使用`scanf`函数让用户输入字符串,并检查是否结束。
```c
printf("请输入一个字符串: ");
fgets(str, sizeof(str), stdin); // fgets用于读取一行输入直到换行符
str[strlen(str) - 1] = '\0'; // 清除fgets添加的换行符
```
3. **遍历字符串并计数**:遍历字符串中的每一个字符,使用`isdigit`函数判断是否为数字字符,如果是,则相应计数加一。
```c
for (int i = 0; str[i] != '\0'; i++) {
if (isdigit(str[i])) {
count[str[i]-'0']++;
total_count++; // 每次找到数字字符就增加总数
}
}
```
4. **输出结果**:最后,打印出每个数字字符及其出现次数以及总次数。
```c
printf("数字字符及出现次数:\n");
for (int i = 0; i < 10; i++) {
if (count[i]) {
printf("%d: %d\n", i, count[i]);
}
}
printf("总数字字符次数: %d\n", total_count);
return 0;
}
```
统计数组中出现的每个数字个数C语言
在C语言中,统计数组中每个数字出现的个数通常需要遍历数组并使用哈希表(如结构体或数组)来存储每个元素及其对应的计数。以下是一个简单的示例:
```c
#include <stdio.h>
// 创建一个结构体用于存储数字及其计数
typedef struct {
int num;
int count;
} CountPair;
// 功能:计算数组中每个数字的出现次数
void count_elements(int arr[], int n, CountPair counts[]) {
for (int i = 0; i < n; i++) {
// 遍历数组,如果元素已经在counts中,则增加计数,否则初始化计数为1
for (int j = 0; j < sizeof(counts) / sizeof(counts[0]); j++) {
if (arr[i] == counts[j].num) {
counts[j].count++;
break;
}
}
// 如果元素不在counts中,添加到数组末尾,并设置计数为1
else {
counts[j + 1].num = arr[i];
counts[j + 1].count = 1;
}
}
}
// 主函数
int main() {
int arr[] = {1, 2, 2, 3, 4, 4, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
CountPair counts[n]; // 初始化计数数组
count_elements(arr, n, counts);
printf("每个数字的出现次数:\n");
for (int i = 0; i <= n; i++) {
if (counts[i].num != 0) {
printf("%d: %d times\n", counts[i].num, counts[i].count);
}
}
return 0;
}
```
在这个例子中,`count_elements`函数会遍历输入数组`arr`,并将每个元素的计数保存在`counts`数组中。然后,在主函数里,我们打印出每个数字及其出现的次数。
阅读全文