国家二级(C语言)机试模拟试卷507
选择题
1.在关系代数运算中,有5种基本运算,它们是( )。(D)
A. 并(∪)、差(-)、交(∩)、除(÷)和笛卡儿积(×)
B. 并(∪)、差(-)、交(∩)、投影(π)和选择(σ)
C. 并(∪)、交(∩)、投影(π)、选择(σ)和笛卡儿积(×)
D. 并(∪)、差(-)、投影(π)、选择(σ)和笛卡儿积(×)
解析:并、差、笛卡儿积、投影和选择是5种基本的运算,其他运算即交、连接和除,均可以通过5种基本的运算来表达。
2.以下叙述中错误的是( )。(A)
A. C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B. C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件
C. 用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D. C语言源程序经编译后生成后缀为.obj的目标程序
解析:C语言程序编译时将每条可执行语句转换为二进制的机器指令,但非执行语句(如注释语句)不被编译。所以选项A)错误。
3.以下关于return语句的叙述中不正确的是( )。(A)
A. 一个自定义函数中必须有一条return语句
B. 一个自定义函数中可以根据不同情况设置多条return语句
C. 如果一个函数有多个return语句,那么不论运行到哪一个return语句,该函数将结束
D. 没有return语句的自定义函数在执行完最后一条语句时返回到调用处
解析:return语句主要用于返回函数的值。在一个自定义函数中,可以根据不同的情况设置多条return语句返回函数的值,也可以不包含return语句。
4.有以下程序:
main()
{int n=0;
do{n++;
printf(\\(C)
A. 1
2
B. 1
2
3
C. 1
2
3
4
D. 1
解析:本题考查do…while循环。在do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值。当执行完第三次循环时,得到n=3,while循环表达式仍然成立,接着执行直到n=4,表达式不成立,跳出循环,结束程序。
5.有以下程序:
#inc1ude
main()
fint x;
scanf(\\(B)
A. 不等于5的整数
B. 大于0且不等5的整数
C. 大于0或等于5的整数
D. 小于5的整数
解析:题目中,虽然else和第二个if不在同一行上,但等价于在同一行上,因此,程序的意思是当x大于0且不等于5时将其打印出来。
6.运行下面程序时,从键盘输入字母A,则输出结果是( )。
#inc1ude
main()
{char ch;
ch=getchar();
switch(ch)
{case’A’:printf(\\(C)
A. AAAA
B. AAAA
BBBB
C. AAAA
BBBB
CCCC
D. AAAA
CCCC
解析:本题考查“switch”语句。因为“ch=A”,所以第一个switch语句,执行“case ’A’”后面的语句,输出AAAA,没有遇到break语句,所以接着再执行“case ’B\\
7.有以下程序
#include
void fun(int *s, int n1, int n2)
{
int i, j, t;
i=n1; j=n2;
while( i<j )
{
t=s[i]; s[i]=s[j]; s[j]=t; i++; j–;
}
}
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0}, k;
fun(a,0,3); fun(a,4,9); fun(a,0,9);
for(k=0;k<10;k++)
printf(\\(A)
A. 5678901234
B. 4321098765
C. 0987654321
D. 0987651234
解析:函数fun()的功能是将数组s中下标为n1和n2之间的数据逆序,所以调用语句fun( a,0,3 ); fun( a,4,9 ); fun( a,0,9 );结束后,是先将数组p中下标为0至3之间的元素逆序,然后将下标为4至9之间的元素逆序,再将整个数组逆序,答案选A)。
8.数据库系统的三级模式不包括( )。(D)
A. 概念模式
B. 内模式
C. 外模式
D. 数据模式
解析:数据库系统的三级模式是概念模式、外模式和内模式,所以选择D。
9.有以下程序:
#include<stdio.h>
main()
{char c1,c2;
c1=’A’+’8’-’4’;
c2=’A’+’8’-’5’’;
printf(\\(A)
A. E,68
B. D,69
C. E,D
D. 输出无定值
解析:本题目中字符变量c1是字符‘A’的ASCII码加上4,即69所对应的字符‘E’。字符变量c2是字符‘A’的ASCII码加上3,即68所对应的字符‘D’。但是打印输出时,c1以%c的格式输出,所以是E,c2以%d的格式输出,所以是68。
10.有以下程序:
#include
main()
{ int i,j,m=1;
for(i=1;i<3;i++)
{ for(i=3;j>0;j一一)
{if(i*j>3)break;
m*=i*j;
}
}
prinff(“m=%d\n”,m);
}
程序运行后的输出结果是( )。(C)
A. m=4
B. m=2
C. m=6
D. m=5
解析:第一次外循环i的值为1,第一次内循环j的值为3,不满足条件执行m*=i*j即m的值为3;第二次j的值为2,不满足条件执行m*=i*j,即m的值为6;第三次j的值为1,不满足条件执行m*=i*j,即m的值仍为6。第二次外循环i的值为2,j的值为3,满足条件,执行break语句,跳出循环。
11.有以下程序:
#include<stdio.h>
int add(int a,int b){return(a+b);}
main()
{int k,(*f)(),a=5,b=10;
f=a
本文档预览:3600字符,共15337字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载