函数ReadDat实现从文件in.dat中读取一篇英文文章存入到无符号字符串数组XX中;请编制函数ChA,其函数的功能是:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个新的值,存入数组单元xx[i][0]中(其中:i是文章中的某行)。第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新的值,存入数组单元xx[i][1]中。以此类推一直处理到最后第二个字符,最后一个字符的ASCII值加原第一个字符的ASCII值,得到最后一个新的值,存放在原字符串对应的位置上

题目

函数ReadDat实现从文件in.dat中读取一篇英文文章存入到无符号字符串数组XX中;请编制函数ChA,其函数的功能是:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个新的值,存入数组单元xx[i][0]中(其中:i是文章中的某行)。第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新的值,存入数组单元xx[i][1]中。以此类推一直处理到最后第二个字符,最后一个字符的ASCII值加原第一个字符的ASCII值,得到最后一个新的值,存放在原字符串对应的位置上,之后把已处理的字符串逆转后仍按行重新存入无符号字符串数组XX中。最后main函数调用函数WriteDat把结果XX输出到out.dat文件中。 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按它的ASCII值作以上处理。注意:部分源程序存放在test.c文件中。 请勿改动主函数main、读数据函数ReadDat和输出数据函数WriteDat的内容。


相似考题

1.函数ReadDat()的功能是实现从文件IN39.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数ChA(),该函数的功能是:以行为单位把字符串的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个新的字符,第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新的字符,以此类推一直处理到倒数第二个字符,最后一个字符的ASCII值加第一个字符的ASCII值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把已处理的字符串逆转后仍按行重新存入字符串数组xx中,并调用函数WriteDat()把结果xx输出到文件OUT39.DAT中。注意:部分源程序已给出。原始文件存放的格式是:每行的宽度小于80个字符,含标点符号和空格。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。试题程序:include<stdio.h>include<string.h>include<conio.h>char xx[50] [80];int maxline=0;int ReadDat ();void WriteDat();void ChA(void){}void main(){clrscr ( );if (ReadDat ()){printf ("数据文件IN39.DAT不能打开! \n\007");return;}ChA( );WriteDat ();}int ReadDat (void){FILE *fp;int i=0;char *p;if ((fp=fopen ( "IN39.DAT ", "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(){FILE *fp;int i;clrscr ();fp=fopen ("OUT39.DAT", "w");for (i=0; i<maxline; i++){printf ("%s\n", xx [i] );fprintf (fp, "%s\n", xx [i] );}fclose (fp);}

更多“ 函数ReadDat实现从文件in.dat中读取一篇英文文章存入到无符号字符串数组XX中;请编制函数ChA,其函数的功能是:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个新的值”相关问题
  • 第1题:

    函数ReadDat实现从文件in.dat中读取一篇英文文章存入到字符串数组XX中;请编制函数CharConvA,其函数的功能是:以该文章中的行为单位把字符串中的最后一个字符的ASCII值右移4位二进制位,高位补0后加倒数第二个字符的 ASCII值,得到最后一个新的值,倒数第二个字符的ASCII值右移4位二进制位,高位补0后加倒数第三个字符的ASCII值,得到倒数第二个新的值,以此类推一直处理到第二个字符。注意:第一个新的值与上述处理不同,第一个字符的ASCII值加原最后一个字符的ASCII值,得到第一个新的值。得到的新值分别存放在原字符串对应的位置上,之后把已处理的结果仍按行重新存入数组中XX最后Xmain函数调用函数WriteDat把结果XX输出到文件out.dat中。 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按字符处理。 注意:部分源程序存放在test.g文件中。 请勿改动主函数main、读数据函数ReadDat和输出数据函数WriteDat的内容。


    正确答案:
    【审题关键句】字符的ASCII值右移4位二进制位,高位补0后加其前一个字符的ASCII值,依次向前直到第二个字符,第一个字符则是原第一个字符的ASCII值加最后一个字符的ASCII值。
    【解题思路】
    定义循环变量i、j和字符变量tmp。
    在for循环语句中,循环变量i从0开始,依次递增直到其值等于文章最大行数maxline。在循环体中,首先把第i行字符串的最后一个字符赋给字符tmp,通过表达式“strlen(xx[i])一1”可以得到第i行最后一个字符的数组下标值;然后再继续通过一个for循环从文章第i行字符串的最后一个字符开始,每循环一次循环变量减1,字符xx[i][j]的ASCII码的二制位右移4位与其前一个字符xx[i][j-1]的ASCII码之和赋给字符)XX[i][j],直到第i行字符串的第二个字符为结束;最后,将第i行字符串的最后一个字符的ASCII码值与第i行字符串的第一个字符的ASCII码值之和赋给第一个字符。
    【参考答案】

  • 第2题:

    函数RData实现从文件in.dat中读取一篇英文文章存入到字符串数组original中,请编写函数StrCharMove,其函数的功能是:以行为单位把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组0riginal中,最后调用函数 WData,把结果0riginal输出到文件out.dat中。 原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。注意:部分程序已经给出。 请勿改动主函数main、读数据函数RData和输出数据函数WData的内容。


    正确答案:
    【审题关键句】以行为单位把所有字符的ASCII值右移4位,后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符。
    【解题思路】
    ①首先定义循环变量i、i和表示字符串长度的整型变量strl。
    ②在第一层for循环中,循环变量i从0开始,依次递增直到其值等于或大于maxline,在循环体中,首先用函数strlen(original[i])计算字符串original[i]的长度,把这个值赋给整型变量strl。在第二层fbr循环中,循环变量j从0开始,依次递增直到其值等于或大于strl,利用表达式0riginal[i][j]+=original[i][j]>>4实现对字符original[i][j]的ASCII码值右移4位后所得到值与原字符original[i][j]的ASCII码值相加,仍存入原字符串对应的位置上的功能。
    【参考答案】

  • 第3题:

    函数Rdata实现从文件in.dat中读取一篇英文文章存入到字符串数组string中,请编写函数CharLeft,其功能是:以行为单位把字符串中的所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组string中,最后调用函数Wdata,把结果string输出到文件out.dat中。 原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。注意:部分源程序已经给出。 请勿改动主函数main、读数据函数Rdata和输出数据函数Wdata的内容。


    正确答案:
    【审题关键句】以行为单位把字符串中的所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符仍存入原字符串对应的位置上。
    【解题思路】
    ①首先定义整型循环变量i、j和表示字符串长度的变量str,以及字符局部变量ch。
    ②在第一层for循环语句中,循环变量i从0开始,依次递增直到其值等于maxline,在循环体中,首先对字符串string[i]利用库函数strlen求其长度,把此值赋给变量str。在第二层for循环语句中,循环变量j开始0,依次递增直到其值等于str,把字符string[i][j]的ASCII值左移4位后所得到字符赋给变量ch,再用if语句判断ch的值是否大于32并且小于等于100,如果成立,则把ch的值与string[i][j]的值相加,所得的新值保存在string[i][j]中。
    【参考答案】

  • 第4题:

    函数ReadDat实现从文件in.dat中读取一篇英文文章存入到字符串数组XX中;请编制函数SortCharD,其函数的功能是:以行为单位对字符按ASCII码从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组XX中。最后main函数调用函数WriteDat把结果XX输出到文件out.dat中。 例:原文:dAe,BfC. CCbbAA结果:fedCBA.,bbCCAA原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序存放在test.C文件中。 请勿改动主函数main、读数据函数ReadDat和输出数据函数WriteDat的内容。


    正确答案:
    【审题关键句】以行为单位对字符按从大到小排序,结果仍按行重新存入字符串数组中。
    【解题思路】
    ①首先定义字符变量ch和无符号整型变量i、j、k。
    ②对字符二维数组XX,在第一层for循环中,变量i从0开始,依次递增直到其值等于maxline,实现对文章每行的扫描,在第二层for时循环中,变量j从0开始,依次递增直到其值等于strlen(xx[i]),即第i行的长度。在第三层循环语句中,变量k从j开始,依次递增直到其值等于strlen(xx[i]),对每一行中的数组元素xx[il[j]、XX[i][k]按照它们的ASCII码值的大小进行比较,如果xx[i][j]的ASCII码小于XX[i][k]的ASCII码,则两者交换,实现整篇文章中的字符按ASCII码值从大到小的顺序进行排序。
    【参考答案】

  • 第5题:

    函数ReadDat实现从文件in.dat中读取一篇英文文章存入到字符串数组XX中,请编制函数StrCharJR,其函数的功能是t以该文章中的行为单位把字符串中的所有字符的二进制ASCII值右移4位,高位补0,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的值仍存入原字符串对应的位置上,之后把已处理的结果仍按行重新存入数组XX中。最后 main函数调用函数WriteOat把结果XX输出到文件out.dat中。 例如: ”z”对应的ASCII值为7AH,二进制值为01111010,右移4位后为00000111,加上原来”2”的ASCII值01111010得到10000001结果。 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按字符处理。 注意:部分源程序存放在test.C文件中。 请勿改动主函数main、读函数ReadDat和输出函数WriteDat的内容。


    正确答案:
    【审题关键句】字符的ASCII值右移4位二进制位,高位补0后加原字符的ASCII值。
    【解题思路】
    ①定义两个循环变量i、j和一个无符号字符变量tmp。
    ②在第一个for循环语句中,循环变量i从0开始,依次递增直到其值等于文章最大行数maxline。在第二个for循环中,从每行第1个字符开始,依次递增直到其值等于该行字符串的最大长度,然后在循环体中指定每次循环时,将第i行第i个位置上的字符的ASCII值的二进制数右移4位,然后将所得的值再加上原字符的ASCII码值。
    【参考答案】