C语言上机考试3之欧阳科创编.docx
《C语言上机考试3之欧阳科创编.docx》由会员分享,可在线阅读,更多相关《C语言上机考试3之欧阳科创编.docx(60页珍藏版)》请在冰豆网上搜索。
C语言上机考试3之欧阳科创编
一、单项选择
1.
时间:
2021.02.05
创作:
欧阳科
2.题号:
4889
以下函数调用语句中,实参的个数是().
exce((v1,v2),(v3,v4,v5),v6);
A、3
B、4
C、5
D、6
//(v1,v2)是一个逗号表达式,(v3,v4,v5)也是一个逗号表达式
答案:
A
3.题号:
4093
关于return语句,下列正确的说法是().
A、可以在同一个函数中,出现多次
B、在主函数和其他函数中,均可出现
C、必须在每个函数中,出现
D、只能在除主函数之外的函数中,出现一次
//只能执行其中的一个的return语句。
并且函数遇到return语句,结束函数的执行。
答案:
A
4.题号:
4535
数组名作为实参数传递给函数时,数组名被处理为().
A、该数组的首地址
B、该数组的元素个数
C、该数组中各元素的值
D、该数组的长度
答案:
A
5.题号:
4525
在C语言的函数中,下列正确的说法是().
A、数组名不能作形参
B、可以有也可以没有形参
C、形参必须是变量名
D、必须有形参
答案:
B
6.题号:
4083
以下正确的函数定义形式是().
A、doublefun(intx,inty)
B、doublefun(intx;inty)//错在分号
C、doublefun(intx,y);//错在形参y没有类型
D、doublefun(intx,inty);//错在函数头后没有分号
答案:
A
7.题号:
4232
C语言程序中,必须有的函数是().
A、main()
B、#include"stdio.h"
C、scanf
D、printf
答案:
A
8.题号:
4048
下面对函数的叙述,正确的是().
A、函数中无论是否有return语句,都能返回正确值
B、函数中没有return语句,说明不带回值
C、函数不能嵌套定义
D、函数的返回值是通过return语句获得的
答案:
C
9.题号:
4073
在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是().
A、传递方式由用户指定
B、由实参传给形参,再由形参传回实参
C、地址传递
D、单向值传递
答案:
D
10.题号:
5119
下列关于函数的叙述中正确的是().
A、每个函数都可以单独运行
//主函数可以单独运行。
其它的函数都需要被调用才能被执行。
B、在一个函数内部可以定义另一个函数//不可以嵌套定义
C、每个函数都可以被单独编译
D、每个函数都可以被其他函数调用(包括main()函数)//不包括主函数
答案:
C
11.题号:
4787
设函数的调用形式如下:
f((x1,x2),(y1,y2,y3)),则函数有()个形参.
A、5
B、3
C、2
D、4
答案:
C
12.题号:
4901
在C语言中,形参的缺省存储类是().
A、static
B、register
C、auto
D、extern
答案:
C
13.题号:
4507
C语言规定,在一个源程序中,main()函数的位置.
A、必须在最开始
B、必须在系统调用的库函数的后面
C、可以任意
D、必须在最后
答案:
C
14.题号:
4847
以下叙述中,正确的是().
A、main()可作为用户标识符,用以命名任意一个函数作为主函数
B、C语言程序将从源程序中,第一个函数开始执行
C、可以在程序中,由用户指定任意一个函数作为主函数,程序将从此开始执行
D、C语言规定必须用main()作为主函数名,程序将从此开始执行,在此结束
答案:
D
15.题号:
5137
以下函数的类型是
fff(floatx)
{
printf("%d\n",x);
}
//函数返回值省略。
默认为int型。
A、void类型
B、int类型
C、与参数x的类型相同
D、无法确定
答案:
B
16.题号:
4403
C语言规定,在一个C程序中,main()函数的位置().
A、可以在任意位置
B、必须在程序的最后
C、必须在程序的开始
D、必须在系统调用的库函数之后
答案:
A
17.题号:
4112
C语言规定,函数返回值的类型是().
A、由return语句中的表达式类型所决定
B、由调用该函数时的主调函数类型所决定
C、由调用该函数时系统临时决定
D、由定义该函数时所指定的数值类型决定
答案:
D
18.题号:
4804
以下所列的函数"首部"中,正确的是().()
A、voidplay(inta,b)
B、voidplay(inta,intb)
C、voidplay(a:
int,b:
int)
D、voidplay(aasint,basint)
答案:
B
19.题号:
4432
有以下函数定义:
intfun(doublea,doubleb)
{returna*b;}
若以下选项中,所用变量都已正确定义并赋值,错误的函数调用是().
A、z=fun(fun(x,y),fun(x,y));
B、z=fun(fun(x,y)x,y);
C、if(fun(x,y)){……}
D、fun(x,y);
答案:
B
20.题号:
5050
对于void类型函数,调用时不可作为().
A、if语句的成分语句
B、表达式
C、循环体里的语句
D、自定义函数体中的语句
//无返回值函数只能以语句形式调用。
不可以作为表达式或实参
答案:
B
21.题号:
4269
若使用一维数组名作函数实参,则以下正确的说法是().
A、必须在主调函数中,说明此数组的大小
B、实参数组类型与形参数组类型可以不匹配
C、实参数组名与形参数组名必须一致
D、在被调用函数中,不需要考虑形参数组的大小
答案:
A
22.题号:
4696
在C语言中,调用函数除函数名外,还必须有().
A、实际参数
B、()
C、函数预说明
D、函数返回值
答案:
B
23.题号:
4892
以下错误的描述是:
函数调用可以().
A、做为一个函数的实参
B、做为一个函数的形参
C、出现在一个表达式中
D、出现在执行语句中
//函数调用形式一共有三种:
独立语句形式。
表达式或函数的实参
答案:
B
24.题号:
4256
当调用函数时,实参是一个数组名,则向函数传送的是().
A、数组每个元素中的值
B、数组的首地址
C、数组的长度
D、数组每一个元素的地址
答案:
B
25.题号:
5014
若用数组名作为函数的实参,传递给形参的是().
A、数组的首地址
B、数组元素的个数
C、数组第一个元素的值
D、数组中,全部元素的值
答案:
A
26.题号:
4843
如果在一个函数中的复合语句中,定义了一个变量,以下正确的说法是().
A、该变量在本程序范围内均有效
B、该变量只在该复合语句中,有效
C、该变量在该函数中,有效
D、该变量在主函数中,有效
答案:
B
27.题号:
4319
C语言中,规定,程序中,各函数之间().
A、既允许直接递归调用也允许间接递归调用
B、允许直接递归调用不允许间接递归调用
C、不允许直接递归调用允许间接递归调用
D、不允许直接递归调用也不允许间接递归调用
答案:
A
28.题号:
5062
凡是函数中,未指定存储类别的局部变量,其隐含的存储类别为().
A、自动(auto)
B、静态(static)
C、外部(extern)
D、寄存器(register)
答案:
A
29.题号:
4672
以下叙述中,正确的是().
A、构成C程序的基本单位是函数
B、main()函数必须放在其它函数之前
C、所有被调用的函数一定要在调用之前进行定义
D、可以在一个函数中,定义另一个函数
答案:
A
30.题号:
4236
全局变量的定义不可能在().
A、最后一行
B、文件外面
C、函数内部
D、函数外面
答案:
C
31.题号:
4754
以下对C语言函数的描述中正确的是().
A、C程序中有调用关系的所有函数必须放在同一个程序文件中
B、C函数既可以嵌套定义又可以递归调用//不可以嵌套定义
C、函数必须有返回值,否,则不能使用函数//函数返回值可以为void
D、C程序必须由一个或一个以上的函数组成
答案:
D
32.题号:
4045
在C语言中,变量的隐含存储类别是().
A、static
B、auto
C、无存储类别
D、extern
答案:
B
33.题号:
4578
若已定义的函数有返回值,则以下关于该函数调用的叙述中,错误的是().
A、函数调用可以作为一个函数的形参
B、函数调用可以作为独立的语句存在
C、函数调用可以作为一个函数的实参
D、函数调用可以出现在表达式中,
答案:
A
34.题号:
4537
以下正确的函数声明语句是().
A、intadd(inta,intb)//少了分号。
不是语句。
B、doubleadd();
C、intadd(chara[][]);//数组第二维长度不可省略
D、charadd(chara,b);//b没有数据类型
答案:
B
35.题号:
4436
已知year为整型变量,不能使表达式(year%4==0&&year%100!
=0)
||year%400==0的值为"真"的数据是().
A、1990
B、1996
C、2000
D、1992
答案:
A
36.题号:
5040
以下叙述中,不正确的是().
A、在一个函数内定义的变量只在本函数范围内有效
B、在一个函数内的复合语句中,定义的变量在本函数范围内有效//在复合语句内有效
C、函数中的形式参数是局部变量
D、在不同的函数中,可以使用相同的名字的变量
答案:
B
37.题号:
3986
函数定义时的参数为形参,调用函数时所用的参数为实参,则下列描述正确的是().
A、实参与形参是双向传递//单向传递。
由实参单向赋值给形参
B、形参和实参可以同名
C、实参类型一定要在调用时指定
//偷换概念。
形参类型一定要在定义时给定。
调用时,与函数名和实参变量名有关。
与类型无关。
D、形参可以是表达式//形参必须为变量
答案:
B
二、判断题
==================================================
1.题号:
4018
函数的嵌套调用中,被调用函数执行完成后,均返回主函数.
//返回上一级调用函数
答案:
错误
2.题号:
4872
函数在说明时,可以不定义函数的形参名,只指定函数相应位置上形参的类型.
函数说明语句的三种形式:
intmax(inta,intb);//与用户自定义函数中的形参变量名一样
intmax(int,int);//省略形参变量名
intmax(intaa,intbb);//与用户自定义函数中的形参变量名不一样
答案:
正确
3.题号:
4204
函数中的形式参数是局部变量.
答案:
正确
4.题号:
4577
静态局部变量是在编译时被初始化的,故它只被赋初值一次.
答案:
正确
5.题号:
4846
gets函数是用来输入一个字符的函数.
//gets函数是用来输入一个字符串的。
它以回车键结束。
可以读入带空格的字符串。
答案:
错误
6.题号:
5028
静态局部变量在整个程序运行期间都不释放.
答案:
正确
7.题号:
4767
函数调用时,实参和形参在类型上应按位置与形参一一对应匹配;如果类型不匹配,通常编译器并不给出出错信息.
答案:
正确
8.题号:
4984
一个C程序只能由一个主函数组成
//一个程序可以由一个或多个函数组成。
但只能有一个主函数
答案:
错误
9.题号:
5013
C程序的基本组成单位是函数
答案:
正确
10.题号:
4587
C语言的函数可以嵌套定义
//可以嵌套调用。
不可以嵌套定义。
答案:
错误
11.题号:
4288
函数定义当中的函数类型是return语句中表达式的类型.
//若return后的表达式的类型和函数返回值类型不一致时。
系统自动将return后的类型//转换为函数返回值的类型。
答案:
正确
12.题号:
4442
C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的.
答案:
正确
13.题号:
4989
C语言中return语句可以返回函数值.如果return语句后表达式的值与函数说明的类型不一致,则以return语句的表达式类型为准,系统将自行转换.
答案:
错误
14.题号:
4783
通过return语句,函数可以带回一个或一个以上的返回值.
//return语句只能带回一个值。
不能带回2个或多个值。
但地址传递可以。
答案:
错误
15.题号:
5084
若一个函数的返回类型为void,则表示其没有返回值.
答案:
正确
16.题号:
4175
在C语言中,不允许函数嵌套定义,但函数可以嵌套调用.
答案:
正确
17.题号:
4689
return语句可以在同一个函数中出现多次.
//但只能执行其中一个。
且调用函数结束。
答案:
正确
18.题号:
4351
所有定义在主函数之前的函数无需进行声明.
答案:
正确
19.题号:
4097
每次调用函数时,都要对静态局部变量重新进行初始化.
//静态变量可以由系统进行初始化。
也可以由用户进行初始化。
但只初始化一次。
生命//周期是程序运行的整个时间。
局部变量每次调用时都要进行初始化。
答案:
错误
20.题号:
4092
在不同的函数中可以使用相同名字的变量.
答案:
正确
21.题号:
4584
函数调用时,要求实参与形参的个数必须一致,对应类型一致.
答案:
正确
22.题号:
4055
C语言程序总是从main()函数开始执行.
答案:
正确
23.题号:
4161
没有初始化的整型静态局部变量的初值系统均默认为0.
答案:
正确
24.题号:
4349
在C语言的函数中,必须有形参.
答案:
错误
25.题号:
5108
在C语言中,函数可以嵌套定义,但不能嵌套调用.
答案:
错误
三、填空题
==================================================
1.题号:
4286
在函数中,需要返回一个结果时,可以使用_____语句.
答案:
空1:
return
2.题号:
4371
函数的_____调用是一个函数直接或间接地调用它自身.
答案:
空1:
递归
3.题号:
4333
C语言中,格式输入操作是由库函数_____完成的,格式输出操作是由库函数_____完成的.
答案:
空1:
scanf
空2:
printf
4.题号:
4373
C源程序中的主函数的名称必须是_____。
答案:
空1:
main
5.题号:
4601
下述函数的功能是_____。
voidfunc(inta[],intn)
{inti,j;
for(i=1;i{for(j=i;j>0&&a[j]{intt=a[j];
a[j]=a[j-1];
a[j-1]=t;
}
}
}
答案:
空1:
用冒泡法由小到大排序【或】冒泡法排序【或】排序【或】由小到大排序
6.题号:
4885
函数调用时的实参和形参之间的数据是单向的_____传递.
答案:
空1:
值
7.题号:
4690
如果函数不要求返回值,可用_____来定义函数为空类型.
答案:
空1:
void
四、程序设计
==================================================
1.题号:
7041
/*------------------------------------------------
【程序设计】
--------------------------------------------------
题目:
函数fact(x)的功能是求x!
。
编写main程序调用函数fact求解从m个元素选n个元素的组合数的个数。
计算公式是:
组合数=m!
/(n!
.(m-n)!
)。
要求:
m不能小于n,
否则应有容错处理。
--------------------------------------------------
注意:
部分源程序给出如下。
请勿改动主函数
main和其它函数中的任何内容,仅在函
数fun的花括号中填入所编写的若干语句。
*********Begin**********和**********End**********不可删除
------------------------------------------------*/
#include"stdio.h"
longfact(intx)
//函数返回值一定要定义为long。
因为阶乘值增长的很快。
很容易超出int的范围
{
longy;//y是存放阶乘值的变量。
所以要定义为长整型long.
inti;
y=1;
for(i=1;i<=x;i++)
y=y*i;
returny;
}
main()
{
intm,n;
longzhsgs;
printf("请输入m和n:
\n");scanf("%d%d",&m,&n);
/**********Begin**********/
while(m{
printf("m和n输入错!
请重新输入:
\n");
scanf("%d%d",&m,&n);
}
zhsgs=fact(m)/(fact(n)*fact(m-n));
/**********End**********/
printf("从%d个元素选%d个元素的组合数的个数是:
%d\n",m,n,zhsgs);
getch();
yzj();
}
yzj()
{
FILE*IN,*OUT;
intn;
inti;
longo;
IN=fopen("in.dat","r");
if(IN==NULL)
{printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{printf("WriteFileError");
}
for(n=0;n<5;n++)
{
fscanf(IN,"%d",&i);
o=fact(i);
fprintf(OUT,"%ld\n",o);
}
fclose(IN);
fclose(OUT);
}
1.示例代码:
while(m{
printf("m和n输入错!
请重新输入:
\n");
scanf("%d%d",&m,&n);
}
zhsgs=fact(m)/(fact(n)*fact(m-n));
2.题号:
6931
/*------------------------------------------------
【程序设计】
--------------------------------------------------
题目:
对某一正数的值保留2位小数,并对第三位进行四舍五入。
注意:
部分源程序给出如下。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
*********Begin**********和**********End**********不可删除
------------------------------------------------*/
#include"stdio.h"
#include"conio.h"
voidTestFunc();
floatfun(floath)
{
/**********Begin**********/
inti;//假设h=12.5489
i=(int)(h*1000)%10;//i=(int)(12.5489*1000)%10=12548%10=8
if(i>=5)
return(int)(h*100+1)/100.0;
else
return(int)(h*100)/100.0;
/**********End**********/
}
voidmain()
{
floatm;
printf("Enterm:
");
scanf("%f",&m);
printf("\nTheresultis%8.2f\n",fun(m));
TestFunc();
}
voidTestFunc()
{
FILE*IN,*OUT;
ints;
floatt;
floato;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
for(s=1;s<=5;s++)
{
fscanf(IN,"%f",&t);
o=fun(t);
fprintf(OUT,"%8.2f\n",o);
}
fclose(IN);
fclose(OUT);
}
2.示例代码:
inti;
i=(int)(h*1000)%10;
if(i>=5)
return(int)(h*100+1)/100.0;
else
return(int)(h*100)/100.0;
3.题号:
6993
/*------------------------------------------------
【程序设计】
--------------------------------------------------
题目:
编写一个函数fun,它的功能是:
实现两个字符串的连接(不使用库函数strcat)。
例如,分别输入下面两个字符串:
FirstString--
SecondString
程序输出:
FirstString--SecondString
注意:
部分源程序存在文件prog.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
*********Begin**********和**********End**********不可删除
*/
#include
#include
#include
voidfun(charp1[],charp2[])
{
/**********Begin**********/
inti=0,j=0;
while((p1[i])!
='\0')
i++;//求字符串p1的长度。
while(p2[j]!
='\0')//遍历字符串p2
{
p1[i]=p2[j];//注意下标变化的不同。
i++;
j++;
}
p1[i]='\0';/**********End*****