资源描述
三级信息管理技术机试 -267( 总分: 100.00 ,做题时间: 90 分钟 )、上机题( 总题数: 1,分数: 100.00)1.函数ReadDat()的功能是实现从文件IN63.DAT中读取一篇英文文章,并存入到字符串数组 XX中。请编 制函数StrCharJL(),该函数的功能是:以行为单位把字符串中的所有字符的 ASQ值左移4位,如果左移 后其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCI值再加上原字符的ASCI值,得到的新字符仍存入到原字符串对应的位置。之后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数 WfiteDat()把结果xx输出到文件OUT63.DAT中。 注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于 80 个字符,含标点符号和空格。请勿改动主函数 main() 、读函数 ReadDat() 和写函数 WriteDat() 的内容。 试题程序 #inciude #include #include char XX5080;int maxline=0;int ReadDat(void);void WriteDat(void);void StrCharJL(void)void main()system(CLS);if(ReadDat()printf( 数据文件 IN63.DAT 不能打开 /n/007);return;StrCharJL();WriteDat();int ReadDat(void)FILE*fp;int i=0;char*P;if(fP=fopen(IN63.DAT,r)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL)P=strchr(xxi,/n);if(P)*P=0;i+;maxline=i;fclose(fp);return 0 :void WriteDat(void)FILE*fp;int i;system(CLS); fp=fopen(OUT63.DAT,w);for(i=0;i maxline;i+)printf(%s/n,xxi);fprintf(fp,%s/n,xxi);fclose(fP);分数: 100.00 ) 正确答案: (void StrCharJL(void)int i,j; /*定义循环控制变量 */int str; /*用来存储每行字符串的长度*/char ch : /* 保存当前取得的字符 */for(i=0;i maxline;i+) /* 以行为单位获取字符 */str=strlen(xxi); /*求得当前行的字符串长度 */for(j=0;j str;j+)ch=xxij; /* 获取当前字符 */if(ch 4 =32 | ch 100)continue; /* 如果左移4位后字符的。ASQ值小于等于32或大于100,则原字符保持不变*/elsexxlij+;ch 4;/*否则把左移后的字符ASCI值加上原字符的ASU值*/)解析: 解析 利用双重循环按照先行后列的顺序逐个取得数组中的字符,外层循环用来控制行数,内层循环用来依次取得各行中的每一个字符。循环内部用一个if语句判断当前字符的 ASCI码左移4位后是否满足小于等于32或者大于100的条件,如果满足,则该字符保持不变,否则就把左移后的字符ASCI值加上原字符的ASCI值,作为得到的新字符存入当前位置。
展开阅读全文