关于#c语言#的问题,请各位专家解答!

#输入非字母运行结果多处一位非字母字符
#include int main(){
char ch;
printf("Enter a character:");
scanf("%c",&ch);
if(ch>='A'&&ch<='Z'){
ch=ch+32;
else if(ch>='a'&&ch<='z')
ch=ch-32;
else
printf("%c is not a letter",ch);
printf("%c",ch);
return 0;
}

非字母时,两个printf都执行了

#include<stdio.h> int main(){
char ch;
printf("Enter a character:");
scanf("%c",&ch);
if(ch>='A'&&ch<='Z')
    printf("%c",ch+32);
else if(ch>='a'&&ch<='z')
    printf("%c",ch-32);
else
    printf("%c is not a letter",ch);

return 0;
}

把最后那个printf("%c",ch); 语句移到if和else if分支就可以了,多出来的一个非字母字符就是这个打印出来的。修改如下:

#include<stdio.h> 
int main(){
    char ch;
    printf("Enter a character:");
    scanf("%c",&ch);
    if(ch>='A'&&ch<='Z'){
        ch=ch+32;
        printf("%c",ch);
    }
    else if(ch>='a'&&ch<='z'){
        ch=ch-32;
        printf("%c",ch);
    }
    
    else
        printf("%c is not a letter",ch);

return 0;
}

img

#include<stdio.h>
 
int main()
{
    char ch;
    printf("Enter a character:");
    scanf("%c", &ch);
    if(ch>='A'&&ch<='Z')
    {
        ch = ch + 32;
    }
    else if(ch>='a'&&ch<='z')
    {
        ch=ch-32;
    }
    else{
        printf("%c is not a letter",ch);
        return 0;
    }
    printf("%c",ch);
return 0;
}