二级C语言选择题专项强化真题试卷50
选择题
1.有以下程序:
#include<stdio.h>
main()
{
FILE*f:
f=fopen(\\(C)
A. helloabc
B. abelo
C. abc
D. abchello
解析:fopen(\\
2.以下选项中叙述正确的是( )。(B)
A. C程序必须由main语句开始
B. 函数体必须由{开始
C. C程序中的注释可以嵌套
D. C程序中的注释必须在一行里完成
解析:编写函数的时候需要用“{}”将其函数体括起来,表示是该函数的一部分,所以函数体必须由“{”开始,选项B正确;C程序必须由main函数开始,而不是main语句,选项A错误;C程序中的注释有单行注释“//”和多行注释“/*…*/”,多行注释以“/*”开始,直到遇到“*/”结束,只是寻找配套,而不能嵌套,选项C、D错误;答案选B。
3.有以下程序:
#include<stdio.h>
int ml(int x,int y)
{return x<=y,gx:y;}
int m2(int x,int y)
{return x<=y?y:x;}
int fun(int a,int b)
{return a+b;}
main()
{
int x=2,y=3,z=1;
printf(\\(A)
A. 5
B. 6
C. 4
D. 3
解析:函数m1()返回两个参数中较小的数值,函数m2()返回两个参数中较大的数值,函数fun()返回两个参数之和,所以fun(m1(x,y),m2(y,z))=fun(m1(2,3),m2(3,1))=fun(2,3)=5,答案选A。
4.设有定义:
int n=1234;double x=3.1415:
则语句
printf(\\(A)
A. 1234,3.142
B. 123,3.142
C. 1234,3.141
D. 123,3.141
解析:函数printf()中,%md指输出带符号的十进制整数,给定最小宽度为m位,不足m位左端补空格,超过m位按实际位数输出;%.nf表示以小数形式输出实数,小数占n位,对应题目,答案为A选项。
5.有以下程序:
#include
int m=12;
int fun(int x,int y)
{ static int m:3;
m=x * y—m:
return(m);
}
main()
{ int a=7,b=5;
m=fun(a,b)/m;
printf(\\(B)
A. 2
B. 1
C. 3
D. 0
解析:局部变量覆盖全局变量,但是全局变量的声明周期还存在。fun()函数调用完成后,由于m为全局变量,其值被修改为32,即函数的返回值为32,此时m=32/12。第二次调用fun(a,b),函数的返回值为3,此时m=2,故输出为1。所以答案为B选项。
6.下列关于二叉树的叙述中,正确的是( )。(B)
A. 叶子结点总是比度为2的结点少一个
B. 叶子结点总是比度为2的结点多一个
C. 叶子结点数是度为2的结点数的两倍
D. 度为2的结点数是度为1的结点数的两倍
解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个。所以选择B。
7.有以下函数:
int aaa(char*s)
{char*t=s;
while(*t++);
t–;
return(t-s);
}
以下关于aaa函数功能叙述正确的是( )。(C)
A. 将串s复制到串t
B. 比较两个串的大小
C. 求字符串s的长度
D. 求字符串S所占字节数
解析:本题重点考察的知识点while循环语句的应用。aaa( )函数中,首先定义了一个字符指针t指向形参s,然后通过一个while循环让指针t不断递增,直到t指向字符串结束标识处。当t指向结束标识处时,由于后缀++运算符的原因,它还会被再递增1,所以接下来的t–;语句让它回到结束标识处。最后返回t-s,s还是指向字符串第1个字符处,而t指向了字符串结尾,故返回值为字符串的长度值。因此C选项正确。
8.有以下程序:
#include<stdio.h>
#include<string.h>
typedef struet{char name[9];char sex;float score[2];}STU;
void f(STU a)
{
STU b={\\(D)
A. Zhao,m,85,90
B. Qian,m,85,90
C. Zhao,f,95,92
D. Qian,f,95,92
解析:本题考杏结构体的相关操作以及传值、传址的区别.该题中调用f函数后,会生成参数c的一个副本,而不会改变c的值,所以c值维持原值,选项D正确。
9.若有定义:
char s[30]={0};
运行时输入:
This is a string.
则以下不能正确读入整个字符串:
This is a string.
到字符数组S中的语句组是( )。(D)
A. i=0;while((c=getchar())!=’\n’)s[i++]=c;
B. gets(S);
C. for(i=0;(c=getchar())!=’\n’;i++)s[i]=c;
D. scanf(\\
解析:在使用格式符“%s”进行字符串的输入时,空格和回车(Enter)会被读入,并且函数scanf以它们作为分隔符停止一个字符串的输入,因此答案为D选项。
10.以下叙述中错误的是( )。(C)
A. 函数中的形参属于局部变量
B. 在函数内部定义的变量只能在本函数范围内使用
C. 在函数外部定义的变量在所有函数中都有效
D. 在不同的函数中可以使用相同名字的变量
解析:全局变量有效范围是从定义的位置开始到所在源文件的结束,在这区域内的函数才可以调用,如果在函数外部定义变量,该变量不能被之前的函数访问。所以C选项说法错误,答案为C选项。
11.下面能作为软件需求分析工具的是( )。(D)
A. PAD图
B. 程序流程图
C. 甘特图
D. 数据流程图(DFD图)
解析:软件需求分析方法包括结构化分析方法和面向对象的分析方法两大类,前者常用工具为数据流图(DFD)、数据字典(DD)
本文档预览:3600字符,共8045字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载