二级C语言分类模拟题542
(总分55, 做题时间90分钟)
选择题
1.
关于字符常量,以下叙述正确的是______。
A 空格不是一个字符常量
B 字符常量能包含大于一个的字符
C 单引号中的大写字母和小写字母代表的是相同的字符常量
D 所有的字符常量都可以作为整型量来处理
分值: 2
答案:D
2.
以下数组定义中错误的是______。
A int x[2][3]={1,2,3,4,5,6};
B int x[][3]={0};
C int x[][3]={{1,2,3},{4,5,6}};
D int x[2][3]={{1,2},{3,4},{5,6}};
分值: 2
答案:D
3.
有以下程序
#include <stdio.h>
void fun(int *a, int n)/* fun 函数的功能是将a所指数组元素从大到小排序*/
{ int t, i,j;
for (i=0; i<n-1 ;i++)
for 0=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,
分值: 1
答案: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.
有以下程序:
#include<stdio.h>
main()
{int k=-3;
if(k<=0) printf("****\n")
el printf("&&&&\n");
}
程序的输出结果是
A 输出####
B 输出&&&&
C 输出####&&&&
D 有语法错不能通过编译
分值: 2
答案:D
5.
以下叙述中错误的是______。
A gets函数用于从终端读入字符串
B getehar函数用于从磁盘文件读入字符
C fputs函数用于把字符串输出到文件
D fwrite函数用于以二进制形式输出数据到文件
分值: 1
答案:B
[解析] 本题考查字符处理函数和文件操作函数,属于基础知识。其中B选项getchar()函数是用于从终端读入一个字符。所以选择B选项。
6.
有以下程序:
#include<stdio.h>
main()
{int aa[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;
el++p;
printf("%d", *p);
}
printf("\n");
}
程序的输出结果是
A 23
B 26
C 33
D 36
分值: 1
答案:A
7.
有以下程序:
#include<stdio.h>
main()
{int s, t, A=10; double B=6;
s=sizeof(A); t=sizeof(B);
printf("%d, %d\n", s, t);
}
在VC6平台上编译运行,程序运行后的输出结果是______。
A 2,4
B 1,4
C 4,8
D 10,6
分值: 1
答案:C
[解析] 函数sizeof()的参数为C中定义或者用户自定义的数据,作用是返回参数所指的数据类型所占用的内存空间的字节数。本题中A是整型,B是双精浮点数,分别占4个字节和8个字节。所以选C。
8.
以下程序的运行结果是______。
main()
{ char ch="A";
int num1=ch;
float num2=num1;
printf("% f", num2);
}
A .A
B 65
C 65.00000
D .a
分值: 1
答案:C
[解析] A的ASCII码为65,赋值语句num1=ch把char类型的变量转换成int类型的变量num1;赋值语句num2=num1把类型为int的变量转换为类型为float的变量num2,最后printf打印出num2的值为65.00000。
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);
分值: 1
答案:D
[解析] 本题考查++运算操作符,当++在变量前面时,是先加1再赋值,当++在变量后面时,是先赋值再加1,所以答案选择D。
10.
有以下程序:
#include<stdio.h>
#include<string.h>
main()
{char str[][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
分值: 1
答案:C
[解析] 本题中定义一个二维字符数组str,它包含3个字符串,每个字符串存放在一个长度为10的一维数组中,指针变量p指向strp[0],即第一个字符串“One”,由于“One”存放在长度为10的一维数组,p+10指向下一个字符串“Three”,长度为5。故本题答案为C选项。
11.
面向对象方法中,继承是指______。
A 一组对象所具有的相似性质
B 一个对象具有另一个对象的性质
C 各对象之间的共同性质
D 类之间共享属性和操作的机制
分值: 1
答案:D
[解析] 继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。
12.
若有以下程序:
#include<stdio.h>
main()
{char c1,c2;
c1="C"+"8"-"3";c2="9"-"0";
printf("%c%d\n",c1,c2);
}
则程序运行后的输出结果是______。
A H"9"
B .H9
C F"9"
D 表达式不合法输出无定值
分值: 1
答案:B
[解析] 本题考查字符变量以及print()函数相关知识。字符变量c1被赋值为"C"+"8"-"3",即ASCII码的运算,67+54-49=72,即H;字符变量c2被赋值为"9"-"0",但输出时,需要注意的是c1以字符变量输出,而c2是以十进制整型变量输出。因此B选项正确。
13.
以下叙述中正确的是______。
A 在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上
B 在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔
C 在printf函数中,各个输出项只能是变量
D 使用printf函数无法输出百分号“%”
分值: 1
答案:A
[解析] scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,所以A正确。scanf函数的格式控制串可以使用其他非空白字符,如逗号,但在输入时必须输入这些字符,以保证匹配就可以,所以B错误。printf函数可以输出常量,也可以输出变量,所以C错误。printf函数可以用“\%”来输出百分号“%”,所以D错误。