二级C语言分类模拟题548.docx
《二级C语言分类模拟题548.docx》由会员分享,可在线阅读,更多相关《二级C语言分类模拟题548.docx(17页珍藏版)》请在冰豆网上搜索。
二级C语言分类模拟题548
二级C语言分类模拟题548
选择题
1、下列叙述中正确的是
A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C.顺序存储结构能存储有序表,链式存储结构不能存储有序表
D.链式存储结构比顺序存储结构节省存储空间
2、设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是______。
A.x&&.y B.x<=y
C.x||y+z&&y-z D.!
((x<y)&&!
z||1)
3、下面程序的运行结果是______。
for(i=3;i<7;i++)printf((i%2)?
("**%d\n"):
("##%d\n"),i);
A.**3
##4
**5
**6
B.##3
**4
##5
**6
C.##3
**4
##5
##6
D.**3
##4
**5
##6
4、有以下程序:
#include<stdio.h>
intfun()
{staticintx=1;
x*=2;
returnx;
}
main()
{inti,s=1;
for(i=1;i<=3;i++)s*=fun();
printf("%d\n",s);
}
程序运行后的输出结果是______。
A.30 B.10 C.0 D.64
5、有以下程序
#include<stdio.h>
intfun(int(*s)[4],intn,intk)
{intm,i;
m=s[0][kl;
for(i=1;i<n;i++)if(s[i][k]>m)m=s[i][k];
returnm;
}
main()
{inta[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};
printf("%d\n",fun(a,4,0));
}
程序的运行结果是______。
A.4 B.34 C.31 D.32
6、有以下程序:
#include<stdio.h>
#include<string.h>
structA
{
inta;
charb[10];
doublec;
};
voidf(structAt);
main()
{
structAa={1001,"ZhangDa",1098.0};
f(a);
printf("%d,%s,%6.lf\n",a.a,a.b,a.c);
}
voidf(structAt)
{
t.a=1002;
strcpy(t.b,"ChangRong");
t.c=1202.0;
}
程序运行后的输出结果是______。
A.1002,ZhangDa,1202.0 B.1002,ChangRong,1202.0
C.1001,ChangRong,1098.0 D.1001,ZhangDa,1098.0
7、对于下列定义,不正确的叙述是( )。
uniondata
{ inta;
charb;
doublec;
}x=y;
A.变量x所占内存的长度等于成员c的长度
B.变量x的地址和它的各成员地址都是相同的
C.可以在定义时对x初始化
D.不能对变量x赋值,故x=y非法
8、若变量已正确定义,在if(W)printf("%d\n",k);中,以下不可替代W的是______。
A.a<>b+c B.ch=getchar() C.a==b+c D.a++
9、有以下程序:
#include<stdio.h>
main()
{intc,d;
c=13&5;d=10&&5;
printf("%d,%d\n",c,d);
}
程序的运行结果是______。
A.5,1 B.1,1 C.18,1 D.13,1
10、有以下程序:
#include<stdio.h>
main()
{
intx=8;
for(;x>0;x--)
{
if(x%3)
{
printf("%d,",x--);
contmue;
}
printf("%d,",-x);
}
}
程序运行后的输出结果是______。
A.7,4,2, B.8,7,5,2, C.9,7,6,4, D.8,5,4,2,
11、若有以下程序:
#include<stdio.h>
main()
{intc;
c=10^5;
printf("%d\n",c);
}
则程序的输出结果是______。
A.5 B.15 C.10000 D.105
12、在数据结构中,从逻辑上可以把数据结构分为______。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构
C.线性结构和非线性结构 D.内部结构和外部结构
13、以下正确的说法是______。
A.定义函数时,形参的类型说明可以放在函数体内
B.return后边的值不能为表达式
C.如果函数值的类型与返回值类型不一致,以函数值类型为准
D.如果形参与实参类型不一致,以实参类型为准
14、有以下程序:
#include<stdio.h>
main()
{ inti;
for(i=1;i<=5;i++)
{if(i%2)printf("*");
elsecontinue;
printf("#");
}
printf("$\n");
}
程序的输出结果是______。
A.*#*#*#$ B.#*#*#*$
C.*#*#$ D.#*#*$
15、有如下程序:
#include<stdio.h>
main()
{
inta=1,b;
b=(a>>2)%3;
printf("%d,%d",a,b);
}
程序运行后的输出结果是______。
A.1,1 B.2,0 C.1,0 D.2,1
16、若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是______。
A.main()
{......x=fun(2,10);......}
floatfun(inta,intb){......}
B.floatfun(inta,intb){......}
main()
{......x=fun(i,j);......}
C.floatfun(int,int);
main()
{......x=fun(2,10);......}
floatfun(inta,intb){......}
D.main()
{floatfun(inti,intj);
......x=fun(i,j);......}
floatfun(inta,intb){......}
17、下述程序的输出结果是______。
#include<stdio.h>
voidmain()
{chara=1,b=2;
charc=a^b<<2;
printf("\n%d",c);}
A.9 B.10 C.12 D.2
18、负责数据库中查询操作的数据库语言是______。
A.数据定义语言 B.数据管理语言 C.数据操纵语言 D.数据控制语言
19、有以下程序:
#include<stdio.h>
main()
{
inta[4][4]={{1,4,3,2},
{8,6,5,7},
{3,7,2,5},
{4,8,6,1}};
inti,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][i]>a[k][i])
{
t=a[j][i];
a[j][i]=a[k][i];
a[k][i]=t;
}/*按列排序*/
for(i=0;i<4;i++)
printf("%d,",a[i][i]);
}
程序运行后的输出结果是______。
A.1,6,2,1, B.8,7,3,1, C.4,7,5,2, D.1,6,5,7,
20、在软件开发中,需求分析阶段可以使用的工具是______。
A.N-S图 B.DFD图 C.PAD图 D.程序流程图
21、以下选项中,能定义s为合法的结构体变量的是( )。
A.typedefstructabc
{ doublea;
charb[10];
}s;
B.struct
{ doublea;
char b[10];
}s;
C.structABC
{ doublea;
charb[10];
}
ABCs;
D.typedefABC
{ doublea;
charb[10];
}
ABCs;
22、以下叙述中正确的是
A.C程序中各函数之间既允许直接递归调用,也允许间接递归调用
B.C程序中各函数之间不允许直接递归调用,也不允许间接递归调用
C.C程序中各函数之间允许直接递归调用,不允许间接递归调用
D.C程序中各函数之间不允许直接递归调用,允许间接递归调用
23、以下程序中C的二进制值是______。
chara=2,b=4,c;
c=a^b>>2
A.00000011 B.00010100 C.00011100 D.00011000
24、设有变量说明int(*p)[m],其中的标识符p是( )。
A.m个指向整型变量的指针
B.指向m个整型变量的指针
C.一个指向具有m个整型元素的一维数组的指针
D.具有m个指针元素的一维指针数组,每个元素都指向整型变量
25、软件(程序)调试的目标是
A.诊断和改正程序中的错误 B.尽可能多地发现程序中的错误
C.发现并改正程序中的所有错误 D.确定程序中错误的性质
26、结构化程序设计的3种结构是______。
A.顺序结构、选择结构、转移结构
B.分支结构、等价结构、循环结构
C.多分支结构、赋值结构、等价结构
D.顺序结构、选择结构、循环结构
27、fgetc函数的作用是从指定文件读入一个个字符,该文件的打开方式必须是______。
A.只读 B.追加 C.读或读写 D.以上均正确
28、对于下列定义,不正确的叙述是( )。
uniondata
{ inta;
charb;
doublec;
}x=y;
A.变量x所占内存的长度等于成员c的长度
B.变量x的地址和它的各成员地址都是相同的
C.可以在定义时对x初始化
D.不能对变量x赋值,故x=y非法
29、下列叙述中正确的是______。
A.循环队列中的元素个数随队头指针与队尾指针的变化而动态变化
B.循环队列中的元素个数随队头指针的变化而动态变化
C.循环队列中的元素个数随队尾指针的变化而动态变化
D.以上说法都不对
30、下面不属于软件需求分析阶段主要工作的是______。
A.需求变更申请 B.需求分析 C.需求评审 D.需求获取
31、下列运算符中优先级最低的算符是______。
A.|| B.!
=
C.<= D.+
32、有以下程序:
#include<stdio.h>
main()
{ inta=1,b=0;
if(--a)b++;
elseif(a=0)b+=2;
elseb+=3;
printf("%d\n",b);
}
程序运行后的输出结果是______。
A.0 B.1
C.2 D.3
33、有以下程序
#include<stdio.h>
#defineS(x)4*(x)*x+1
main()
{ intk=5,j=2;
printf("%d\n",S(k+j));
程序运行后的输出结果是______。
A.143 B.197
C.33 D.28
34、if语句的基本形式是:
if(表达式)语句,以下关于“表达式”值的叙述中正确的是______。
A.必须是逻辑值 B.必须是整数值
C.必须是正数 D.可以是任意合法的数值
35、在下列选项中,没有构成死循环的程序段是_____。
A.inti=100;
while
(1)
{ i=i%100+1;
if(i>100)break;
}
B.for(;;);
C.intk=1000;
do{++k;}while(k>=1000);
D.ints=36:
while(s);--s;
36、C语言源程序名的后缀是______。
A..C B..exe C..obj D..cp
37、若有以下程序
#include<stdio.h>
voidfun(inta[],intn)
{ intt,i,j;
for(i=1;i<n;i+=2)
for(j=i+2;j<n;j+=2)
if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{ intc[10]={10,9,8,7,6,5,4,3,2,1},i;
fun(c,10);
for(i=0;i<10;i++)printf("%d,",c[i]);
printf("n");
}
则程序的输出结果是______。
A.10,1,8,3,6,5,4,7,2,9, B.10,9,8,7,6,5,4,3,2,1,
C.2,9,4,7,6,5,8,3,10,1, D.1,10,3,8,5,6,7,4,9,2,
38、有以下结构体说明、变量定义和赋值语句:
structSTD
{ charname[10];
intage;
charsex;
}s[5],*ps;
ps=&s[0];
则以下scanf函数调用语句有错误的是______。
A.scanf("%s",s[0].name); B.scallf("%d",&s[0].age);
C.scanf("%c",&(ps->sex)); D.scanf("%d",ps->age);
39、C语言中标准库函数fputs(str,fp)的功能是______。
A.从str指向的文件中读一个字符串存入fp指向的内存
B.把str所指的字符串输出到fp所指的文件中
C.从fp指向的文件中读一个字符串存入str指向的内存
D.把fp指向的内存中的一个字符串输出到str指向的文件
40、若有以下程序
#include<stdio.h>
intf(inta[],intn)
{if(n>1)
{intt;
t=f(a,n-1);
returnt>a[n-1]?
t:
a[n-1];
}
else
returna[0];
}
main()
{inta[]={8,2,9,1,3,6,4,7,5};
printf("%d\n",f(a,9));
}
则程序的输出结果是______。
A.1 B.9 C.8 D.5
答案:
选择题
1、A
[解析]顺序存储方式是把逻辑上相邻的结点存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。
其优点是占用最少的存储空间。
所以选项D错误。
顺序存储结构可以存储如二叉树这样的非线性结构,所以选项B错误。
链式存储结构也可以存储线性表,所以选项C错误。
2、D
[解析]本题考查逻辑运算符的使用。
当“&&”的两个运算对象都是逻辑1时,表达式返回值才是1;“||”的两个运算对象至少有一个是逻辑1时,表达式返回值也是1,x<y为1,!
z为0,1&&0为1,0||为1,因此,!
1为0。
3、D
[解析]本题考查printf函数的输出格式和条件表达式“?
:
”的使用。
①printf函数输出时“**%d\n”和“##%d\n”中的“##”和“**”都是直接输出。
②条件表达式的基本格式为:
“a?
b:
c”。
它的运算规则为:
当a为非0时,整个表达式的值取b的值,当a为0时,整个表达式取c的值。
4、D
[解析]分析程序可知,main函数中初始化s=1,然后根据i的值1、2、3执行3次for循环,每次将s当前值与函数fun()的返回值相乘,并将乘积赋给s,所以for循环等价于:
s=s*fun()*fun()*fun();可见s的值取决于fun()函数的返回值。
在fun()函数中,定义了一个静态局部变量x并初始化为1,再将x的值乘以2返回,因为静态局部变量x在编译时赋初值,并且只赋值一次,下一次调用时都是保留上一次的值,所以fun()函数每次被调用,返回值都是上一次的2倍,所以s=1×2×4×8=64。
故答案选D选项。
5、C
[解析]在主函数中,定义并初始化了4行4列的二维数组a,并通过调用fun函数,将fun函数中指向一维数组的指针变量s指向了二维数组a的首地址,使得指针变量s与数组a共用同一存储单元。
在fun函数中,通过for循环,求得了数组a第0列中最大的值,并赋给m返回主函数。
由于数组a第0列的值分别为1、11、21、31,故其最大值是31。
6、D
[解析]本题考查结构体的相关操作以及传值、传址的区别,该题中调用f函数后,会生成参数a的一个副本,而不会改变a的值,所以a值维持原值,选项D正确。
7、C
[解析]本题主要考查的知识点是联合体的内存使用。
联合体所占用的内存空间为最长的成员所占用的空间,各个成员分量全部是从低地址方向开始使用内存单元。
不能在定义共用体变量时对它初始化。
8、A
[解析]选项A是非法的表达式,C语言中没有<>运算符。
9、A
[解析]“&”按位与运算,13=1101B,5=101B,执行语句c=13&5;结果为101B=5,即c=5。
“&&”逻辑与运算,10与5均为真,结果为真,即d=1。
故A选项正确。
10、D
[解析]coutinue的作用是跳出循环体中剩余的语句而进行下一次循环。
第一次循环x的值为8,循环体中if条件成立,打印x的值8后将x减1,再执行continue语句,跳出本次循环。
第二次判断循环条件时,x的值变为6,不满足循环体内if条件,执行打印-x的操作,即打印5后跳出循环。
第三次判断循环条件时x的值为4,满足循环体中if条件,执行打印x--的操作,即打印4,后将x值减一,执行continue语句,跳出本次循环。
第四次判断循环条件时x的为2,满足循环体中if条件,打印x--,即打印2后将x减一,执行continue语句,跳出本次循环。
在进行for条件表达式中第三个表达式c--的操作后x的值为0,不满足条件结束循环。
所以打印结果为“8,5,4,2,”。
11、B
[解析]本题考查位运算中的按位异或运算符。
异或运算只有在两个比较的位不同时其结果是1,否则结果为0,10用二进制表示为00001010,5用二进制表示为00000101,异或运算后结果为00001111,即15,选项B正确。
12、C
[解析]逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对一的关系,非线性结构表示数据元素之间一对多或多对一的关系。
13、C
14、A
[解析]#include<stdio.h>
intmain()
{
inti;
for(i=1;i<=5;i++)
{
if(i%2)
printf("*");
else
continue;
printf("#");
}
printf("$\n");
}
/*i=1*#
*i=3*#
*i=5*#
$
所以输