国家二级C语言机试(操作题)模拟试卷320
程序填空题
1.下列给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。
例如,输入一个整数27638496,函数返回值为64862。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
unsigned long fun(unsigned long n)
{unsigned long x=0;int t;
while(n)
{ t=n%10;
/*********found*********/
if(t%2==【1】)
/*********found*********/
x=【2】+t;
/*********found*********/
n=【3】;
}
return x;
}
main()
{ unsigned long n=-1;
while(n>99999999‖n<0)
{ printf(\\
(1)0
(2)10*x
(3)n/10
解析:填空1:定义变量t用来存放某数的各个位数值,此处判断t是否为偶数,即对2求余结果是否为0。
填空2:将t作为x的个位数,原来x的各个位上升1位,即x=10*x+t。
填空3:每循环一次,通过除法运算,去掉数值最后一位。
程序修改题
2.下列给定程序中,函数fun的功能是:将主函数中两个变量的值进行交换。例如,若变量a中的值为8,b中的值为3,则程序运行后,a中的值为3,b中的值为8。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
1 #include<Stdio.h>
2 /*********found*********/
3 void fun(int x,int y)
4 {int t;
5 /*********found*********/
6 t=x;x=y;y=t;
7 }
8 void main()
9 { int a,b;
10 a=8;
11 b=3;
12 fun(&a,&b);
13 printf(\\
(1)void fun(int*x,int*y)
(2)t=*x; *x=*y; *y=t;
解析:(1)本题考查指针变量作函数参数。一般变量作参数时,不能改变实参的值,采用指针变量作为参数则能够改变实参的值。主函数中fun函数的调用方式表明fun函数的参数应当为指针类型。
(2)此处是一个变量交换操作错误,可知x、y是指针类型,变量类型不同,因而x、y不能与t进行值的交换。
程序设计题
3.请编函数fun,其功能是将一个数字字符串转换成与其面值相同的长整型整数。可调用strlen函数求字符串的长度。例如:在键盘输入字符串2345210,函数返回长整型数2345210。
注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun指定的部位填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<string.h>
void NONO();
long fun(char*s)
{
}
main()
{ char s[10];long r;
printf(\\
long fun(char*s)
{
int i,len ;
long sum=0;
len=strlen(s);
for(i=0;i<len;i++)
{
sum=sum*10+*s-’0’;
s++;
}
return sum;
}
解析:要把一个数字字符转为相应的数字,只要用它的,ASCII码减去48即可。要把数字字符串转为相应的数字,则要从左到右依次取出字符转为相应数字,乘10再加上下一位数字。
本文档预览:3600字符,共2413字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载