C语言问题(4-5-5)

来源:百度知道 编辑:UC知道 时间:2024/09/25 11:44:48
程序如下:

#include "stdio.h"
main()
{
char c;
printf("please input a alphabet(c):");
scanf("%c",&c);
if(('a'<=c)&&(c<='z'))
{
c=c-32;
printf("%c",c);
}
else if(('A'<=c)&&(c<='Z'))
{
c=c+32;
printf("%c",c);
}
else
printf("error!");

}

为什么,我输入d,A,5
输出的是D
而不是D a error

因为你是用%c输入的,只接收到第一个d,而且你没有用循环,所以只判断一次。也就是
if(('a'<=c)&&(c<='z')) //成立然后执行以下语句
{
c=c-32;
printf("%c",c);
}
因为第一个条件已经成立了,所以后面的else if和else就不再执行了。

因为虽然你输入了三个字符,但你只引用了一次,所以c这个字符只取用了‘d’,后面的都没有引用。你可以运行一次只输入一个字符

...加个循环..