QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 836|回复: 5

数组部分最后一道!:)呵呵!劳驾了!:)

[复制链接]
发表于 2004-12-6 20:00:58 | 显示全部楼层 |阅读模式
[code:1]/*有一行电文,已经安现面规律译成密码:
A---Z     a---z
B---Y     b---y
C---X     c---x
.         .
.         .
.         .
即,第一个字母转变成地26个字母,地i个字母转变成地(26-i+1)个字母,非字母字符不转换。用程序将密码翻译会原文,打印出密码和原文*/
#include<stdio.h>
#define m 1000
main()
{
  char a[m];
  int i,j,k;
  for(i=0;i<m&&(a[i]=getchar())!='\n';i++)
    a[i]='\0';
  for(i=0;a[i]!='\0';i++)
  {printf("%c",a[i]);
  if((int)a[i]>=65&&(int)a[i]<=90)
  {j=90-(int)a[i]+65;
  printf("%c",j);
  }
  else if((int)a[i]>=97&&(int)a[i]<=120)
  {k=122-(int)a[i]+97;
  printf("%c",k);
  }
  else
    printf("%c",a[i]);
  }
}[/code:1]
[code:1]fydream@linux:~/源代码/unit 7> gcc -lm -o dreamdead 712.c
fydream@linux:~/源代码/unit 7> ./dreamdead
ZZZ
fydream@linux:~/源代码/unit 7>
[/code:1]
为什么我输入字母他没有显示密码??我觉得我写的这个应该没问题呀?
在tc下可以很好的运行!:)谢谢指教!:)
发表于 2004-12-7 15:20:48 | 显示全部楼层
最后执行fflush(stdout);
回复

使用道具 举报

 楼主| 发表于 2004-12-7 20:11:46 | 显示全部楼层
请问版主老兄:这个fflush(stdout);是不是加在程序的最后一行?
但是能不能告诉我!这一行是什么意思?是干什么用的?好让小弟我
也有一定的了解!:)谢谢!:)
回复

使用道具 举报

发表于 2004-12-7 21:29:23 | 显示全部楼层
程序可能是没有问题, 或者你在最后显示的printf中加一个换行符'\n'试试,
应该就可以显示了。

当然用fflush(stdout)是没错的。

fflush(stdout) 的作用:
把输入缓冲区的内容清空,或者把输出缓冲区的内容输出到stream中,
stream可以是文件,也可以是stdout, 标准输出终端(屏幕)

google 一下, 到处都是详细解释
fflush
<stdio.h>        

int  fflush (FILE * stream);

Flush a stream.
  If the given stream has been opened for writing operations the output buffer is phisically written to the file.
  If the stream was open for reading operations the content of the input buffer is cleared.
  The stream remains open after this call.
  When a file is closed all the buffers associated with it are automatically flushed. If the program terminates, every buffer is automatically flushed.

Parameters.

stream
    pointer to an open file.

Return Value.
  A 0 value indicates success.
  If any errors occur, EOF is returned.

Example.
  To demonstrate the use of fflush, we ask twice the user to input some words in a sentence. Each time the program reads the first word with scanf and flushes the rest. The next time the user is prompt the buffer will be cleared so we will be able to obtain the first word of the new sentence.

/* fflush example */
#include <stdio.h>
int main()
{
   int n;
   char string[80];
   for ( n=0 ; n<2 ; n++ )
   {
     printf( "Enter some words: " );
     scanf( "%s", string );
     printf( "The first word you entered is : %s\n", string );
     fflush ( stdin );
   }
   return 0;
}

Output.
Enter some words: Testing this program
The first word you entered is : Testing
Enter some words: It seems to work...
The first word you entered is : It
回复

使用道具 举报

发表于 2004-12-7 21:33:47 | 显示全部楼层
注意一下,linux中,文件(File)的含义和win中不同
回复

使用道具 举报

 楼主| 发表于 2004-12-7 22:21:11 | 显示全部楼层
好的!严重感谢yunfan老兄的注解!我会慢慢理解的!:)谢谢!:)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 23:34 , Processed in 0.090927 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表