| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 703 人关注过本帖
标题:帮忙看看程序哪点有问题
只看楼主 加入收藏
g270615179
Rank: 2
等 级:论坛游民
帖 子:32
专家分:63
注 册:2012-3-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:18 
帮忙看看程序哪点有问题
程序代码:
#include"stdio.h"
#include"stdlib.h"
main()
{
      char c,a[100];
      int i,t=0;
      while(c!='\n')
      {
         scanf("%c",&c);
         if(c>=65&&c<=87||c>=97&&c<=119)
            a[t++]=c+3;
         else {
               if(c>=88&&c<=90||c>=120&&c<=122)
                  a[t++]=c-23;
               else a[t++]=c;
               } 
      }
      for(i=0;i<t;i++)
          printf("%c",a[i]);
     
      system("pause");
}
将输入的字符串译成密码,密码的规律是:若为英文字母,则取字母后面的第3个字母代替原来的字母,非字母则不变,若为字母表最后三个字母则分别用最前面三个字母替换,例如x译成密码a,z译成密码c
为什么输出的字符里会多出了换行字符?
2012-03-30 22:00
枉椋
Rank: 2
等 级:论坛游民
帖 子:24
专家分:24
注 册:2012-3-30
收藏
得分:10 
#include"stdio.h"
 #include"stdlib.h"
 main()
 {
       char c,a[100];
       int i,t=0;
       while(c!='\n')//这里不能用/n    这样是不是输入了1个字符就跳出来了?你随便换一个,比如才c!='*'
       {
          scanf("%c",&c);
          if(c>=65&&c<=87||c>=97&&c<=119)
             a[t++]=c+3;//{a[t]=c+3;t++}
          else {
                if(c>=88&&c<=90||c>=120&&c<=122)
                   a[t++]=c-23;{a[t]=c-23;t++}
                else a[t++]=c;
                }
      }
       for(i=0;i<t;i++)
           printf("%c",a[i]);
      
       system("pause");
 }
 
2012-03-30 22:12
枉椋
Rank: 2
等 级:论坛游民
帖 子:24
专家分:24
注 册:2012-3-30
收藏
得分:0 
改好的代码:
#include"stdio.h"
#include"stdlib.h"
main()
{
    char c,a[100];
    int i,t=0;
    while(c!='*')
    {
        scanf("%c",&c);
        if(c>=65&&c<=87||c>=97&&c<=119)
        {
            a[t]=c+3;
            t++;
        }
        else {
            if(c>=88&&c<=90||c>=120&&c<=122)
            {
                a[t]=c-23;
                t++;
            }
            else
            {
                a[t]=c;
                t++;
            }
        }
    }
    for(i=0;i<t;i++)
        printf("%c",a[i]);
   
    system("pause");
}
2012-03-30 22:17
lanilao
Rank: 1
等 级:新手上路
帖 子:5
专家分:6
注 册:2011-8-10
收藏
得分:0 
#include"stdio.h"
#include"stdlib.h"
int main()
{
    char c,a[100];
    int i,t=0;
    scanf("%c",&c);
    while(c!=32)
    {
        
        if((c>=65&&c<=87)||(c>=97&&c<=119))
            a[t++]=c+3;
        else if((c>=88&&c<=90)||(c>=120&&c<=122))
                a[t++]=c-23;
        else a[t++]=c;
        
        scanf("%c",&c);
    }
    for(i=0;i<t;i++)
        printf("%c",a[i]);

    system("pause");
    return 0;
}
2012-03-30 22:18
zjkedy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:46
专家分:131
注 册:2010-5-14
收藏
得分:10 
应为 while(c!='\n')是已经输入了字符串内!
2012-03-30 22:19
g270615179
Rank: 2
等 级:论坛游民
帖 子:32
专家分:63
注 册:2012-3-2
收藏
得分:0 
回复 2楼 枉椋
为什么不能用换行字符,当输入换行字符时不就是跳出循环,开始输出了吗?
我想问的是,为什么输出的内容里会多出了换行字符?
2012-03-30 22:25
zjkedy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:46
专家分:131
注 册:2010-5-14
收藏
得分:0 
输出的是时候i<t-1就可以
2012-03-30 22:27
zjkedy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:46
专家分:131
注 册:2010-5-14
收藏
得分:0 
回复 6楼 g270615179
因为在你的while条件判断的是上个循环的输入字符!
2012-03-30 22:28
枉椋
Rank: 2
等 级:论坛游民
帖 子:24
专家分:24
注 册:2012-3-30
收藏
得分:0 
用换行字符,就是回车的意思,你输入了一个字符,按回车,那个c就会捕捉到这个回车,所以程序就不能循环了!
2012-03-30 22:30
g270615179
Rank: 2
等 级:论坛游民
帖 子:32
专家分:63
注 册:2012-3-2
收藏
得分:0 
回复 5楼 zjkedy
啊?输入换行字符不就跳出循环了吗,怎么会已经在字符串里呢?
2012-03-30 22:30
快速回复:帮忙看看程序哪点有问题
数据加载中...
 
   



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

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