函数ReadDat实现从文件in.dat中读取一篇英文文章,存入到无符号字符串数组xx中;请编制函数encryptChar,按给定的替代关系对数组xx中的所有字符进行替代,其替代值仍存入数组xx的对应的位置上,最后调用函数WriteDat把结果xx输出到文件out.dat中。 替代关系:f(p)=p*11 mod256,mod为取余运算,P是数组xx中某一个字符的ASCII值,f(p)是计算后无符号的整型值(注意:中间变量定义成整型变量),如果计算后f(p)值小于等于32或f(p)对应的字符是小写字母,则

题目

函数ReadDat实现从文件in.dat中读取一篇英文文章,存入到无符号字符串数组xx中;请编制函数encryptChar,按给定的替代关系对数组xx中的所有字符进行替代,其替代值仍存入数组xx的对应的位置上,最后调用函数WriteDat把结果xx输出到文件out.dat中。 替代关系:f(p)=p*11 mod256,mod为取余运算,P是数组xx中某一个字符的ASCII值,f(p)是计算后无符号的整型值(注意:中间变量定义成整型变量),如果计算后f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变,否则用f(p)替代所对应的字符。 注意:部分源程序存放在test.c文件中,原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按此替代关系进行处理。 请勿改动主函数main、读数据函数ReadDat和输出数据函数WriteDat的内容。


相似考题
更多“ 函数ReadDat实现从文件in.dat中读取一篇英文文章,存入到无符号字符串数组xx中;请编制函数encryptChar,按给定的替代关系对数组xx中的所有字符进行替代,其替代值仍存入数组xx的对应的位置上,最”相关问题
  • 第1题:

    函数ReadDat()的功能是实现从文件ENG4.1N中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,结果仍存入数组xx对应的位置上,最后调用函数WriteDat()把结果xx输出到之件PS4.DAT中。

    替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)的值小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。

    注意:部分源程序已给出。

    原始数据文件存放的格式是:每行的宽度均小于80个字符。

    请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。

    试题程序:

    include <stdio.h>

    include <string.h>

    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("数据文件ENG4.IN不能打开! \n\007");

    return;

    }

    encryptChar();

    WriteDat ( );

    }

    int ReadDat (void)

    {

    FILE *fp;

    int i = 0;

    unsigned char *p;

    if((fp = fopen("ENG4.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("PS4.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; imaxline; i++) { Pf=xx[i]; /*指针pf指向各行的首地址*/ while(*pf!=0) { if(*pf*11%256>130 || *pf*11%256=32) /*如果计算后的值小于等于32或大于130*/ /*则该字符不变*/ else *pf=*pf*11%256; /*否则将所对应的字符进行替代*/ pf++; /*指针pf指向下一个字符*/ } } }
    void encryptChar() { int i; char *pf; for(i=0; imaxline; i++) { Pf=xx[i]; /*指针pf指向各行的首地址*/ while(*pf!=0) { if(*pf*11%256>130 || *pf*11%256=32) /*如果计算后的值小于等于32或大于130*/ /*则该字符不变*/ else *pf=*pf*11%256; /*否则将所对应的字符进行替代*/ pf++; /*指针pf指向下一个字符*/ } } } 解析:本题主要考查用指针变量来控制字符数组,由于要对已有二维字符数组的所有元素逐个处理,因此,需要定义一个字符指针变量来控制原二维数组的各行,当前行如果确定下来,用指针的移动就可以依次扫描该行的所有字符元素,每得到一个字符就对它进行条件判断。根据题意,条件用“if(*pf*11%256>130||*pf*11%256=32)”语句来实现,如果该字符不满足上述条件,就用一个新的字符来替代,新的字符是当前的字符乘以11的结果再去与256求余数。处理完毕后,指针去取下一个字符。如果该字符满足所给条件,将不做任何操作,指针直接下移,去取下一个字符,对下一个字符进行处理。

  • 第2题:

    函数ReadDat实现从文件in.dat中读取一篇英文文章,存入到字符串数组XX中;请编制函数encryptChar,按给定的替代关系对数组XX中的所有字符进行替代,仍存入数组XX对应的位置上,最后调用函数WriteDat把结果XX输出到文件 out.dat中。 替代关系:f(p)=p*[3 mod 256,mod为取余运算,P是数组xx中某一个字符的ASCII值,f(p)是计算后的无符号整型值(注意:中间变量定义成整型变量),如果计算后f(p)值小于等于32或是偶数,则该字符不变,否则用f(p)替代所对应的字符。注意:部分源程序存放在test.c文件中,原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按此替代关系进行处理。


    正确答案:
    【审题关键句】字符替代f(p)=p*13mod256,小于等于32或ASCII码是偶数不变,否则替换。
    【解题思路】
    本题类似第65套试题,通过审题可以发现主要是排序条件的设置要求有所不同,参考答案的第6行,修改if条件语句的设置即可。
    【参考答案】

  • 第3题:

    函数ReadDat()实现从文件eng.in中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件ps10.dat中。

    替代关系:f(p)=p*43 mod 256(p是数组中某一个字符的ASCII值,fO)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后fb)值小于等于32,则该字符不变,否则将qp)所对应的字符进行替代。

    部分源程序己给出,原始数据文件存放的格式是:每行的宽度均小于80个字符。

    请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

    include<stdio.h>

    include<string.h>

    include<conio.h>

    include<ctype.h>

    unsigned char xx[50][80];

    int maxline=0;/*文章的总行数*/

    int ReadDat(void)

    void WriteDat(void)

    void encryptChar()

    {

    }

    void main()

    {

    clrscr();

    if(ReadDat()){

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

    return;

    }

    encryptChar();

    WriteDat();

    }

    int ReadDat(void)

    {

    FILE *fp;

    int i=0;

    unsigned char *p;

    if((fp=fopen("eng.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("ps10.dat","w");

    for(i=0;i<maxline;i++){

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

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

    }

    fclose(fp);

    }


    正确答案:void encryptChar() { /*字符替换过程中运算的中间结果可能超过256*/ /*因此采用整型存储中间结果*/ int ijt; for(i=0;imaxline;i++) /*遍历每一行*/ { for(j=0;istrlen(xx[i]);j++) { /*用控型变量进行所有运算*/ t=xx[i][j]; t=t*43%256; /*判断替换条件*/ if(t=32 || xx[i][j]%2==0) continue; xx[i][j]=t; } } }
    void encryptChar() { /*字符替换过程中,运算的中间结果可能超过256*/ /*因此采用整型存储中间结果*/ int i,j,t; for(i=0;imaxline;i++) /*遍历每一行*/ { for(j=0;istrlen(xx[i]);j++) { /*用控型变量进行所有运算*/ t=xx[i][j]; t=t*43%256; /*判断替换条件*/ if(t=32 || xx[i][j]%2==0) continue; xx[i][j]=t; } } } 解析:关键点:
    1.字符串读写。
    2.由于fgets()函数读入数据时读入换行符'\n',因而需要在xx数组每一行末尾将换行符'\n'替换成结束符'\0'。本题中此步已经在ReadDat()函数中完成。
    3.算法:让字符指针pf指向每一行的开头然后逐一往后移动,在移动过程中按要求进行转换。*pf%2=0用于判断是否为偶数。If()条件语句用于控制不替代字符。
    4.中间变量的类型选择整型。

  • 第4题:

    函数ReadDat实现从文件in.dat中读取一篇英文文章,存入到字符串数组XX中;请编制函数eneryptChar,按给定的替代关系对数组XX中的所有字符进行替代,仍存入数组XX对应的位置上,最后调用函数WriteDat把结果xX输出到文件 out.dat中。 替代关系:f(p)=p*11 mod 256,mod为取余运算,P是数组XX中某一个字符的ASCII值,f(p)是计算后的无符号整型值(注意:中间变量定义成整型变量),如果计算后f(p)值小于等于32或f(p)对应的字符是大写字母,则该字符不变,否则用 f(p)替代所对应的字符。 注意:部分源程序存放在test.c文件中,原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按此替代关系进行处理。 请勿改动主函数main、读函数ReadDat和输出函数WriteDat的内容。


    正确答案:
    【审题关键句】字符替代f(p)=p*11mod256,小于等于32或对应大写字母不变,否则替换。
    【解题思路】
    本题类似第65套试题,通过审题可以发现主要是排序条件的设置要求有所不同,参考答案的第6行,修改if条件语句的设置即可。另外,在源程序中已经定义了一个无符号变量va1,因此,在编写答案程序时,不需要再重新定义。
    【参考答案】

  • 第5题:

    函数ReadDat实现从文件in.dat中读取一篇英文文章,存入到字符串数组)xx中;请编制函数encryptChat,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组XX对应的位置上,最后调用函数WriteDat把结果XX输出到文件 out.dat中。 替代关系:f(p)=p*11 mod 256,mod为取余运算,p是数组)xx中某一个字符的ASCII值,f(p)是计算后的无符号整型值(注意:中间变量定义成整型变量),如果计算后f(p)值小于等于32或f(p)对应的字符是数字0至9,则该字符不变,否则用 f(p)替代所对应的字符。 注意:部分源程序存放在test.C文件中,原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按此替代关系进行处理。


    正确答案:
    【审题关键句】字符替代f(p)=p*11mod256,小于等于32或对应数字0-9不变,否则替换。
    【解题思路】
    本题类似第65套试题,通过审题可以发现主要是排序条件的设置要求有所不同,参考答案的第6行,修改if条件语句的设置即可。
    【参考答案】