|
发表于 2023-11-10 20:10:42
|
显示全部楼层
这段代码存在一些问题,导致无法正确计算字符串中的单词数量。首先,if 条件中的赋值语句应该使用双等号(==)而不是单等号(=)。其次,在循环中,应该检查当前字符是否为空格,而不是直接赋值为 0。最后,在循环结束后,需要判断最后一个单词是否被统计到,如果最后一个字符不是空格,则需要额外增加单词数量。
以下是修改后的代码:
- #include<bits/stdc++.h>
- using namespace std;
- int main()
- {
- char a[110];
- int i=0;
- while(scanf("%c",&a[ i])!=EOF)
- {
- i++;
- }
- int flag=0;
- int s=0;
- for(i=0; a[ i]!='\0'; i++)
- {
- if(flag==0)
- {
- if(a[ i]>='a' && a[ i]<='z'){
- s++;
- flag=1;
- }
- if(a[ i]>='A' && a[ i]<='Z'){
- s++;
- flag=1;
- }
- }
- else if(a[ i]==' ') {
- flag=0;
- }
- }
- if (a[i-1] != ' ') {
- s++;
- }
- cout<<s;
- }
复制代码 |
|