国家二级(C语言)机试模拟试卷497
选择题
1.算法的有穷性是指( )。(A)
A. 算法程序的运行时间是有限的
B. 算法程序所处理的数据量是有限的
C. 算法程序的长度是有限的
D. 算法只能被有限的用户使用
解析:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。
2.有以下程序:
main()
{int k=33;
printf(\\(D)
A. 33,033,0x21
B. 33,033,21
C. 33,041,021
D. 33,41,21
解析:本题考查不同进制间的转换。printf输出函数中输出变量的格式,由输出格式符决定。题中“%o”格式符表示以八进制的形式输出;“%x”格式符表示以十六进制的形式输出。“33”的八进制和十六进制分别是41和21。
3.以下程序:
#include
main()
{ char str[10];
scanff\\(A )
A. how
B. how are you
C. h
D. howareyou
解析:当从键盘输入how are you时,由于scanf输入函数的特点是遇到空格时结束读入字符,因此,该程序只将how这3个字符送到了字符数组str中,并在其后自动加上结束符“\\\\0”。
4.有以下程序段:
#include<stdio.h>
int i,n;
for(i=0;0;i<8;i++)
{n=rand()%5;
switch(n)
{ease1:
ease3:printf(\\(D)
A. for循环语句固定执行8次
B. 当产生的随机数n为4时结束循环操作
C. 当产生的随机数n为1和2时不做任何操作
D. 当产生的随机数n为0时结束程序运行
解析:case常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行switch讲句时,根据switch的表达式,找到与之匹配的case讲句,就从此case子句执行下去,不再进行判断,直到碰到hreak或函数结束为止。简单的说break是结束整个循环体,而continue是结束单次循环。B选项中当产生的随机数n为4时要执行打印操作。C选项中当产生的随机数为1和2时分别执行case3与case4后面语句的内容。由于存在break语句所以for循环不是同定执行8次,执行次数与产生的随机数n有关系。
5.语句“printf(\\(C)
A. a\bhow\’are\’y\kbou
B. a\bhowk\’are\’y\bou
C. how’are’you
D. ahow’are’y\bou
解析:“\b”格式符表示退格。功能是将它后面的字母把它前面的字母覆盖,导致“\b”格式符前面的字母不能输出;“\”格式符表示输出单引号字符;“\”格式符表示输出反
6.下面程序的运行结果是( )。
#include
main()
{int i;
for(i=1;i<=5;i++)
{ if(i%2)printf(\\(A)
A. *#*#*
B. #*#*#*
C. *#*#
D. #*#*
解析:分析程序可知,程序循环5次,然后利用if语句决定每次循环时输出的字符。当i为奇数时,i%2=1,if(i%2)为真,输出“*”’;当i为偶数时,i%2=0,if(i%2)为假,执行else语句,输出“#”,所以当i取1、3、5值时输出“*”,当i取2、4值时输出“#”。
7.设有定义:
char p[]={’1’,’2’,’3’},*q=p;
以下不能计算出一个char型数据所占字节数的表达式是( )。(C)
A. sizeof(*q)
B. sizeof(char)
C. sizeof(p)
D. sizeof(p[0])
解析:数组名表示该数组的首地址,是一个地址常量,所以sizeof(p)求得的是一个地址占用的字节数,即4个字节,答案选C。
8.有以下程序:
#include<stdio.h>
#define N4
void fun(int a[][N],int b[])
{int i;
for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i];
}
main()
{int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;
fun(x,y);
for(i=0;i<N;i++)printf(\\(A)
A. -3,-1,1,3,
B. -12,-3,0,0,
C. 0,1,2,3,
D. -3,-3,-3,-3,
解析:本题中由fun函数可知,b[0]=a[0][0]-a[0][3]=1-4=-3,b[1]=a[1][1]-[1][2]=6-7=-1,b[2]=a[2][2]-[2][1]=11-10=1,b[3]=a[3][3]-[3][1]=16-13=3。所以主函数中打印y数组元素的值为A选项。
9.有如下程序
#include
int * sum(int data)
{
static int init = 0;
init += data;
return &init;
}
main()
{
int i, *p;
for (i=1; i<=4; i++) sum(i);
p = sum(0);
printf(\\(A)
A. 10
B. 0
C. 1
D. 15
解析:静态变量在定义时的初始化只运行一次,并且其值在程序运行过程中一直存在,所以函数sum()的作用是用静态变量init累加所有的调用sum()函数时传入的参数值。for循环中传入的参数为1,2,3,4,每次的计算结果为1,3,6,10。再次调用函数sun(0)时返回值为10,答案选A)。
10.在C语言中,只有在使用时才占用内存单元的变量的是( )。(A)
A. auto和register
B. extern和register
C. auto和static
D. static和register
解析:C语言中,动态存储区域中存放的变量在使用时才分配内存空间。auto变量的存储单元是分配在内存的动态存储区中,每当进入函数体时自动分配存储单元。register变量也是自动类变量。static说明的变量为静态变量,静态变量在内存的静态存储中占据着永久的存储单元,直至程序运行结束。extern说明的变量为外部变量,属于全局变量,全局变量在整个程序运行期间都占用内存空间。
11.在软件生产过程中,需求信息的来源是( )。(D)
A. 程序员
本文档预览:3600字符,共14952字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载