#include<iostream> #include<string> using namespace std; int main(){ int in=0,a=0,A=0,k=0; char arr[100]; gets(arr); for(int i=0;arr[i]!='/0';i++){ if(arr[i]>='A'&&arr[i]<='z'){ A++; } else if(arr[i]>='a'&&arr[i]<='z'){ a++; } else if(arr[i]>='0'&&arr[i]<='9'){ in++; } else k++; } cout<<"大写"<<A<<endl<<"小写"<<a<<endl<<"数字"<<in<<endl<<"空格"<<k; }
时间: 2024-03-07 09:52:32 浏览: 55
#include <iostream>
有一些语法错误和逻辑错误:
1. `"/0"` 应该是 `'\0'`,表示字符串的结束符。
2. 应该使用 `cin.getline(arr, 100)` 代替 `gets(arr)`,因为 `gets` 函数不安全。
3. 第一个 `if` 语句中,应该将 `'z'` 改为 `'Z'`,因为 `'Z'` 是大写字母的最后一个,而 `'z'` 是小写字母的最后一个。
4. 第二个 `else if` 语句中,应该将 `'z'` 改为 `'Z'`,与第一个 `if` 语句保持一致。
5. 最后一个 `else` 语句中,应该使用 `isspace(arr[i])` 判断是否为空格。
6. 在输出时,应该加上对应的文本,如 "大写字母:"、"小写字母:"、"数字:"、"空格:"。
修改后的代码如下:
```
#include <iostream>
#include <string>
using namespace std;
int main() {
int in = 0, a = 0, A = 0, k = 0;
char arr[100];
cin.getline(arr, 100);
for(int i = 0; arr[i] != '\0'; i++) {
if(arr[i] >= 'A' && arr[i] <= 'Z') {
A++;
}
else if(arr[i] >= 'a' && arr[i] <= 'z') {
a++;
}
else if(arr[i] >= '0' && arr[i] <= '9') {
in++;
}
else if(isspace(arr[i])) {
k++;
}
}
cout << "大写字母:" << A << endl
<< "小写字母:" << a << endl
<< "数字:" << in << endl
<< "空格:" << k << endl;
return 0;
}
```
阅读全文