注册 登录
编程论坛 C++教室

字符串大小写转换,求指点

约束小朋友 发布于 2013-06-14 21:25, 790 次点击
字符串字母大小写转换
输入一个以#结束的字符串,将小写字母全部转换成大写字母,把大写字母全部转换为小写字母,其他字符不变,然后将结果输出到屏幕。
上面是我想要实现的程序题目
下面是我自己写的程序
我的程序出现的问题是
当我输入一串字符时,无论输入什么,输出都变成#
例如:输入:nskjhgl124#    输出:#
而且输出的只有一个
我的思路是想逐个判断字符,然后输出






#include<stdio.h>
void main()
{
   
    char character,i;
   printf("请随机输入一串字符,以#为结束符");
   while((character=getchar())!='#'){
   
       if(character>='A'&&character<='Z')
   {
     character=character+32;
   }
   else if(character>='a'&&character<='z')
   {
   character=character-32;
   }
   character=getchar();
   }
   printf("\n%c\n",character);
}
4 回复
#2
lzj125302013-06-14 21:59
这是自然,你的char character只是一个字符变量,只能存放一个字符。最后录入的字符是#. while语句判断之后结束循环 输出的当然是#字符
#3
潇翊2013-06-15 08:31
修改后的程序,运行没有问题,如下:
#include<stdio.h>
void main()
{
    char character,i;
    printf("请随机输入一串字符,以#为结束符");

    while((character=getchar())!='#')   //判断是否为“#”
    {
        if(character>='A'&&character<='Z')  //大写变小写
        {
            character=character+32;
            printf("%c",character);       //转换完了要输出啊
        }
        else if(character>='a'&&character<='z') //小写变大写
        {
            character=character-32;
            printf("%c",character);    //转换完了要输出啊
        }
        else
        {
            printf("%c",character);  //既不是大写也不是小写的原样输出
        }
   //character=getchar();
   }

   printf("%c\n",character);  //遇到“#”endwhile
}
#4
rjsp2013-06-15 08:32
程序代码:
#include <cstdio>

int main()
{
    printf( "%s", "请随机输入一串字符,以#为结束符\n" );
    for( char c; c=getchar(), c!='#'; )
    {
        if( c>='A' && c<='Z' )
            c += 'a'-'A';
        else if( c>='a' && c<='z' )
            c -= 'a'-'A';

        printf( "%c", c );
    }

    return 0;
}
#5
约束小朋友2013-06-15 12:55
回复 3楼 潇翊
O(∩_∩)O谢谢指点   我懂了
1