用c语言完成:从键盘读入一个小写字母和一个字符串,统计该字母在字符串中出现的次数,如果统计过程中遇到数字则中止统计并给出提示“有数字混入到数组中”,如果没找到该字母,则提示“没有这个字母”。
时间: 2023-05-23 19:06:42 浏览: 79
```c
#include <stdio.h>
int main() {
char c;
char str[100];
int count = 0;
scanf("%c%s", &c, str); // 从键盘读入小写字母和字符串
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] >= '0' && str[i] <= '9') { // 如果遇到数字,中止统计并提示
printf("有数字混入到字符串中\n");
return 0;
}
if (str[i] == c) { // 如果找到该字母,计数器加1
count++;
}
}
if (count == 0) { // 没找到该字母,给出提示
printf("没有这个字母\n");
} else { // 找到了该字母,输出计数器的值
printf("该字母在字符串中出现了%d次\n", count);
}
return 0;
}
```
相关问题
c语言从键盘读入一个字符串(包括空格),然后统计该字符串的数字、大写字母、小写字母以及空格字符的个数。
下面是一个简单的C语言程序,可以实现从键盘读入一个字符串,然后统计该字符串的数字、大写字母、小写字母以及空格字符的个数。
```
#include <stdio.h>
#include <ctype.h>
int main() {
char str[100];
int i, digits = 0, uppercase = 0, lowercase = 0, spaces = 0;
printf("请输入一个字符串:");
gets(str);
for(i = 0; str[i] != '\0'; i++) {
if(isdigit(str[i])) {
digits++;
} else if(isupper(str[i])) {
uppercase++;
} else if(islower(str[i])) {
lowercase++;
} else if(isspace(str[i])) {
spaces++;
}
}
printf("数字个数:%d\n", digits);
printf("大写字母个数:%d\n", uppercase);
printf("小写字母个数:%d\n", lowercase);
printf("空格字符个数:%d\n", spaces);
return 0;
}
```
这个程序中,我们首先定义了一个字符数组 `str`,用于存储从键盘读入的字符串。然后定义了四个变量 `digits`, `uppercase`, `lowercase` 和 `spaces`,分别用于统计字符串中的数字、大写字母、小写字母以及空格字符的个数,初始值都为0。
接下来,我们使用 `gets()` 函数从键盘读入字符串,并将其存储到字符数组 `str` 中。然后使用 `for` 循环遍历字符串中的每个字符,对于每个字符,我们使用 `isdigit()`、`isupper()`、`islower()`、`isspace()` 函数判断其是否为数字、大写字母、小写字母或空格字符,如果是,则对应的变量加1。
最后,输出统计结果即可。
需要注意的是,`gets()` 函数不安全,容易导致缓冲区溢出,建议使用更安全的替代函数 `fgets()`。另外,本程序中没有对输入字符串的长度进行检查,如果输入的字符串长度超过了字符数组 `str` 的长度,就会导致程序异常。因此,在实际应用中需要对输入字符串的长度进行检查和处理。
c语言从键盘读入一个字符串,查找字符串中首个重复出现的小写字母,在屏幕上输出该字母及其在字符串中第一次和第二次出现的位置。字符的位置从1开始计数。
好的,这是一个字符串查找问题,我可以为您提供一个 C 语言的解决方案:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char s[100];
int appear_dict[26] = {-1}; // 用数组记录每个小写字母出现的位置,-1 表示未出现
printf("请输入一个字符串:");
scanf("%s", s);
for (int i = 0; s[i] != '\0'; i++) {
if (islower(s[i])) { // 如果是小写字母
if (appear_dict[s[i]-'a'] != -1) { // 如果已经出现过
printf("重复出现的字母:%c\n", s[i]);
printf("第一次出现的位置:%d\n", appear_dict[s[i]-'a']+1);
printf("第二次出现的位置:%d\n", i+1);
break;
} else {
appear_dict[s[i]-'a'] = i; // 记录位置
}
}
}
if (appear_dict[s[i]-'a'] == -1) { // 如果遍历完整个字符串都没有发现重复的小写字母
printf("0\n");
}
return 0;
}
```
这个程序使用了一个数组来记录每个小写字母出现的位置,-1 表示未出现。然后遍历整个字符串,如果发现一个小写字母已经出现过,就输出结果,并且退出循环。如果遍历完整个字符串都没有发现重复的小写字母,则输出“0”。注意字符串的位置从 1 开始计数,所以在输出位置时需要加一。
阅读全文