题目内容:从键盘输入一字符串,以#为结束标记,将其中的大写字母转化为小写字母,小写字母转化为大写字母,其他不变,并输出转化后的字符串。
输入样例: a23AGs,4#
输出样例:A23agS,4
时间限制:500ms
下面是我做的:
#include <stdio.h>
#include <stdlib.h>
int main()
{ char n;
scanf("%c",&n);
while(n!='#');
{if(n>='a'&&n<='z')
n=n-32;
else
if(n>='A'&&n<='z')
n=n+32;
else
n=n;
printf("%c",n);
}
return 0;
}
结果系统说我超时了,我想问一下有没有更简便一点的方法。
while(n!='#'); 这里这个分号,导致如果第一个字符不是#,你这就死循环了
而且程序只读取了一个字符,scanf不在循环体里
并且字符串如果有空格,scanf也起不了作用追问
而且程序只读取了一个字符,scanf不在循环体里
并且字符串如果有空格,scanf也起不了作用追问
那要怎样写才是正确的呢
追答
温馨提示:答案为网友推荐,仅供参考
第1个回答 2020-03-29
字符串要用%s,才能输入完整字符串,不然只有一个开头字母,或者你用gets()也可以。本回答被网友采纳