C语言嗯输入一行字符把其中非数字存到数组中并输出
时间: 2024-02-05 11:10:43 浏览: 25
可以使用C语言的字符数组和循环语句来实现这个功能。具体代码如下:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[100];
int i, j;
printf("请输入一行字符:\n");
fgets(str, 100, stdin);
char non_digits[100];
j = 0;
for (i = 0; str[i] != '\0'; i++) {
if (!isdigit(str[i]) && str[i] != ' ') {
non_digits[j++] = str[i];
}
}
non_digits[j] = '\0';
printf("非数字字符为:%s\n", non_digits);
return 0;
}
```
上述代码中,首先定义了一个长度为100的字符数组`str`,并使用`fgets`函数从标准输入中读取一行字符。接着定义了另外一个长度为100的字符数组`non_digits`,用来存储非数字字符。使用循环语句遍历`str`数组中的每个字符,判断是否为数字或空格。如果不是数字或空格,则将该字符存入`non_digits`数组中。最后输出`non_digits`数组即可。需要注意的是,在`non_digits`数组的末尾加上了一个空字符,以便输出时正确显示。
相关问题
C语言输入一行字符,把其中的非数字存到数组中输出
可以使用C语言的标准库函数`isdigit()`来判断一个字符是否为数字。具体实现过程如下:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char input[100]; // 定义输入数组
char non_digits[100]; // 定义非数字数组
int i = 0, j = 0;
printf("请输入一行字符:\n");
fgets(input, 100, stdin); // 从标准输入中读取一行字符
while (input[i] != '\0') { // 遍历输入数组
if (!isdigit(input[i])) { // 如果当前字符不是数字
non_digits[j] = input[i]; // 将非数字存入非数字数组
j++;
}
i++;
}
printf("非数字字符为:\n");
printf("%s", non_digits); // 输出非数字数组
return 0;
}
```
需要注意的是,在输入字符时要使用`fgets()`函数,而不是`scanf()`函数,因为`fgets()`可以读取一整行字符,而不会因为空格或换行符而中断读取。同时,读取的字符数组最后会自动加上一个`\0`作为结尾标志,因此我们可以通过判断是否到达了结尾来结束遍历。
用c语言输入一行字符统计其中每个英文字母的个数存放到一维数组中
以下是一个示例程序,可以实现输入一行字符统计其中每个英文字母的个数,并将结果存放到一维数组中:
```c
#include <stdio.h>
#include <ctype.h>
#define MAX_LENGTH 1000 // 输入字符串的最大长度
#define NUM_LETTERS 26 // 英文字母的数量
int main() {
char str[MAX_LENGTH];
int counts[NUM_LETTERS] = {0}; // 初始值全部为0
printf("请输入一行字符:\n");
fgets(str, MAX_LENGTH, stdin); // 读取一行字符
// 统计每个英文字母的个数
for (int i = 0; str[i] != '\0'; i++) {
if (isalpha(str[i])) { // 判断是否为英文字母
int index = tolower(str[i]) - 'a'; // 转换为小写字母后计算下标
counts[index]++;
}
}
// 输出结果
for (int i = 0; i < NUM_LETTERS; i++) {
if (counts[i] > 0) {
printf("%c: %d\n", 'a' + i, counts[i]);
}
}
return 0;
}
```
程序中使用了几个关键函数:
- `fgets()`:读取一行字符,包括换行符。
- `isalpha()`:判断一个字符是否为英文字母。
- `tolower()`:将大写字母转换为小写字母。
- 数组下标计算:将小写字母转换为对应的数字下标,例如 `a` 对应下标 `0`,`b` 对应下标 `1`,以此类推。
需要注意的是,程序中只统计了小写字母的个数,如果需要统计大写字母的个数,可以在计算下标时先使用 `tolower()` 函数转换为小写字母。