题目

阅读下列说明,回答问题。

【说明】
逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。

int XOR(char * filename,unsigned long key){

    FILE * input = NULL , *output =  NULL;   //i

    char * outfilename = NULL;

    int len = strlen(filename);

    unsigned char buffer;

    if( (filename[len-2] == '.') && (filename[len-1] == 'c') ) { //2,3

    outfilename = new char[len+1];  //4

    strcpy(outfilename, filename);

    outfilename[len-2] = '�';

    }

    else{   //5

    outfilename = new char[len+5];

    strcpy(outfilename, filename);

    strncat(outfilename,".c",2);

    }

    input =  fopen(filename,"rb");

    if( input == NULL) {   //6
 
    cout << "Error opening file " << filename << endl;  //7

    delete [] outfilename;

    outfilename = NULL;

    return 1;

    }

    output =  fopen(outfilename,"wb");

    if( output == NULL ) {   //8

    cout << "Error creating output file " << outfilename << endl;  //9

    delete [] outfilename;

    outfilename = NULL;

    return 1;

    }

    while( ! feof(input) ) {  //10

    if(fread(&buffer,sizeof(unsigned char),1,input) != 1 ) {   //11

    if( ! feof(input) ) {   //12

    delete [] outfilename;  //13

    outfilename = NULL;

    fclose(input);

    fclose(output);

    return 1;

    }

    }

    else{   //14

    buffer ^= key;

    fwrite(&buffer,sizeof(unsigned char),1,output);

    }

    }

    fclose(input);   //15

    fclose(output);

    delete [] outfilename;

    return 0;

    }
请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG。


作答
本题暂不支持做答,请点击“解析“以对比解题思路
答案/解析
查看试卷及答案