贴一个简单的Oj题目,重点是gets()顺利通过,getchar()不行。希望有缘人指教......
题目描述
输入一串字符,将其中的大写变成小写,若不为大写则原样输出
输入
任意字符串(长度在100以内)以回车表示输入结束
输出
将其中的大写 输出相应的小写,若不为大写则原样输出
样例输入
A123b
样例输出
a123b
gets()版:
#include <stdio.h> #include <ctype.h> #include <string.h> int main() { char arr[100]; unsigned len, j, i = 0; gets(arr); len = strlen(arr); for (i = 0; i < len; i++) { if (isupper(arr[i])) // 如果是大写,转换成小写 arr[i] = tolower(arr[i]); else continue; // 如果不是大写,继续 } for (j =0; j < i; j++) printf("%c", arr[j]); return 0; }
getchar()版:
#include <stdio.h> #include <ctype.h> int main() { char ch, arr[100]; unsigned i = 0, j; while (ch = getchar()) { if (ch == 0x0a) // 检测到回车符停止输入 break; else { if (isupper(ch)) // 如果是大写,转换成小写后存入数组 arr[i] = tolower(ch); else arr[i] = ch; // 不是大写,直接存入数组 i++; } } for (j =0; j < i; j++) printf("%c", arr[j]); return 0; }
测试了半天两个输入输出都一模一样,个人认为是getchar()和gets()函数细节上的差异导致的。求大牛指教!
顺便附上ASCII码完整表供参考: