第16类 字符移动.docVIP

  • 1
  • 0
  • 约4.02千字
  • 约 6页
  • 2017-12-27 发布于河南
  • 举报
第16类 字符移动

第16类 字符移动 第16类 字符移动 试题八十五 函数ReadDat( )的功能是实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数StrCharJL( ),该函数的功能是:以行为单位把字符串中的所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符的ASCII值,得到的新字符仍存入到原字符串对应的位置。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat( )把结果xx输出到文件OUT.DAT中。 注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。请勿改动主函数main( )、读函数ReadDat( )和写函数WriteDat( )的内容。【参考答案】 void StrCharJL(void) { int i,j; /*定义循环控制变量*/ int str; char ch; for(i=0;imaxline;i++) /*以行为单位获取字符*/ { str=strlen(xx[i]); /*求得当前行的字符串长度*/ for(j=0;jstr;j++) { ch=xx[i][j]4; if(ch=32 || ch100) continue; /*如果左移4位后字符的ASCII值小于等于32或大于100,则原字符保持不变*/ else xx[i][j]+=4; /*否则就把左移后的字符ASCII值加上原字符的ASCII*/ } } } 试题八十六 函数ReadDat( )的功能是实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数ChA( ),该函数的功能是:以行为单位把字符串的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个新的字符,第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新的字符,以此类推一直处理到倒数第二个字符,最后一个字符的ASCII值加第一个字符的ASCII值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把已处理的字符串逆转后仍按行重新存入字符串数组xx中,并调用函数WriteDat( )把结果xx输出到文件OUT.DAT中。 注意:部分源程序已给出。原始文件存放的格式是:每行的宽度小于80个字符,含标点符号和空格。请勿改动主函数main( )、读函数ReadDat( )和写函数WriteDat( )的内容。【参考答案】 void ChA(void) {  int i,j,k; /*定义循环控制变量*/ int str; /*存储字符串的长度*/ char ch,temp; /*定义字符暂存变量*/ for(i=0;imaxline;i++) /*以行为单位获取字符*/ { str=strlen(xx[i]); /*求得当前行的字符串长度*/ ch=xx[i][0]; /*将第一个字符暂存入ch*/ for(j=0;jstr-1;j++) /*将该字符的ASCII值赋值为下一个字符的ASCII值加1,得到新的字符*/ xx[i][j]+=xx[i][j+1]; xx[i][str-1]+=ch; /*将最后一个字符的ASCII值与第一个字符的ASCII值相加,得到最后一个新的字符*/ for(j=0,k=str-1;jstr/2;j++,k--) /*将字符串逆转后仍按行重新存入字符串数组xx中*/ { temp=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=temp; } } } 试题八十七 下列程序的功能是:把s字符串中所有的字符左移一个位置,串中的第一个字符移到最后。请编制函数chg(char *s)实现程序要求,最后调用函数readwriteDat( )把结果输出到OUT.DAT文件中。 例如:s字符串中原有内容为Mn,123xyZ,则调用该函数后,结果为n,123xyZM。 注意:部分源程序存

文档评论(0)

1亿VIP精品文档

相关文档