#include <stdio.h> int main() { char *str[80]; int i, j, t, letter_b = 0, letter_s = 0, number = 0, space = 0, other = 0; for (i = 0; i <= 80; i++) gets(str[80]); for (j = 0; (t = str[j]) != '\0'; j++) { if (t >= 'A' && t <= 'Z') letter_b++; else if (t >= 'a' && t <= 'z') letter_s++; else if (t >= '0' && t <= '9') number++; else if (t == ' ') space++; else other++; } printf("大写字母有:%d个\n", letter_b); printf("小写字母有:%d个\n", letter_s); printf("数字有:%d个\n", number); printf("空格有:%d个\n", space); printf("其它字符有:%d个\n", other); }
时间: 2024-04-03 17:32:04 浏览: 104
这是一个C语言程序,主要功能是统计用户输入的字符串中大写字母、小写字母、数字、空格和其他字符的个数。程序使用了一个字符指针数组str来存储用户输入的字符串,然后通过循环遍历每个字符,使用if语句进行判断并统计个数,最后输出结果。但是这个程序存在一些问题:
1. 在循环输入字符串时,应该使用i < 80而不是i <= 80,否则会越界。
2. 在统计字符个数时,应该先判断字符串是否结束,即str[j] != '\0',否则会导致不必要的计数。
3. 在读取每个字符时,应该使用str[j]而不是t,否则会导致类型错误。
4. 在使用gets函数读取字符串时,应该使用str[i]而不是str[80],否则会导致越界。
5. 由于gets函数存在缓冲区溢出的风险,建议使用fgets函数代替。
相关问题
#include<stdio.h> #include<string.h> int main() { char str[100]; char *p; p=&str; scanf("%s",&str); while(*p!='\0') { /******************************* 请在该部分补充缺少的代码 ********************************/ } return 0; }
好的,这是一个字符串遍历的问题,我们需要在while循环中依次遍历字符串中的每个字符,并统计其中的数字字符个数、字母字符个数和其他字符个数。
以下是C语言代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
char *p;
int digit = 0, letter = 0, other = 0;
p = str;
scanf("%s", &str);
while (*p != '\0') {
if (*p >= '0' && *p <= '9') {
digit++;
} else if ((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z')) {
letter++;
} else {
other++;
}
p++;
}
printf("digit:%d\nletter:%d\nother:%d", digit, letter, other);
return 0;
}
```
我们使用了指针`p`指向字符串`str`首地址,并使用`scanf`函数输入字符串。在while循环中,我们使用`if`语句判断当前字符的类型,并统计数字字符个数、字母字符个数和其他字符个数。最后,我们使用`printf`函数输出统计结果即可。
下面有一个程序用于统计键盘输入的字符串中的空格的个数,请将它改编一下,变成统计字符串中的字母的个数的程序。 #include <stdio.h> int main() { char ch; int n=0; for(;(ch=getchar())!='\n';) if(ch==' ') n++; printf("%d",n); return 0; }
原程序:
```
#include <stdio.h>
int main()
{
char str[100];
int i, space;
printf("请输入一个字符串:");
gets(str);
i = 0;
space = 0;
while(str[i] != '\0')
{
if(str[i] == ' ')
{
space++;
}
i++;
}
printf("字符串中空格的个数为:%d\n", space);
return 0;
}
```
改编后的程序:
```
#include <stdio.h>
int main()
{
char str[100];
int i, letter;
printf("请输入一个字符串:");
gets(str);
i = 0;
letter = 0;
while(str[i] != '\0')
{
if((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z'))
{
letter++;
}
i++;
}
printf("字符串中字母的个数为:%d\n", letter);
return 0;
}
```
阅读全文