二级C语言分类模拟题542.docx
- 文档编号:26862326
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:19
- 大小:24.87KB
二级C语言分类模拟题542.docx
《二级C语言分类模拟题542.docx》由会员分享,可在线阅读,更多相关《二级C语言分类模拟题542.docx(19页珍藏版)》请在冰豆网上搜索。
二级C语言分类模拟题542
二级C语言分类模拟题542
选择题
1、关于字符常量,以下叙述正确的是______。
A.空格不是一个字符常量
B.字符常量能包含大于一个的字符
C.单引号中的大写字母和小写字母代表的是相同的字符常量
D.所有的字符常量都可以作为整型量来处理
2、以下数组定义中错误的是______。
A.intx[2][3]={1,2,3,4,5,6};
B.intx[][3]={0};
C.intx[][3]={{1,2,3},{4,5,6}};
D.intx[2][3]={{1,2},{3,4},{5,6}};
3、有以下程序
#include <stdio.h>
voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/
{int t,i,j;
for(i=0;i<n-1;i++)
for0=i+l;j<n;j++)
if(a[i]<a[j]) { t=a[i];a[i]=a[j];a[j]=t; }
}
main()
{int c[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(c+4,6);
for(i=0;i<10;i++) printf("%d,",c[i]);
printf("\n");
}
A.1,2,3,4,5,6,7,8,9,0, B.0,9,8,7,6,5,1,2,3,4,
C.0,9,8,7,6,5,4,3,2,1, D.1,2,3,4,9,8,7,6,5,0,
4、有以下程序:
#include<stdio.h>
main()
{intk=-3;
if(k<=0)printf("****\n")
elseprintf("&&&&\n");
}
程序的输出结果是
A.输出#### B.输出&&&&
C.输出####&&&& D.有语法错不能通过编译
5、以下叙述中错误的是______。
A.gets函数用于从终端读入字符串 B.getehar函数用于从磁盘文件读入字符
C.fputs函数用于把字符串输出到文件 D.fwrite函数用于以二进制形式输出数据到文件
6、有以下程序:
#include<stdio.h>
main()
{intaa[3][3]={{2},{4},{6}},i,*p=&aa[0][0];
for(i=0;i<2;i++)
{if(i==0)aa[i][i+1]=*p+1;
else++p;
printf("%d",*p);
}
printf("\n");
}
程序的输出结果是
A.23 B.26 C.33D.36
7、有以下程序:
#include<stdio.h>
main()
{ints,t,A=10;doubleB=6;
s=sizeof(A.;t=sizeofB.;
printf("%d,%d\n",s,t);
}
在VC6平台上编译运行,程序运行后的输出结果是______。
A.2,4 B.1,4
C.4,8 D.10,6
8、以下程序的运行结果是______。
main()
{charch='A';
intnum1=ch;
floatnum2=num1;
printf("%f",num2);
}
A.A B.65 C.65.00000 D.a
9、设变量均已正确定义并赋值,以下与其他三组输出结果不同的一组语句是______。
A.x++;printf("%d\n",x);
B.n=++x;printf("%d\n",n);
C.++x;printf("%d\n",x);
D.n=x++;printf("%d\n",n);
10、有以下程序:
#include<stdio.h>
#include<string.h>
main()
{charstr[][10]={"One","Three","Five"},*p=str[0];
printf("%s,",p+10);
printf("%d\n",strlen(p+=10));
}
执行后的输出结果是______。
A.Three,4 B.出错 C.Three,5 D.Five,5
11、面向对象方法中,继承是指______。
A.一组对象所具有的相似性质 B.一个对象具有另一个对象的性质
C.各对象之间的共同性质 D.类之间共享属性和操作的机制
12、若有以下程序:
#include<stdio.h>
main()
{charc1,c2;
c1='C'+'8'-'3';c2='9'-'0";
printf("%c%d\n",c1,c2);
}
则程序运行后的输出结果是______。
A.H'9' B.H9
C.F'9' D.表达式不合法输出无定值
13、以下叙述中正确的是______。
A.在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上
B.在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔
C.在printf函数中,各个输出项只能是变量
D.使用printf函数无法输出百分号“%”
14、假定已建立以下链表结构,且指针p和q已指向如图所示的结点:
则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是______。
A.p->next=q->next;free(q); B.p=q->next;free(q);
C.p=q;free(q); D.(*p).next=(*q).next;free(p);
15、有以下程序:
#include<stdio.h>
#defineF(x)2.84+x
#definePR(a)printf("%d",(int)(a))
#definePRINT(a)PR(a);putehar('\n')
main()
{
PRINT(F(5)*2);
}
程序运行后的输出结果是______。
A.12 B.13 C.15 D.11
16、有以下程序
#include<stdio.h>
main()
{intx=1,y=2,z=3;
if(x>y)
if(y<z)printf("%d",++z);
elseprintf("%d",++y);
printf("%d\n",x++);
}
程序的运行结果是______。
A.1 B.41 C.2 D.331
17、若有以下程序:
#include<stdio.h>
voidsub(doublex,double*y,double*z)
{*y=*y-1.0;*z=*z+x;}
main()
{doublea=2.5,b=9.0,*pa,*pb;
pa=&a;pb=&b;
sub(b-a,pa,pa);printf("%f\n",a);
}
程序的输出结果是
A.9.000000 B.1.500000 C.8.000000 D.10.500000
18、有以下程序:
#include<stdio.h>
main()
{inta=0,b=0;
for(;a<7;a++)
{if(a%2==0)continue;
b+=a;
continue;
}
printf("%d\n",b);
}
程序运行后的输出结果是______。
A.0 B.4 C.1 D.9
19、以下叙述中正确的是______。
A.不能用字符串常量对字符数组名进行整体赋值操作
B.字符串常量"Hello"会被隐含处理成一个无名字符型数组,它有5个元素
C.charstr[7]="string!
";在语法上是合法的,运行也是安全的
D.char*str;str="Hello";与charstr[];str="Hello";效果是一样的
20、下列选项中可作为C语言合法常量的是______。
A.-80 B.-080
C.-8e1.0 D.-80.0e
21、有以下程序:
#include<stdio.h>
main()
{intm=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n",m,n,*p,*q);
程序运行后的输出结果是______。
A.2,1,1,2 B.1,2,1,2 C.2,1,2,1 D.1,2,2,1
22、有以下程序:
#include<stdio.h>
main()
{ inta=1,b=0;
printf("%d,",b=a+b);
printf("%d\n",a=2+b);
}
程序运行后的输出结果是______。
A.0,0 B.1,0
C.3,2 D.1,2
23、下列不属于软件调试技术的是______。
A.强行排错法 B.集成测试法 C.回溯法 D.原因排除法
24、软件设计中划分模块的一个准则是______。
A.低内聚低耦合 B.高内聚低耦合 C.低内聚高耦合 D.高内聚高耦合
25、已知char*p,*q;,正确的语句是______。
A.p*=3; B.p/=q; C.p+=3; D.p+=q;
26、已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'\101'是( )。
A.字符A B.字符a C.字符e D.非法的常量
27、数据流程图(DFD.是______。
A.软件概要设计的工具 B.软件详细设计的工具
C.结构化方法的需求分析工具 D.面向对象方法的需求分析工具
28、某系统结构图如下图所示:
该系统结构图的宽度是______。
A.2 B.3 C.4 D.n
29、有以下程序:
#include<stdio.h>
main()
{
charc[2][5]={"6938","8254"},*p[2];
inti,j,s=0;
for(i=0;i<2;i++)p[i]=c[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>0;j+=2)s=10*s+p[i][j]-'0';
printf("%d\n",s);
}
程序运行后的输出结果是______。
A.6938 B.9824 C.4528 D.6385
30、以下选项中,能用做数据常量的是______。
A.115L B.0118 C.1.5e1.5 D.o115
31、以下有关宏替换的叙述不正确的是______。
A.双引号中出现的宏名不替换
B.使用宏定义可以嵌套
C.宏定义仅仅是符号替换
D.宏名必须用大写字母表示
32、以下程序段给数组所有元素输入数据:
#include <stdio.h>
main()
{inta[10],i=0;
while(i<10)scanf("%d",______);
}
应在下划线处填入的是
A.a+(i++) B.&a[i+1] C.a+i D.&a[++i]
33、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是______。
A.c=b=a; B.(a=c)||(b=c);
C.(a=c)&&(b=c); D.a=c=b;
34、有以下程序:
#include<string.h>
structSTU
{ charname[10];
intnum;
}
voidf(char *name,intnum)
{ structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};
num=s[0].num;
strcpy(name,s[0].name);
}
main()
{ structSTUs[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;
p=&s[1];f(p->name,p->num);
printf("%s%d\n",p->name,p->num);
}
程序运行后的输出结果是
A.SunDan20042 B.SunDan20044 C.LiSiGuo20042 D.YangSan20041
35、若有定义:
floatx=1.5;
inta=1,b=3,c=2;
则正确的switch语句是______。
A.switch(a+b)
{case1:
printf("*\n");
case2+1:
printf("**\n");}
B.switch((int)x);
{case1:
printf("*\n");
case2:
printf("**\n");}
C.switch(x)
{case1.0:
printf("*\n");
case2.0:
printf("**\n");}
D.switch(a+b)
{case1:
printf("*\n");
casec:
printf("**\n");}
36、有以下程序
#include<stdio.h>
voidfun(int*p,int*q)
{intt;
t=*p;*p=*q;*q=t;
*q=*p;
}
main()
{inta=0,b=9;
fun(&a,&b);
printf("%d%d\n",a,b);
}
程序的输出结果是______。
A.09 B.00 C.90 D.99
37、由以下while构成的循环,循环体执行的次数是______。
intk=0;
while(k=1)k++;
A.有语法错,不能执行 B.一次也不执行
C.执行一次 D.无限次
38、以下程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。
#include<stdio.h>
voidsort(inta[],intn)
{inti,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]<a[j])
{t=a[i];a[i]=a[j];a[j]=t;
}
}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10),i;
sort(&a[1],7);
for(i=0;i<10;i++)
printf("%d,",a[i]);
}
程序运行后的输出结果是______。
A.1,2,3,4,5,6,7,8,9,10, B.10,9,8,7,6,5,4,3,2,1,
C.1,8,7,6,5,4,3,2,9,10, D.1,2,10,9,8,7,6,5,4,3,
39、下列函数的功能是______。
fun(char*a,char*b)
{while((*b=*a)!
='\0'){a++;b++;}}
A.将a所指字符串赋给b所指空间
B.使指针b指向a所指字符串
C.将a所指字符串和b所指字符串进行比较
D.检查a和b所指字符串中是否有'\0'
40、有以下程序段:
charname[20];
intnum;
scanf("name=%snum=%d",name,&num);
当执行上述程序段,并从键盘输入:
name=Lilinum=1001<回车>后,name的值为______。
A.name=Lilinum=1001 B.name=Lili
C.Lilinun= D.Lili
答案:
选择题
1、D 2、D
3、D
[解析]本题考查的知识点是:
for循环的简单应用。
题目中fun()函数的作用是排序,从形参指针a所指位置开始,对其后n个int型元素进行从大到小排序。
主函数中,调用fun()函数传入的两个实参分别为c+4和6,即从数组c的第5个元素开始,对其后连续的6个元素进行从大到小排序。
所以,最后通过for循环输出数组c的值为“1,2,3,4,9,8,7,6,5,0,”,故应该选择D。
4、D
5、B
[解析]本题考查字符处理函数和文件操作函数,属于基础知识。
其中B选项getchar()函数是用于从终端读入一个字符。
所以选择B选项。
6、A
7、C
[解析]函数sizeof()的参数为C中定义或者用户自定义的数据,作用是返回参数所指的数据类型所占用的内存空间的字节数。
本题中A是整型,B是双精浮点数,分别占4个字节和8个字节。
所以选C。
8、C
[解析]A的ASCII码为65,赋值语句num1=ch把char类型的变量转换成int类型的变量num1;赋值语句num2=num1把类型为int的变量转换为类型为float的变量num2,最后printf打印出num2的值为65.00000。
9、D
[解析]本题考查++运算操作符,当++在变量前面时,是先加1再赋值,当++在变量后面时,是先赋值再加1,所以答案选择D。
10、C
[解析]本题中定义一个二维字符数组str,它包含3个字符串,每个字符串存放在一个长度为10的一维数组中,指针变量p指向strp[0],即第一个字符串“One”,由于“One”存放在长度为10的一维数组,p+10指向下一个字符串“Three”,长度为5。
故本题答案为C选项。
11、D
[解析]继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。
广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。
12、B
[解析]本题考查字符变量以及print()函数相关知识。
字符变量c1被赋值为'C'+'8'-'3',即ASCII码的运算,67+54-49=72,即H;字符变量c2被赋值为'9'-'0',但输出时,需要注意的是c1以字符变量输出,而c2是以十进制整型变量输出。
因此B选项正确。
13、A
[解析]scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,所以A正确。
scanf函数的格式控制串可以使用其他非空白字符,如逗号,但在输入时必须输入这些字符,以保证匹配就可以,所以B错误。
printf函数可以输出常量,也可以输出变量,所以C错误。
printf函数可以用“\%”来输出百分号“%”,所以D错误。
14、A
[解析]本题考查删除链表中的结点操作,其方法是将要删除结点的上个结点指向要删除结点的下个结点,然后释放该要删除结点,所以选项A正确。
15、A
[解析]带参数的宏的调用格式:
宏名(实参表),替换过程是,用宏调用提供的实参字符串,直接置换宏定义命令行中相应形参字符串,非形参字符保持不变。
将PRINT(F(5)*2)用PR(F(5)*2);putchar('\n')替换,将PR(F(5)*2)用printf(“%d”,(int)(F(5)*2))替换,再将F(5)用2.84+5替换,最后替换结果为printf(“%d”,(int)(2.84+5*2));putchar('\n'),运行结果为:
12<回车>。
故A选项正确。
16、A
[解析]x>y不成立,之后的if和else都不执行,输出x++表达式值为1。
17、C
18、D
[解析]由程序可知,for循环中a的取值为0~6,其中若if条件满足,即a取值为2,4,6时,b+=a不会执行,所以当a取值为1,3,5时,b+=a才会被执行。
所以循环结束后b=1+3+5,输出结果为9。
故答案选择D选项。
19、A
[解析]字符数组
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 分类 模拟 542