问题 问答题

函数ReadDat()的功能是实现从文件ENG18.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,结果仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS18.DAT中。
替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)的值小于等于32或f(p)对应的字符是数字0至9,则该字符不变,否则将f(p)所对应的字符进行替代。
注意:部分源程序已给出。
原始数据文件存放的格式是:每行的宽度均小于80个字符。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
试题程序:
#include〈conio.h>
#include〈ctype.h>
unsigned char xx[50] [80];
int maxline = 0; /* 文章的总行数 */
int ReadDat (void);
void WriteDat(void); void encryptChar()
   main ( )

clrscr ( );
if (ReadDat ())

printf("数据文件ENS18.IN不能打开! \n\007");
return;

encryptChar ();
WriteDat ();
int ReadDat (void)

FILE *fp;
int i=0;
unsigned char *p;
if((fp = fopen("ENG18.IN", "r")) ==NULL)
return 1;
while(fgets(xx[i], 80, fp) !=NULL)

p = strchr(xx[i], ’\n ’);
if(p) *p = 0;
i++;

maxline = i;
fclose (fp);
return 0;
void WriteDat(void)

FILE *fp;
int i;
fp = fopen ("PS18.DAT", "w");
for(i = 0; i〈maxline; i++)

printf("%s\n", xx[i] );
fprintf(fp, "%s\n", xx[i]);

fclose (fp);

答案

参考答案:
void encryptChar()
{
int i;
char *pf;
for (i=0; i〈maxline; i++)
{
pf=xx [i];
while (*pf !=0)
{
if((*pf*11%256>=’0’ && *pf*11%256〈=’9’) || *pf*11%256〈=32)
{pf++;continue;} /*如果计算后的值小于等于32或f(p)对应的字符是数字0至9,则该字符不变*/
*pf=*pf*11%256; /*否则按给定的替代关系进行替代*/
pf++;
}
}
}

解析: 本题主要考查用指针变量来控制字符数组,由于要对已有二维字符数组的所有元素逐个处理,因此,需要定义一个字符指针变量来控制原二维数组的各行,当前行如果确定下来,用指针的移动就可以依次扫描该行的所有字符元素,每得到一个字符就对它行条件判断,根据题意,条件用“if(*pf*11%256>=’0’ && *pf*11%256<=’9’)||*pf*11%256<=32)”语句来实现,如果该字符不满足上述条件,就用一个新的字符来替代,新的字符是当前字符乘以11的结果再去与256求余数。处理完毕后,指针去取下一个字符。如果该字符满足所给条件,将不做任何操作,指针直接下移,去取下一个字符,对下一个字符进行处理。

阅读理解与欣赏

课内阅读

走一步,再走一步

  那是费城七月里一个闷热的日子,虽然时隔五十七年,可那种闷热我至今还能感觉得到。当时和我一起的五个小男孩,因为玩弹子游戏玩厌了,都想找些新的花样来玩。  “嗨!”内德说,“我们很久没有爬悬崖了。”

  “我们现在就去爬吧!”有个孩子叫道。他们就朝一座悬崖飞跑而去。

  我一时拿不定主意。虽然我很希望自己也能像他们那样活泼勇敢,但是自我出世以后,八年来我一直有病,而且我的心里一直牢记着母亲叫我不要冒险的训诫。

  “来呀!”我最要好的朋友杰利对我叫喊,“别做胆小鬼。”

  “我来了!”我一面应着,一面跟着他们跑。

  我们最后来到一处空地。那座悬崖就耸立在空地的另一边。它是一堵垂直的峭壁,壁面有许多凸出来的岩石、崩土和蓬乱的灌木。大约只有二十米高,但在我眼中却是高不可攀的险峰。

  其他孩子一个接一个地向上爬,朝着一块离崖顶还有三分之二路程的狭小岩石架进发。我落在最后,全身颤抖,冷汗直冒,也跟着他们向上爬。我的心在瘦骨嶙峋的胸腔里咚咚直跳。

  我终于爬上去了,蹲在石架上,心惊肉跳,尽量往里靠。其他的孩子慢慢地向石架边缘移动,我看在眼里,吓得几乎晕倒。接着,他们又开始向崖顶攀爬。他们打算从崖顶沿着一条迂回的小路下山回家。

  “嗨,慢着,”我软弱地哀求道,“我没法下去。”

  “再见!”其中一个孩子说。其他孩子跟着也都哈哈大笑起来。

  他们左折右转地爬上了崖顶,向下凝视着我。“如果你想待在那里,就待着好了。”有个孩子嘲笑道,“不用客气。”杰利看来好像有点不放心,但还是和大家一起走了。

  我从石架向下望,感到头晕目眩;我绝对没法爬下去,我会滑倒摔死的。但是,往崖顶的路更难爬,因为它更陡,更险。我听见有人啜泣,正纳罕那是谁,结果发现原来是我自己。

  时间一分一秒地过去,暮色开始四合。在一片寂静中,我伏在岩石上,恐惧和疲乏使我全身麻木,不能动弹。

  暮色苍茫,天上出现了星星,悬崖下面的大地越来越暗。这时,树林里有一道手电光照来照去。我听到了杰利和我父亲的声音!父亲的手电光照着我。“下来吧,孩子,”他带着安慰的口气说,“晚饭做好了。”

  “我下不去!”我哭着说,“我会掉下去,我会摔死的!”

  “听我说吧,”我父亲说,“不要想着距离有多远。你只要想着你是在走一小步。你能办得到的。眼睛看着我手电筒的光照着的地方,你能看见石架下面那块岩石吗?”

  我慢慢地把身体移过去。“看见了。”我说。

  “好,”他对我说,“现在你把左脚踏到那块岩石上。不要担心下一步。听我的话。”   这似乎能办得到。我小心翼翼地伸出左脚去探那块岩石,而且踩到了它。我顿时有了信心。“很好,”我父亲叫道,“现在移动右脚,把它移到右边稍低一点的地方,那里有另外一个落脚点。”我又照着做了。我的信心大增。“我能办得到的。”我想。

  我每次只移动一小步,慢慢爬下悬崖。最后,我一脚踩在崖下的岩石上,投入了父亲强壮的手臂中。我先是啜泣了一会儿,然后,我产生了一种巨大的成就感。这是我永远忘不了的经历。

  我曾屡次发现,每当我感到前途茫茫而灰心丧气时,只要记起很久以前我在那座小悬崖上所学到的经验,我便能应付一切。我提醒自己,不要想着远在下面的岩石,而要着眼于那最初的一小步,走了这一步再走下一步,直到抵达我所要到的地方。这时,我便可以惊奇而自豪地回头看看,自己所走过的路程是多么漫长。

1.将第一段中“那是费城七月里一个闷热的日子,虽然时隔五十七年,可那种闷热我至今还能感觉得到”一句改为“那是费城七月里的一天”好不好?为什么?

________________________________

2.请你结合文章,试着说说作者是怎么写出自己在悬崖上的紧张和害怕的,至少从两个角度进行分析。

________________________________

3.请你用文章中的话说说,作者从这件事中获得的启示是什么。

________________________________

问答题 简答题