《三级信息管理技术机试-270》由会员分享,可在线阅读,更多相关《三级信息管理技术机试-270(2页珍藏版)》请在金锄头文库上搜索。
1、三级信息管理技术机试 -270( 总分: 100.00 ,做题时间: 90 分钟 )、上机题( 总题数: 1,分数: 100.00)1.下列程序的功能是:把 s字符串中的所有字母改成该字母的下一个字母,字母Z改成字母a。要求大写字母仍为大写字母, 小写字母仍为小写字母, 其他字符不做改变。 请编写函数 chg(char*s) 实现程序要求, 最后调用函数 readwriteDAT() 读取 in60.dat 中的字符串,并把结果输出到文件 out60.dat 中。例如:s字符串中原有的内容为 Mn 123Zxy,则调用该函数后,结果为 No 123Ayz。 注意:部分源程序已给出。请勿改动主函
2、数 main() 和输入输出函数 readwriteDAT() 的内容。 试题程序 #includev stdio.h#includev string.h#includev stdlib.h#includev ctype.h#define N 81void readwriteDAT();void chg(char*s)voidmain()char aN; system(CLS); printf(Enter a string:); gets(a);printf(The original string is:);puts(a);chg(a);printf(The string after modi
3、fied:); puts(a);readwriteDAT();void readwriteDAT()int i;char aN;FILE*f,*wf;rf=fopen(in60.dat,r); wf=fopen(out60.dat,w);for(i=0;i v 10;i+)fgets(a,81,rf);chg(a);fprintf(wf,%s,a);fclose(rf); fclose(wf);分数: 100.00 )正确答案: (void chg(char* *s)while(*S) /* 若当前字符不是字符串结束符,则循环一直进行 */ if(*s=Z|*s=Z) /* 如果当前字母是 Z 或者 Z*/*s-=25;/* 则分别将其改成a;或A*/S+; /* 取下一个字母 */else if(*S =a/&*S =A%*S =Y) /* 若是大写字母,则改成该字母的下一个字母 */*S+=i;s+; /* 取下一个字母 */else s+; /* 取下一个字母 */)解析: 解析 本题考查用指针访问字符串的方法。这里利用一个while循环对从字符串中逐个获取的字符进行判断,如果当前字符是小写字母z或Z,则相应地改成a或者A。如果不是,再接着判断是否是字母,如果是,就改成该字母的下一个字母,否则 不作改变。