日本电影放学后被强奸:关于C语言大写与小写转换的一个问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/27 23:55:00
main()
{
char ch;
scanf("%d",&ch);
if('A'<=ch<='z') ch+32;
else ch;
printf("%d",ch+32:ch);
}
这样写有哪些问题,谢谢

#include <stdio.h>

int main()
{
char ch;
scanf("%c[a-zA-Z]",&ch);
ch = ch | 0x20;
printf("%c",ch);
return 0;
}

你的程序编译大概可以通过,但是很多地方会产生逻辑错误.比如:IF里('a'<=ch<='z'),计算机会先检查'a'<=ch得出结果后才判断后面的内容,你这样写意思就成了”如果”A”<=CH成立就执行ch+32.
ch+32的结果得不到你想要的内容,改成ch+=32;
else一行去掉.
你的程序的结果不是大小写转换,而是把小写(大写)全部转换为大写(小写).
多看程序,分析语法.

一, scanf中应为%c
二, if语句中的'z' 应为'Z', 全句应为if ('A'<=ch & ch<='Z') ch += 32
三, else一行去掉
四, printf中, 应为"%c %c", ch-32, ch

你的程序可以改成这个样字:
main()
{
char ch;
scanf("%c",&ch);
if(ch>='A'&&ch<='Z')ch+=32;
if(ch>='a'&&ch<='z')ch-=32;
printf("%c",ch);
}

main()
{char ch;
scanf("%c",&ch);
if(ch>='A'&&ch<='Z') ch=ch+32;
printf("%c",ch);
}

main()
{
char ch;
scanf("%c",&ch);
if(ch>='A'&&ch<='Z')
ch+=32;
printf("%c",ch);

}