c语言完成:从键盘任意输入一行由数字组成的文本(回车结束),要求编写函数total实现分别统计出每一个数字字符出现的次 数。 例如输入 12125595599915 则输出: 1出现3次 2出现2次 5出现5次 9出现4次
时间: 2023-08-31 10:39:58 浏览: 105
### 回答1:
这是一个可以用 C 语言实现的方法。首先,我们需要定义一个带有 10 个元素的数组,用来记录每个数字字符出现的次数。接着,我们可以使用一个循环读取用户输入的每一个字符,如果该字符是一个数字字符,就将对应数字字符的计数器加 1。最后,我们可以使用另一个循环来输出每个数字字符出现的次数。
下面是代码示例:
```
#include <stdio.h>
#define NUMBER_OF_DIGITS 10
void total(void)
{
int counts[NUMBER_OF_DIGITS] = {0}; // 初始化计数器数组
char c;
// 读取输入的字符并统计出现的次数
while ((c = getchar()) != '\n')
{
if (c >= '0' && c <= '9')
{
counts[c - '0']++;
}
}
// 输出每个数字字符出现的次数
for (int i = 0; i < NUMBER_OF_DIGITS; i++)
{
if (counts[i] > 0)
{
printf("%d 出现 %d 次\n", i, counts[i]);
}
}
}
int main(void)
{
total();
return 0;
}
```
在这段代码中,函数 `total` 用于统计输入的数字字符出现的次数。首先,它定义了一个名为 `counts` 的数组,用来记录每个数字字符出现的次数。然后,它使用一个循环读取输
### 回答2:
可以按照以下步骤来实现这个功能:
1. 定义一个函数total,该函数接收一个字符串作为参数。
2. 在total函数中,声明一个数组count,用于记录每个数字字符出现的次数。数组的下标对应数字字符的ASCII码值。
3. 使用一个循环来遍历输入的字符串,对于每个字符,判断它是否是数字字符(ASCII码值在'0'到'9'之间)。
4. 如果是数字字符,将该字符的ASCII码值作为count数组的下标,并将对应的计数器加1。
5. 循环结束后,再次遍历count数组,输出每个数字字符出现的次数。
下面是一个示例代码:
```c
#include <stdio.h>
void total(char *str) {
int count[10] = {0}; // 数字字符的计数器数组,初始化为0
for (int i = 0; str[i] != '\0'; i++) {
char ch = str[i];
if (ch >= '0' && ch <= '9') {
count[ch - '0']++; // 使用字符的ASCII码值减去'0'得到对应的数组下标
}
}
for (int i = 0; i < 10; i++) {
if (count[i] > 0) {
printf("%d出现%d次\n", i, count[i]);
}
}
}
int main() {
char input[100];
printf("请输入一行由数字组成的文本:");
scanf("%s", input);
total(input);
return 0;
}
```
使用该程序,可以从键盘输入一行由数字组成的文本,然后输出每个数字字符出现的次数。
阅读全文