二级C语言选择题专项强化真题试卷3
选择题
1.设函数中有整型变量n,为保证其在未赋值的情况下初值为0,应选择的存储类别是( )。(C)
A. auto
B. register
C. static
D. auto或register
解析:静态存储类型定义变量在未对其初始化时会对其初始化默认值,其中int型的默认初始化值是0,其他选项的存储类型不能保证变量在未赋值情况的初值。
2.程序测试的目的是( )。(C)
A. 为被测程序设计正确的测试用例
B. 发现并改正程序中的错误
C. 发现程序中的错误
D. 改正程序中的错误
解析:程序测试是使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别,即为发现错误而执行程序的过程,而不是改正错误。故正确答案为C。
3.与数学表达式x>=y>=z对应的C语言表达式是( )。(D)
A. (x>=y)||(y>=x)
B. (x>=y>=z)
C. (x>=y)!(y>=z)
D. (x>=y)&&(y>=z)
解析:本题考查关系表达式和逻辑表达式。y小于等于x,同时y大于等于z,因此x>=y和y>=z是逻辑与的关系。故D选项正确。
4.有以下程序:
#include<stdio.h>
main()
{
int x,y,z;
x=y=1;
z=x++;y++;++y;
printf(\\(C)
A. 2 3 2
B. 2 3 3
C. 2 3 1
D. 2 2 1
解析:考查逗号表达式。逗号表达式的计算过程是分别计算所有表达式的值,并把最后一个表达式的值作为整个逗号表达式的值。x=y=1;将x、y初始化为1,逗号表达式z=x++,y++,++y;中先计算z=x++,得到x=2,z=1,计算y++,得y=2,再计算++y,得y=3。所以最终结果为x=2,y=3,z=1,答案选C。
5.软件测试的目的是( )。(D)
A. 评估软件可靠性
B. 发现并改正程序中的错误
C. 改正程序中的错误
D. 发现程序中的错误
解析:软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。不是为了评估软件或改正错误。
6.有以下程序:
#include
main()
{
int a=0,b=1;
if(++a==b++)
printf(\\(C)
A. 1a=0,b=1
B. 0a=1,b=2
C. 1a=1,b=2
D. 0a=0,b=2
解析:运算符“++”放在变量后面时,表示先执行其他操作,再将变量加1;运算符“++”放在变量前面时,表示将变量加1后再参与其他操作。因此if(++a==b++)为真,输出1,再输出a,b,故程序运行后的结果是:1a=1,b=2。因此答案为C选项。
7.有以下程序:
#jnclude<stdio.h>
int fun(int(*s)[4],int n,int k)
{int m,i;
m=s[0][k];
for(i=1;i<n;i++)
if(s[i][k]>m)
m=s[i][k];
return m;
}
main( )
{int a[4][4]={{1,2,3,4},
{11,12,13,14},
{21,22,23,24},
{31,32,33,34}};
prinff(\\(C)
A. 4
B. 34
C. 31
D. 32
解析:本题重点考察二维数组名作为实参进行参数传递,在主函数中调用了fun函数,实参为二维数组名a和两个整数4、0,这样对应定义fun函数首部有三种形式,这里采用了第一种形式——行指针,这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用便可知,是求二维数组第0列中最大的那个元素。因此C选项正确。
8.下列选项中属于面向对象设计方法主要特征的是( )。(A)
A. 继承
B. 自顶向下
C. 模块化
D. 逐步求精
解析:面向对象基本方法的基本概念有对象、类和实例、消息、继承与多态性,所以选择A。
9.有以下程序:
#include
#nclude
long fun(char s[])
{long n;int sign;
for(;isspace(*s);s++);
sign=(*s==’一’)?一1:1;
if(* s==’+’||*s=’一’)s++;
for(n=0;isdigit(木s);s++)
n=10*n+(*s一’0’);
return sign*n;
}
main()
{ char S[]=\\(D)
A. 一263
B. 2
C. 0
D. 一26
解析:isspace(c)检查参数c是否为空格字符。若参数c为空格字符,则返回TRUE,否则返回NULL(0)。Isdigit(c)函数检查参数c是否为阿拉伯数字0到9。返回值若为阿拉伯数字,则返回TRUE,否则返回NULL(0)。fun()函数的第一个for循环判断字符串是否为负号。第二个for循环获取符号后面的数字字符,并将它们转化为整数。若遇到了非数字的字符则跳出,最后返回数组的结果。因此,可知首先获取负号,紧接着获取数值26,遇到了字符a,跳出返回一26,因此打印的结果是一26。故答案为D选项。
10.有以下程序:
#include
#define PT 3.5;
#define S(x)PT*x*x;
main()
{ int a=1,b=2;printf(\\(C)
A. 7.5
B. 31.5
C. 程序有错无输出结果
D. 14.0
解析:宏定义不是C语句,末尾不需要有分号。所以语句printf(\\
11.设已有定义:float x;,则以下对指针变量p进行定义且赋初值的语句中正确的是( )。(B)
A. int*p=(float)x;
B. float*p=&x;
C. float P=&x;
D. float*P=1024;
解析:指针是用来存放地址的变量,用(类型名*指针变量名)的形式定义。赋值时应将某个变量地址即&x赋给指针变量,所以选择B)。
12.有以下程序:
#include
fun(int x,int y)
{static int m=0,i=2;
i+=m+1;m=i+x+y;retum m;
<本文档预览:3600字符,共7382字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载