| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 831 人关注过本帖
标题:C语言 有一个小问题
只看楼主 加入收藏
神之驱逐
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:136
专家分:436
注 册:2011-11-22
结帖率:87.5%
收藏
 问题点数:0 回复次数:6 
C语言 有一个小问题
译密码    将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D。字母按上述规律转换,非字母保持原状不变,如“China!"转换为“Glmre!”

源程序如下 :
#include<stdio.h>
int main( )
 {char c;
   c=getchar( );                         //输入一个字符给字符变量c
   while(c!='\n')                         //检查c的值是否换行符'\n'
     {if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))       //c如果是字母
          {if(c>='W'&&c<='Z'||c>='w'&&c<='z')    c=c-22;  
                                                       //如果是26个字母中最后4个字母之一就使c-22
            else  c=c+4;               //如果是前面22个字母之一,就使C加4,即变成其后                                                     
                                              //第四个字母
         }
         printf("%c",c);                 //输出已改变的字符
         c=getchar( );                   //再输入下一个字符给字符变量C
         }
   printf("\n");
   return  0;
 }   



在while(c!='\n')        为什么要写这一步,检查C的值是否换行符'\n'  它的作用是什么   这一步不理解,可不可以把'\n'换成   '\t'
搜索更多相关主题的帖子: 字母 检查 include C语言 换行符 
2011-11-22 18:53
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
楼主试试用求余做
程序代码:
#include <stdio.h>
#include <string.h>
int main()
{
    int i,j,t;
    char buf[100];
    while(EOF != scanf("%s",buf))
    {
        int len = strlen(buf);
        for(i = 0;buf[i];i++)
        {
            if(buf[i]>='W' && buf[i]<='Z')
                buf[i] = 64+(buf[i]+4)%90;
            else if(buf[i]>='w' && buf[i]<='z')
                buf[i] = 96+(buf[i]+4)%122;
            else
                buf[i]+=4;
        }
        puts(buf);
    }
    return 0;
}


                                         
===========深入<----------------->浅出============
2011-11-22 19:27
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:0 
为什么要写这一步,检查C的值是否换行符'\n'  它的作用是什么   这一步不理解,可不可以把'\n'换成   '\t'
这个是检查是否把输入的字符都转换了,输入字符后输入回车表示输入完成,然后执行的时候找到\n表示执行完成
2011-11-22 19:32
老王子
Rank: 2
等 级:论坛游民
帖 子:34
专家分:43
注 册:2011-2-11
收藏
得分:0 
按下回车就结束了程序
没有 while(c!='\n')
你就要一直输入字母了
不然就要强调退回了!
2011-11-22 23:00
逐鹿Internet
Rank: 1
等 级:新手上路
帖 子:10
专家分:1
注 册:2011-8-31
收藏
得分:0 
\n表示读完你输入的所有内容,当然,你用while(ch!='\t')也是可以的,当读到制表符就停止,但却不一定读完(你可以自己试试)。这就好比是while(ch!='m'),遇到m就停止了
2011-11-23 00:30
天天涯涯
Rank: 4
等 级:业余侠客
帖 子:215
专家分:267
注 册:2011-10-17
收藏
得分:0 
表示当你的getchar()接受的为“回车键”时,系统会认为while结束,也就是你的输入结束。
2011-11-23 11:23
神之驱逐
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:136
专家分:436
注 册:2011-11-22
收藏
得分:0 
谢谢大家的解答,我明白了!

你在努力,你就在进步!
2011-11-23 16:32
快速回复:C语言 有一个小问题
数据加载中...
 
   



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

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