国家二级C语言机试(操作题)模拟试卷812
程序填空题
1.给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#include<stdlib.h>
int fun(char*source,char
*target:)
{FTLE*fs,ft; char ch;
/**********found**********/
if((fs=fopen(soLlrce,___1___))==NULL)
return 0;
if((ft=fopen(target,\\
(1)\\
解析:fun函数要求实现的功能是将指定源文件中的内容复制到指定的目标文件中,即以只读方式打开源文件,以只写方式打开目标文件,然后将源文件内的内容复制到目标文件中。
第一空:将指定源文件中的内容复制到指定的目标文件中,源文件只需读,因此,以只读方式打开即可,故第一空处应该是“if((fs=fopen(source,\\
程序修改题
2.给定程序MODI1.C中函数fun的功能是:将长整型数s中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当S中的数为:87653142时,t中的数为:8642。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
void fun(long s,long*t)
{int d;
long s1=1;
*t=0;
while(s>0)
{d=s%10;
/**********found**********/
if(d%2=0)
{*t=d*s1+*t;
s1*=10;
}
/**********found**********/
s\=10;
}}
main()
{ long s,t;
printf(\\
(1)if(d%2=0)
(2)s/=10;
解析:本题中函数的功能是将长整型数s中每一位上为偶数的数依次取出,构成一个新数放在t中。首先在函数中对长整型数的每一位来进行截取,然后对其进行判断,最后根据判断结果进行操作。
(1)第一个标识是判断d是否是偶数,即比较“d%2”是否等于0,在C语言中,“==”表示的是“等于”,而“=”是赋值,因此,第一个标识下“if(d%2=0)”应改为“if(d%2==0)”。
(2)第二个标识下的“s\=10;”是对a的截取,这里的“\”本意应该是除号,但这个在C语言中是不可识别的,所以第二个标识下“s\=10;”应该改为“s/=10;”。
程序设计题
3.函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。
例如,若S所指字符串中的内容为:\\
int i,j=0;
for(i=0;i<strlen(s);i+=2)
if(s[i]%2==0)t[j++]=s[i],
t[j]=’\0’;
解析:该程序功能是将字符串中除了下标为偶数、ASCII值也为偶数的字符外,其余的全都删除。解题过程利用if条件判断表达式选择符合条件的字符,然后将符合条件的字符放入指定的字符串。
(1)判断一个字符串中的某一字符下标i是否为偶数,可用“i%2==0”来判断;也可以从下标0开始,每次增2。判断字符中的ASCII码值是否为偶数,则可用“s[i]%2==0”来判定。
(2)对串s中下标为偶数的字符进行考查,满足ASCII码值是偶数条件的字符就顺序放在新串s中,否则就不存放。
(3)所有字符处理完后,记得在新串s的末尾加上结束符“\0”。
本文档预览:3600字符,共2233字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载