1、国家二级 C语言机试(操作题)模拟试卷 58及答案与解析 一、程序填空题 1 给定程序的功能是:调用函数 fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为 1,失败时返回值为 0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量 sfname中,目标文件名放在变量 tfname中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include #inolude int fun(char * source, char *targ
2、et) (FILE *fs, *ft; char ch; /*found*/ if(fs=fopen(source _1_) =NULL) return 0; if (ft=fopen(target;, “w”)=NULL) return 0; printf(“ nThe data in file: n”); oh=fgetc(fs); /*found*/ while(!feof( _2_) putchar(ch); /*found*/ fputc(ch, _3_); ch=fgetc(fs); fclose(fs); fclose(ft); printf(“ n n”); return 1;
3、 msin() char sfname20=“myfilel”, tfname2 0=“myfile2”; FILE*myf; int i; char c; myf=fopen(sfname, “w”); printf(“ nThe original data: n”); for(i=1; i #include /*found*/ VOid fun(int a, int b, int c) if(a+bc b+ca a+cb) if(a=b b=c) return 3; else if(a=b | b=c | a=c) return 2; /*found*/ else return 1 els
4、e return 0; main() int a, b, c, shape; printf(“ nInput a, b, c: ”); scanf (“ d d d”, a, int i, n; char S81; in=fopen(“in dat”, “r”); out=fopen(“out dat”, “w”); for(i=0; in) 对统计的 “*”号数目大于给定的 “*”,号总数 n while(*p pt+n) 当超出给定的 “*”,号数目,则开始进行截取 ai=*p; 截取 n个 “*”号 i+: p+; ai= 0; 对新生成的串加尾符 【试题解析】 解题过程首先确定字符串尾,然后由 串尾开始对字符进行判断,同时对 “*”字符进行统计,如果大于 n,就进行截取。 (1)首先确定字符串的尾,然后判断 “*”号字符,并对字符串中的字符进行判断,如果字符是符号 “*”则对 “*”号进行统计。 (2)根据统计的 “*”号数目结合题目中对 “*”号个数的要求,判断是执行对 “*”号的截取操作,还是什么都不用做。 (3)所有字符处理完后,记得在新串 s的末尾加上结束符 “ 0”。