#include <stdio.h>
int main() {
int i;
char arr[100];
for (i = 0; i < 100; i++)
scanf("%c", &arr[i]);
for (i = 0; i < 100; i++) {
if ('a' <= arr[i] && arr[i] <= 'z')
arr[i] =-32;
else
if ('A' <= arr[i] && arr[i] <= 'Z')
arr[i] =+32;
}
printf("%s", arr);
return 0;
}
问题如下:
您收到了一个字符串,包含大写和小写英文字母。您需要更改此字符串中每个字母的大小写。也就是说,所有大写字母都应转换为小写字母,而所有小写字母都应转换为大写字母。然后,您需要将结果字符串打印到输出。
上面的代码有什么问题?它已经成功编译,但出现了运行时错误。
%s
期望arr
有一个终止的'\0'
,但它没有。此外,在转换大小写时,您的代码假定ASCII编码(或兼容),这实际上并不保证。查找标准头文件<ctype.h>
中声明的函数isupper()
、islower()
、toupper()
和tolower()
,它们被保证可以工作。 - Peter