字母大小写转换
这是小甲鱼的源文件。运行后输入大写A提示输入有误, 请重新输入一个字母输入其他大写字母正常。请帮忙看看错在哪?#include <stdio.h>
#include <conio.h>
void main()
{
char ch, temp;
printf("请输入一个字母: \n");
ch = getchar();
temp = getchar();
while( !(ch>'A' && ch<'z') || (ch > 'Z' && ch < 'a') )
{
printf("输入有误, 请重新输入一个字母: \n");
ch = getchar();
}
if( ch & 32 )
{
ch = ch & 223;// 使第五位为0,变大写
}
else
{
ch = ch | 255;// 使第五位为1,变小写
}
putchar(ch);
printf("\n");
}
找到原因了。。。。while( !(ch>'A' && ch<'z') || (ch > 'Z' && ch < 'a') )
这个部分错了。应该是加上“=” 找到原因了。。。。while( !(ch>'A' && ch<'z') || (ch > 'Z' && ch < 'a') )
这个部分错了。应该是加上“=” 本帖最后由 zquchs 于 2012-8-15 20:12 编辑
判断好像有点问题,修改后:
#include <stdio.h>
#include <conio.h>
void main()
{
char ch, temp;
printf("请输入一个字母: \n");
ch = getchar();
temp = getchar();
while( (ch>'A' && ch<'z') && (ch > 'Z' && ch < 'a') )//这里就是清除掉A到Z与a到z之外的所有字符,
//while(ch <'A'||ch >'Z'&&ch < 'a'||ch >'z')这样也可以
{
printf("输入有误, 请重新输入一个字母: \n");
ch = getchar();
}
if( ch & 32 )
{
ch = ch & 223;// 使第五位为0,变大写
}
else
{
ch = ch | 32;// 使第五位为1,变小写,是
// |0010 0000 == | 32<!--EndFragment-->
}
putchar(ch);
printf("\n");
} while( !(ch>'A' && ch<'z') || (ch > 'Z' && ch < 'a') )这里应该改 把||改为&& 绝影&瞬风 发表于 2012-8-24 10:00 static/image/common/back.gif
while( !(ch>'A' && ch 'Z' && ch < 'a') )这里应该改 把||改为&&
谢谢你的回复。我好久之前的问题了。没想到能有人回答。。。。 好像大写改小写都不对吧!除了A外提示错误,其他都没有改小写呢! 四楼是对的哈哈 你们都不对,看看我写的。注意while循环条件和大小写转换机制,新增清除缓冲区函数。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
char ch;
printf("请输入一个字母: \n");
ch = getchar();
fflush(stdin);//清除缓冲区
while( !(ch>='A' && ch<='z') || (ch > 'Z' && ch < 'a') )//当ch不是 A~Z 或 a~z 时循环重新输入
{
printf("输入有误, 请重新输入一个字母: \n");
ch = getchar();
fflush(stdin); //清除缓冲区
}
if( ch & 32 ) //如果是小写
{
ch = ch & 223;// 第五位置0,变大写
}
else
{
ch = ch | 32;// 第五位置1,变小写
}
putchar(ch);
printf("\n");
}
本帖最后由 少先队队长 于 2017-6-2 21:09 编辑
这样可以,主要看判断是否为字母那里,看着ascii码表就知道怎么写了
#include <stdio.h>
#include <conio.h>
void main()
{
char ch;
printf("请输入一个字母: \n");
ch = getchar();
while( (ch<'A' || ch>'z')|| (ch > 'Z' && ch < 'a') )
{
printf("输入有误, 请重新输入一个字母: \n");
ch = getchar();
}
if( ch & 32 )
{
ch = ch & 223;
}
else
{
ch = ch | 32;
}
putchar(ch);
printf("\n");
} 本帖最后由 kailugaji 于 2018-3-5 18:04 编辑
#include<stdio.h>
#include<stdlib.h>
void main(){
char ch,t;
printf("请输入一个字母:\n");
ch=getchar();
t=getchar();
while(!(ch>='A' && ch<='z') && !(ch>='Z' && ch<='a')){
printf("输入有误,请重新输入一个字母:\n");
ch=getchar();
}
if(ch & 32){
ch=ch & 223;//使第5位为0,变大写
}
else{
ch=ch | 32;//使第5位为1,变小写
}
putchar(ch);
printf("\n");
//ch=getchar();
//putchar(ch);
} #include<stdio.h>
#include<stdlib.h>
void main(){
char ch,t;
printf("请输入一个字母:\n");
ch=getchar();
t=getchar();
while(!(ch>='A' && ch<='z') && !(ch>='Z' && ch<='a')){
printf("输入有误,请重新输入一个字母:\n");
ch=getchar();
}
if(ch & 32){
ch=ch & 223;//使第5位为0,变大写
}
else{
ch=ch | 32;//使第5位为1,变小写
}
putchar(ch);
printf("\n");
//ch=getchar();
//putchar(ch);
} while( (ch>'A' && ch<'z') && (ch > 'Z' && ch < 'a') )
//这样就可以了
页:
[1]