| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 727 人关注过本帖
标题:求各位赐教,输入一个字符把它循环转换成自身的后4个字母的小写形式
只看楼主 加入收藏
明年今曰
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-3-21
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:7 
求各位赐教,输入一个字符把它循环转换成自身的后4个字母的小写形式
编译器是VC  6.0 。题目:输入一个字符,如它是小写字母,则把它循环转换成自身的后4个字母的大写形式,如是大写字母,则把它循环转换成自身的后4个字母的小写形式。其他形式的不转换。并且把结果输出。如:a字母结果输出E,W输出结果a
#include<stdio.h>
#include <conio.h>
int main()

{ char ch;
    printf("请输入一个字符:\n");
    scanf("%c",&ch);
        
    if(ch>=97 && ch<=118)
    {    ch = ch-28; }
        
    else if(ch>118 && ch<=122)
          { ch = ch-54;}
         
    if(ch>=65 && ch<=86)
    {  ch = ch+36;}
         
    else if(ch>86 && ch<=90)
    {    ch = ch+10;}
   
        
        printf("%c\n",ch);}   我输入大写的结果是正确,输入小写的结果就不对了  ,请问哪里编写的问题出在哪里呢?谢谢.
搜索更多相关主题的帖子: include 编译器 字母 
2014-03-21 18:40
m2273990296
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-3-21
收藏
得分:0 
你的算法怎么那么地繁琐啊,再说循环也不见你使用,学着使用 getchar();
2014-03-21 18:55
陨灭
Rank: 2
等 级:等待验证会员
帖 子:44
专家分:65
注 册:2013-4-21
收藏
得分:10 
首先,你没有使用循环。不过这个我就不说了,只说你错的地方。
if(ch>=97 && ch<=118)
    {    ch = ch-28; }
        
    else if(ch>118 && ch<=122)
          { ch = ch-54;}
经过这一步之后,你的小写已经被转换成了大写字母,这里还是对的,然后继续往下:
if(ch>=65 && ch<=86)
    {  ch = ch+36;}
         
    else if(ch>86 && ch<=90)
    {    ch = ch+10;}
这一步又把你刚刚转化的大写字母转化成了小写字母,结果当然是错的。

1@w-h.win
2014-03-21 19:21
明年今曰
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2014-3-21
收藏
得分:0 
回复 3楼 陨灭
那请问要怎么改呢?
2014-03-21 19:41
zhou78yang
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:18
专家分:100
注 册:2014-3-18
收藏
得分:5 
if(ch>=65 && ch<=86)应当改成else if(ch>=65 && ch<=86)

改动了一下:
#include<stdio.h>
#include <conio.h>
int main()

{ char ch;
    printf("请输入一个字符:\n");
    scanf("%c",&ch);
    if((ch>=97&&ch<=122)||(ch>=65&&ch<=90)){   
    if(ch>=97 && ch<=118)
    {    ch = ch-28;}
        
    else if(ch>118 && ch<=122)
          { ch = ch-54;}
         
    else if(ch>=65 && ch<=86)
    {  ch = ch+36;}
         
    else if(ch>86 && ch<=90)
    {    ch = ch+10;}
   
        
    printf("%c\n",ch);}
    else
        printf("请输入字母!\n");
}

[ 本帖最后由 zhou78yang 于 2014-3-21 19:53 编辑 ]
2014-03-21 19:47
陨灭
Rank: 2
等 级:等待验证会员
帖 子:44
专家分:65
注 册:2013-4-21
收藏
得分:0 
回复 4楼 明年今曰
就像五楼说的,改成else if就可以解决你的问题,不过终究还是没有完成使用循环的要求
for(i=1;i<=4,++i)
{
    ++ch;
    if (ch == 'Z' + 1 || ch == 'z' + 1)
    {
        ch = ch - 26;
    }
}
if (ch <= 'z'&&ch>='a')
{
    ch = ch - ('z' - 'Z');
}
else if (ch >='A' && ch <= 'Z')
{
    ch = ch + ('z' - 'Z');
}
这样应该就符合题中要求了就像五楼说的,改成else if就可以解决你的问题,不过终究还是没有完成使用循环的要求
for(i=1;i<=4,++i)
{
    ++ch;
    if (ch == 'Z' + 1 || ch == 'z' + 1)
    {
        ch = ch - 26;
    }
}
if (ch <= 'z'&&ch>='a')
{
    ch = ch - ('z' - 'Z');
}
else if (ch >='A' && ch <= 'Z')
{
    ch = ch + ('z' - 'Z');
}
这样应该就符合题中要求了

1@w-h.win
2014-03-21 20:11
Mr_Liu
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-3-22
收藏
得分:0 
掉了一个else。。。。。。
2014-03-22 15:18
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:5 
初学时尽量使程序清晰一点为好。
#include<stdio.h>
int main()
{
    char ch;

    printf("请输入一个字符:\n");
    scanf("%c",&ch);
            
    if(ch>='a'&& ch<='v') ch=ch-32+4;
    else if(ch>='A'&& ch<='V') ch=ch+32+4;
    else if(ch>='w' && ch<='z') ch=ch-32-26+4;
    else if(ch>='W' && ch<='Z') ch=ch+32-26+4;
   
    printf("%c\n",ch);
    return 0;
}
2014-03-22 20:40
快速回复:求各位赐教,输入一个字符把它循环转换成自身的后4个字母的小写形式
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022087 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved