【发布时间】:2021-12-08 15:40:01
【问题描述】:
我是一名初级程序员,我发现有一个练习说:
写出一串字符,确定字数、数字、大小写字符和空格的个数。
我认为我构建了一个足够体面的程序并且它确实有效!
问题是当我尝试运行它时,结果并不完全正确。
例如;当我写信时:HI MY name is Ani 1 1 2 a
它说
-
空格 = 8。在这里更正
-
数字 = 3。此处也更正
-
大写字符 = 4。应该是 5
-
小写字符 = 7。应该是 9
-
字数 = 26。这是完全错误的
至于单词,我找到了一种新的计数方法。通过计数spaces+1,但我想正确计数。
可以指出错误吗?
这是我到目前为止所做的
int main() {
char str[1000+1];
int words = 0;
int numbers = 0;
int uppercharacters = 0;
int lowercharacters = 0;
int spaces = 0;
int i;
printf("Please enter the string of characters: ");
gets(str);
for (i = 0; str[i] != '\0'; i++) {
if (str[i] > 'a' && str[i] < 'z')
lowercharacters++;
else if (str[i] > 'A' && str[i] < 'Z')
uppercharacters++;
else if (str[i] == ' ')
spaces++;
else if (str[i] > '0' && str[i] < '9')
numbers++;
else if (str[i] == ' ' && str[i + 1] != ' ');
words++;
}
printf("Spaces = %d\n", spaces);
printf("numbers = %d\n", numbers);
printf("Upper Case characters = %d\n", uppercharacters);
printf("Lower Case characters = %d\n", lowercharacters);
printf("Words = %d\n", words + 1);
return 0;
}
【问题讨论】:
-
您确定
if(str[i]>'A' && str[i]<'Z')中的范围正确吗?该范围的“边界”是什么?如果字符正好是“A”或“Z”会发生什么? -
@FabiosaysReinstateMonica 是的。如果答案是 => 和 =
标签: c