char* lower(char* str) { char *i; char *j=str; i=str; if(str==0) { return 0; } while(*i!='\0') { if(*i>='A'&&*i<='Z') { *str=*i+32; } i++; str++; } str=j; return str; }
时间: 2024-02-05 12:03:33 浏览: 34
这段代码是一个C语言函数,它的作用是将传入的字符串中的大写字母转换成小写字母,并返回转换后的字符串。具体实现方式是遍历字符串中的每个字符,如果字符是大写字母,则将其转换成小写字母。
函数的参数是一个指向字符数组的指针,即传入一个字符串。函数内部定义了两个指针变量i和j,i用于遍历字符串中的每个字符,而j则是为了在处理完字符串后返回转换后的字符串。如果传入的字符串为空指针,则直接返回0。
在while循环中,先判断指针i指向的字符是否为字符串结束符'\0',如果不是则继续遍历。如果该字符是大写字母,则将它转换成小写字母,并将结果存储在原字符串对应位置上。最后将两个指针变量都向后移动一位,以便处理下一个字符。循环结束后,将指针j重新指向字符串的开头,并返回j,即转换后的字符串。
相关问题
import ord def mc(s): s=s.lower() new_str = "" for char in s: if char.isalpha(): new_char = chr((ord(char.lower()) - 97 + 3) % 26 + 97) new_str += new_char else: new_str += char return new_str input_str = input() encrypted_str = mc(input_str) print(encrypted_str) 这个代码哪里错了
这个代码的问题在于`import ord`语句不正确,应该修改为`from builtins import ord`,另外需要在第一行加入`#`符号表示注释。下面是修改后的代码:
```
# 正确的import语句
from builtins import ord
def mc(s):
s = s.lower()
new_str = ""
for char in s:
if char.isalpha():
new_char = chr((ord(char.lower()) - 97 + 3) % 26 + 97)
new_str += new_char
else:
new_str += char
return new_str
input_str = input()
encrypted_str = mc(input_str)
print(encrypted_str)
```
这样就可以正确地运行这个脚本了。
修改代码:#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; }
修改后的代码如下:
```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)` 获取字符串长度,并且通过指针的算术运算来访问字符串中的每个字符。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)