if...if 与if...else区别

来源:百度知道 编辑:UC知道 时间:2024/05/15 15:42:42
#include<stdio.h>
main()
{ char ch;
scanf("%d",&ch);
if(ch>'A'&&ch<'Z')
ch=ch+32;
if(ch>'a'&&ch<'z')
ch=ch-32;
printf("%c",ch);
}
为什么结果只能小写字母转换长大写字母,也就是只执行下半部分,这类型的必须使用if ...else结构吗?请高手指教,谢谢!

#include<stdio.h>
main()
{ char ch;
scanf("%d",&ch);//首先你这里就错了 应该是scanf("%c",&ch);
if(ch>'A'&&ch<'Z')//这里也错了 表达 由A到Z的范围是 'A'<=ch && ch<='Z'
ch=ch+32; //
if(ch>'a'&&ch<'z')//同上
ch=ch-32;
printf("%c",ch);
}

为什么结果只能小写字母转换长大写字母 :
因为大写是被转换为了小写 但是又被转换成了大写
当被判断输入是大写的时候 的确可以转换成小写
if('A'<=ch && ch<='Z')
ch=ch+32;
现在的字母已经是小写了
程序又接着执行下个判断语句
if('a'<=ch && ch<='z')
ch=ch-32;
接着又把字母变成大写 这是为什么不以把大写转成小写的原因 。
正确的程序应该是

#include <stdio.h>

void main()
{

char ch;
scanf("%c",&ch);
if('A'<=ch && ch<='Z')
{
ch=ch+32;
}
else
if('a'<=ch && ch<='z')
{
ch=ch-32;
}
printf