知ing

最新计算机二级C语言上机试题汇编100套

NCRE研究组 编 / 高等教育出版社

゛Zirro、Y 上传

查看本书

33套: 

给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标 

文件中,复制成功时函数返回值为1,失败时返回值为0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。 

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 

注意:源程序存放在考生文件夹下的BLANK1.C中。 

不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#include <stdio.h> 

#include <stdlib.h> 

int fun(char *source, char *target) 

{ 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"); 

ch=fgetc(fs); 

/ **********found**********/ 

while(!feof(___2___)) 

{ putchar( ch ); 

/ **********found**********/ 

fputc(ch,___3___); 

ch=fgetc(fs); 

fclose(fs); fclose(ft); 

printf("\n\n"); 

return 1; 

main() 

{ char sfname[20] ="myfile1",tfname[20]="myfile2"; 

FILE *myf; int i; char c; 

myf=fopen(sfname,"w"); 

printf("\nThe original data :\n"); 

for(i=1; i<30; i++){ c='A'+rand()%25;fprintf(myf,"%c",c); printf("%c",c); } 

fclose(myf);printf("\n\n"); 

if (fun(sfname, tfname)) printf("Succeed!"); 

else printf("Fail!"); 

解题思路: 

本题要求是把一个文件中的内容复制到另一个文件中。程序中共有三处要填上适当的内容,使程序能运行出正确的结果。 

第一处:要求打开一个读方式的源文件,因此可以填上"r""r+"。打开读文件操作的流是fs。 

第二处:用while循环来判断源文件是否已读到文件结束符,int feof(FILE *stream),因此,此处只能填写fs。 

第三处:把已经读取的字符写入目标文件中,打开写文件操作的流是ft,因此,此处只能填写ft。 

*************************************************** 

给定程序MODI1.C中函数fun的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。 

例如,当s中的数为:87653142时,t中的数为:8642。 

请改正程序中的错误,使它能得出正确的结果。 

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 

给定源程序: 

#include <stdio.h> 

void fun (long s, long *t) 

{ int d; 

long sl=1; 

*t = 0; 

while ( s > 0) 

{ d = s%10; 

/ ************found************/ 

if (d%2=0) 

{ *t=d* sl+ *t; 

sl *= 10; 

/ ************found************/ 

s \= 10; 

main() 

{ long s, t; 

printf("\nPlease enter s:"); scanf("%ld", &s); 

fun(s, &t); 

printf("The result is: %ld\n", t); 

解题思路: 

第一处:判断相等的条件是==。 

第二处:整除的符号是/。 

*************************************************** 

函数fun的功能是:将两个两位数的正整数ab合并形成一个整数放在c中。 

合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。 

例如,当a45b=12时,调用该函数后,c=5142。 

注意部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。 

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 

 

给定源程序: 

#include <stdio.h> 

void fun(int a, int b, long *c) 

main() 

{ int a,b; long c; 

printf("Input a, b:"); 

scanf("%d,%d", &a, &b); 

fun(a, b, &c); 

printf("The result is: %ld\n", c); 

NONO(); 

解题思路: 

本题是给出两个两位数的正整数分别取出各位上的数字,再按条件组成一个新数。 

a十位数字的方法:a/10 

a个位数字的方法:a%10 

参考答案: 

void fun(int a, int b, long *c) 

*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10); 

※※※※※※※※※※※※※※※※※※※※※※※※※ 


查看更多