修改代码:#include <string> void main() { char str[100]; char *p, *q; cout<<"Input a string with uppercase, lowercase or digits: "<<endl; cin.getline(str,99); p = str; while (p != '\0') { if (*p >= 97 && *p <= 122) *p -= 32; p++; } q = str; while (q != '\0') { if (*q >= 65 && *q <= 90) *q += 32; q++; } cout<<"Original: "<<str<<endl; cout<<"Uppercase: "<<p<<endl; cout<<"Lower: "<<q<<endl; }
时间: 2023-06-20 18:08:37 浏览: 111
#include_iostream.h_
4星 · 用户满意度95%
修改后的代码如下:
```c++
#include <iostream>
#include <string>
using namespace std;
int main() {
char str[100];
char *p, *q;
cout << "Input a string with uppercase, lowercase or digits: " << endl;
cin.getline(str, 99);
p = str;
while (*p != '\0') {
if (*p >= 97 && *p <= 122)
*p -= 32;
p++;
}
q = str;
while (*q != '\0') {
if (*q >= 65 && *q <= 90)
*q += 32;
q++;
}
cout << "Original: " << str << endl;
cout << "Uppercase: ";
for (int i = 0; i < strlen(str); i++) {
if (*(p - strlen(str) + i) <= 'Z' && *(p - strlen(str) + i) >= 'A') {
cout << char(*(p - strlen(str) + i) + 32);
}
else {
cout << *(p - strlen(str) + i);
}
}
cout << endl;
cout << "Lower: ";
for (int i = 0; i < strlen(str); i++) {
if (*(q - strlen(str) + i) <= 'z' && *(q - strlen(str) + i) >= 'a') {
cout << char(*(q - strlen(str) + i) - 32);
}
else {
cout << *(q - strlen(str) + i);
}
}
cout << endl;
return 0;
}
```
修改说明:
1. 将 `void main()` 改为 `int main()`。
2. 在开头添加 `#include <iostream>`,因为要使用 `cout` 和 `endl`。
3. 在 `while (p != '\0')` 和 `while (q != '\0')` 中,将 `!=` 改为 `!= '\0'`,因为 `p` 和 `q` 都是指针类型,不能和字符类型的 `'\0'` 进行比较。
4. 在输出 `Uppercase` 和 `Lower` 时,需要遍历整个字符串,依次判断每个字符是否是大写或小写字母,然后进行转换。因此需要使用 `strlen(str)` 获取字符串长度,并且通过指针的算术运算来访问字符串中的每个字符。
阅读全文