国家二级(C语言)机试模拟试卷448
选择题
1.假定已建立以下数据链表结构,且指针p和q已指向如下图所示的结点:
(D)
A. (*)p.next=(*q).next;free(p)
B. b=q—>next;free(q)
C. p=q;free(q)
D. p—>next=q—>next;free(q)
解析:要删除结点q,应首先由q的上一个结点p的指针域指向q的指针域所指向的结点,即p—>next=q—>next;,然后才能释放结点q,即free(q)。
2.有以下字符串,说明表达式strlen(s)值的是( )。
char s[10]={’a’,’\n’,’a’,’b’,’\t’,’c’};(C)
A. 10
B. 1
C. 6
D. 7
解析:strlen(s)返回s字符串中字符的个数,若s是一个数组,则返回数组元素的个数。
3.若有定义语句:
char*s1=\\(B)
A. if(strcmp(s1,s2)!=0)puts(s2);
B. if(strcmp(s1,s2)!=0)puts(s1);
C. if(strcmp(s1,s2)==1)puts(s1);
D. if(strcmp(s1,s2)==0)puts(s1);
解析:strcmp(s1,s2)是字符串比较函数,比较规则是两个字符串自左向右逐个字符相比(按照ASCII码值大小),以第一个不相同的字符的大小作为比较结果。因为;’0’<’0’,所以strcmp(s1,s2)为负值,只有B选项正确。
4.有以下程序:
# include <stdio.h>
typedef struct { int b, p; } A;
void f(A c) /* 注意:c是结构变量名 */
{ int j;
c.b += 1; c.p+=2;
}
main()
{ int i;
A a={1,2};
f(a);
printf(\\(B)
A. 2,4
B. 1,2
C. 1,4
D. 2,3
解析:结构体变量可以作为函数的参数和返回值。作为函数的实参时,可以实现函数的传值调用。当使用结构体变量作为函数的形参时,实参也应该是结构体变量名以实现传值调用,实参将拷贝副本给形参,在被调用函数中改变形参值对于调用函数中的实参没有影响。所以选择B。
5.以下不正确的转义字符是( )。(D)
A. ’\\\\\\\\’
B. ’\\\\d’
C. ‘\s’
D. ‘088’
解析:‘\\\\\\\\’是反斜线符,‘\\\\d’是整型变量转义字符,‘\s’是字符串型转义字符,C语言中没有规定’088’为转义字符。
6.设有定义:
char s[81]; int i=0;
以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是( )。
A
解析:函数scanf()输入字符串时默认空格为间隔符,所以不能输入空格,答案选A)。
7.在一个C源程序文件中所定义的全局变量,其作用域为( )。(A)
A. 由具体定义位置和extern说明来决定范围
B. 所在程序的全部范围
C. 所在函数的全部范围
D. 所在文件的全部范围
解析:全局变量的作用域是从声明处到文件的结束。所以选择A
8.有以下程序:
#include<stdio.h>
int furl()
{static int x=1;
x*=2;
return x;
}
main()
{int i,s=1;
for(i=1;i<=3;i++)s*=fun();
printf(\\(D)
A. 10
B. 30
C. 0
D. 64
解析:本题目中静态局部变量x,在静态存储区内分配存储单元。在程序整个运行期间都不释放。所以第一次循环s的值为2,第二次循环中,返回的x的值为4,所以s的值为8,第三次循环,返回的x的值为8,所以s的值为64。
9.若变量已正确定义并赋值,则错误的赋值语句是( )。(D)
A. a+=a+1;
B. a=sizeof(double);
C. a=d‖c;
D. a+1=a;
解析:赋值号“=”的左边必须是一个变量名。
10.下列选项中,不能作为合法常量的是( )。(B)
A. 1.234e04
B. 1.234e0.4
C. 1.234e+4
D. 1.234e0
解析:用指数形式表示的实型常量需注意两点:①e或E后面的指数必须是整数:②指数必须是不超过数据表示范围的正负整数,并且在e或E前必须有数字。
11.以下是while语句的基本形式:
while(表达式){语句;}
其中“表达式”( )。(D)
A. 必须是逻辑表达式
B. 必须是关系表达式
C. 必须是逻辑表达式或关系表达式
D. 可以是任意合法的表达式
解析:本题考查while表达式。while(表达式)中的表达式可以为任何合法的表达式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(一)误写为赋值号(=)时不会报错的,但是其值恒为1。
12.以下叙述中错误的是( )。(A)
A. 使用三种基本结构构成的程序只能解决简单问题
B. 结构化程序由顺序、分支、循环三种基本结构组成
C. C语言是一种结构化程序设计语言
D. 结构化程序设计提倡模块化的设计方法
解析:已经证明,由顺序、分支、循环这三种基本结构组成的算法可以解决任何复杂的问题。选项A)叙述有误。
13.有以下程序:
#include
int flint t[],int n);
main()
{ int a[4]={1,2,3,4},s;
s=f(a,2);printf(“%d\n”,s);
}
int flint t[],int n)
{ if((n>0)&&(n<5))return t[n+1]+f(t,n—1);
else return 0:
}
程序运行后的输出结果是( )。(B)
A. 4
B. 7
C. 10
D. 6
解析:本题主要考查的是函数的递归调用,子函数f是一个递归函数,所以主函数中执行ffa,2)时,其执行过程是a[3]+f(a,1)=a[3]+a[2]+f(a,0)=7。
14.有以下程序段
本文档预览:3600字符,共13867字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载