当前位置: 代码迷 >> C语言 >> 一个译密码的问题
  详细解决方案

一个译密码的问题

热度:86   发布时间:2006-11-06 11:48:04.0
我想它是一个一个译的.但是因为循环还未结束而getchar还未接收输入,因而不能跳回到用户界面吧,所以你就看不到了.我想关键还是在getchar(),这个函数的问题吧.试搞一个没有它的函数看看会不会.
----------------解决方案--------------------------------------------------------
以下是引用半兽人在2006-11-3 14:27:01的发言:

我知道这在内存中是一一处理的,但是为什么PRINTF却不是立即反映呢?难道说PRINTF的语句是先在后台运行,然后再一起反应到显示上来的?





其实还是一个一个输出的,只是因为处理速度的关系,给人印象是一起处理完了再打印输出.
你在 printf ("%c", c); 后面加一条读取输入的函数(如getchar(),gets()之类的)或者加system ("pause");(用于程序暂停的,标准ANSI命令),你就能知道它到底是怎么运行的了.

[此贴子已经被作者于2006-11-6 12:22:20编辑过]


----------------解决方案--------------------------------------------------------
if(c>'Z'&&c<='Z'+4||c>'z')
这句是什么意思啊,为什么这样写.不懂诶~指教一下下
----------------解决方案--------------------------------------------------------
以下是引用半兽人在2006-11-1 11:15:29的发言:

潭浩强那本C语言中有一个例题;译密码:既将字母变成其后第四个字母,W变成A,X变成B,Y变成C,Z变成D...非字母字符不变.如China! 变成 Glmre!
程序如下:
#include <stdio.h>
void main()
{
char c;
while ((c=getchar())!='\n')
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{
c=c+4;
if(c>'Z'&&c<='Z'+4||c>'z')
c=c-26;
}
printf("%c",c);
}
printf("\n");
}

运行结果如下:
input : China!
output: Glmre!

我的问题:为什么不是输入一个字符就输出一个密码,而是全部输完后才一次性处理?

#include <stdio.h>
void main()
{
char c;
int i=0;
while ((c=getchar())!='\n')
{ i++;
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{
c=c+4;
if(c>'Z'&&c<='Z'+4||c>'z')
c=c-26;
}
printf("我第%d次输出的字符%c\n",i,c);
}
printf("不知道楼主的编译器能不能输出中文,看了这个应该可以理解了\n");
}


----------------解决方案--------------------------------------------------------
  相关解决方案