判断题:
1、在选择结构中,else总是与它前面最近的那个if相配套的。T
2、在switch分支结构中不能使用break语句。F
选择题:
1、执行下面程序段,给x、y赋值时,不能作为数据分隔符的是_____。
int x,y;
cin >> x >> y;
A. 回车
B. 空格
C. Tab键
D. 逗号
2、 C/C++语言中,运算对象必须是整型数的运算符是【 】。
A. /
B. %和/
C. *
D. %
3、高级语言编写的程序相比机器语言编写的特点是_____。
A. 计算机能直接识别和执行
B. 执行速度快
C. 可读性好,语法更接近自然语言
D. 依赖于具体机器,移植性差
4、标准C++语言的源程序的文件名的扩展名是_____。
A. .c
B. .cpp
C. .obj
D. .exe
5、把源程序文件翻译转换成目标文件的过程叫做_____。
A. 编译
B. 编辑
C. 连接
D. 调试
6、表达式10+‘a’+1.5-567.345/'b’的结果类型是( )。
A. unsigned float
B. int
C. long
D. double
7、下列字符串可以作为标识符的是_____。
A. long
B. INT
C. !DF
D. 5_student
8、下面关于C/C++语言注释的描述中,正确的是_____。
A.
以"/* "开始的单行注释
B.
以"/*"开始,以"//"结束的块式注释
C.
以"//"开始和结束的块式注释
D.
以 "/*" 开始,以 "*/"结束的块式注释
9、假定int a = 3, b = 2; 则表达式1.0 * a / b的值是( )。
A. 1.5
B. 1.0
C. 2
D. 1
10、设d为字符变量,下列表达式中不正确的是【 】。
A. d=110
B. d=“n”
C. d=‘n’
D. d=‘\n’
11、 C或C++语言中,运算对象必须是整型数的运算符是( )。
A. /
B. *
C. %
D. %和/
12、else语句嵌套使用时,C/C++语言规定,else总是与( )配对。
A. 距离最近的if
B. 其前面最近的if
C. 缩排位置相同的if
D. 其前面最近的未配对的if
13、假设有如下的程序片段,若grade的值为’C’,则输出结果是_____。
switch(grade)
{
case 'A': cout << "GREAT!";
case 'B': cout << "GOOD!";
case 'C': cout << "OK!";
case 'D': cout << "NO!";
default : cout << "ERROR!";
}
A. OK!
B. GREAT!GOOD!OK!NO!ERROR!
C. 不确定
D. OK!NO!ERROR!
14、阅读下面的程序:
#include<iostream>
using namespace std;
int main()
{
int a,b;
cin >> a >> b;
if(a>b)
a=b;b=a;
else
a++;b++;
cout << a << b;
return 0;
}
正确的说法是( )。
A. 有语法错误不能通过编译
B. 若输入5,4则输出4,5
C. 若输入4,5则输出5,6
D. 若输入5,4则输出5,5
15、下面表达式与max = (a>b) ? a : b; 表示的作用不同的是( )。
A.
max = b;
if(a > b)
max = a;
B.
max = a;
if(a < b)
max = b;
C.
if( a> b)
max = a;
else
max = b;
D.
if( a> b)
max = b;
else
max = a;
16、 下面的程序段执行后,x 的值是【 】。
int a = 9, b = 7, c = 3, d = 5, x;
x = a > b ? c : d;
A. 3
B. 5
C. 7
D. 9
17、 判断 char 型变量 s 是否为小写字母的正确表达式是( )。
A. ‘a’ <= s<= ‘z’
B. (s>=‘a’) & (s<=‘z’)
C. (s>=‘a’) && (s<=‘z’)
D. (‘a’<=s) and (‘z’>=s)
18、 假设有如下的程序片段,若grade的值为’C’,则输出结果是【 】。
switch(grade)
{
case 'A': cout << "GREAT!";
case 'B': cout << "GOOD!";
case 'C': cout << "OK!";
case 'D': cout << "NO!";
default : cout << "ERROR!";
}
A. OK!
B. GREAT!GOOD!OK!NO!ERROR!
C. 不确定
D. OK!NO!ERROR!
19、下面程序段运行时的输出结果是( )。
grade='C';
switch(grade)
{
case 'A': printf("A");
case 'B': printf("B");
case 'C': printf("C");
case 'D': printf("D");
default : printf("ERROR!");
}
A. C
B. ABC
C. DERROR
D. CDERROR
20、while和do…while语句的主要区别是_____。
A. while的循环控制条件比do…while循环控制条件严格
B. do…while允许使用break语句跳出循环,而while只能用continue跳出循环
C. 当循环体包含多条语句时,do…while的循环体必须使用复合语句,而while循环体不需要使用复合语句
D. do…while的循环体至少要无条件执行一次,而while可能一次都不执行
21、下面语句中,while循环执行的次数是【 】次。
k=10;
while(k=1)
k=k-10;
A. 无限
B. 1
C. 0
D. 2
22、下面程序段执行时输出_____个字符#。
int i=1;
while(1)
{
i++;
if(i==10)
break;
if(i%2==0)
cout << "#";
}
A. 3
B. 4
C. 5
D. 10
23、若i,j已定义为int型,则以下程序段中循环体总的执行次数是_____(假定在循环体内不改变i,j的值)。
for(i=1; i<=5; i++)
for(j=0; j<4; j++)
{ ……//循环体语句 }
A. 25
B. 30
C. 24
D. 20
24、下面代码段运行后,f的值为( )。
int f,f1=1,f2=1;
for(int i=3;i<=8;i++)
{
f=f1+f2;
f1=f2;
f2=f;
}
cout << f << " ";
A. 13
B. 34
C. 21
D. 10
25、 while和do…while语句的主要区别是【 】。
A. while的循环控制条件比do…while循环控制条件严格
B. do…while允许使用break语句跳出循环,而while只能用continue跳出循环
C. 当循环体包含多条语句时,do…while的循环体必须使用复合语句,而while循环体不需要使用复合语句
D. do…while的循环体至少要无条件执行一次,而while可能一次都不执行
26、有如下程序,编译运行这个程序将出现的情况是_____。
#include<iostream>
using namespace std;
void f(double val);
int main()
{
double val;
f(val);
cout << val;
return 0;
}
void f(double val)
{
val=3;
}
A. 输出:3
B. 输出:3.0
C. 输出一个不确定的数
D. 编译出错,无法运行
27、函数的定义和函数的声明需要匹配,否则无法通过编译。也就是说,匹配时函数的定义和声明中的( )可以不同,其它必须完全相同。
A. 函数名称
B. 参数名称
C. 参数类型及顺序
D. 返回类型
28、若一个函数的返回值类型为void,以下叙述正确的是_____。
A. 函数不能修改实际参数的值
B. 函数返回值需要强类型转换
C. 函数没有返回值
D. 调用该函数不执行任何操作
29、下面函数调用的语句中,一定不正确的是_____。
A. max(3, a+b);
B. max(3,5);
C. max(a ,b) ;
D. max(int a,int b);
30、下面关于形参与实参的说法中,不一定正确的是( )。
A. 形参与实参如果都是变量,则变量名称与数据类型必须完全相同
B. 形参(形式参数)是函数的局部变量,函数调用完毕后,局部变量就被销毁
C. 实参(实际参数)可以是常量、变量、表达式或其它函数调用的返回值
D. 值传递规定:函数调用时将实参的值传递给形参,函数调用结束后并不能将形参的值传递给实参
31、下列关于函数定义中return语句的描述,错误的是_____。
A. 函数通过return语句仅能返回一个值
B. return语句用于结束当前正在执行的函数,并将程序控制权返回给调用此函数的函数
C. 一个函数可以有多条return语句
D. 一个函数中必须有而且只能有一条return语句
32、函数返回值的类型是由_____决定的。
A. return语句中的表达式类型
B. 调用该函数时的主调函数实参的数据类型
C. 在定义该函数时所指定的函数返回类型
D. 调用该函数时系统临时分配的数据类型
33、若有下面的函数调用fun(a+b,3,max(n-1,b))则fun的实参个数是_____。
A. 5
B. 6
C. 3
D. 4
34、下面说法中正确的是:在C/C++语言程序中_____。
A. 函数的定义和函数的调用均可以嵌套
B. 函数的定义和函数的调用均不可以嵌套
C. 函数的定义不可以嵌套,但函数的调用可以嵌套
D. 函数的定义可以嵌套,但函数的调用不可以嵌套
35、下面定义了f与fun两个函数,当main函数中调用fun函数时,将出现的情况是( )。
void f(int n)
{
n=1;
}
void fun()
{
int n=0;
f(n);
printf("%d",n);
}
A. 输出1
B. 输出0
C. 输出一个不确定的数
D. 输出10
36、能够正常可靠实现交换两个整数值的函数定义的是( )。
A.
void fun(int *x, int *y)
{
int *temp;
*temp = *x;
*x = *y;
*y = *temp;
}
B.
void fun(int x, int y)
{
int temp = x;
x = y;
y = temp;
}
C.
void fun(int* x, int* y)
{
int temp = *x;
*x = *y;
*y = temp;
}
D.
void fun(int* x, int* y)
{
int *temp = x;
x = y;
y = temp;
}
37、定义数组a的语句如下:int a[5]={1,3,5};
表示定义一个由5个int型元素组成的一维数组,同时进行初始化。
则下面对初始化值的说法中正确的是________。
A. 将1、3、5依次赋给a[0]至a[2]
B. 将1、3、5依次赋给a[1]、a[3]、a[5]
C. 将1、3、5依次赋给a[3]至a[5]
D. 数组访问越界
38、已知自定义函数的原型声明如下:int max(int a[],int n);
,如果主函数中定义了数组int arr[5];
并给予初始值,则主函数中调用max函数语法正确的是________。
A.
int maxValue = max(a,5);
B.
int maxValue = max(int a[],5);
C.
int maxValue = max(arr,5);
D.
int maxValue = max(int arr[],5);
39、假设定义数组int a[10];则程序中使用a[10]=1;,表示________。
A. 将数组a的最后一个元素之后的空间赋值为1,可能导致严重后果
B. 将数组a的第一个元素赋值为1
C. 将数组的所有10个元素都赋值为1
D. 将数组a的最后一个元素赋值为1
40、若有说明:int a{3][4] ;则对a数组元素的非法引用是_____。
A. a{0][4]
B. a{4-2][0]
C. a{0][2*1]
D. a{1][3]
41、若二维数组a有m列,则在a[i][j]前的元素个数为_______________。
A. j*m+i
B. i*m+j+1
C. i*m+j-1
D. i*m+j
42、下面函数是折半查找法判断key在数组a(n个已由小到大排序的整数)中是否存在,若找到则返回下标(>=0),若未找到则返回-1。
int search( int a[], int n, int key)
{
int bot=0,top=n-1,mid;
while(bot<=top)
{
mid=bot+(top-bot)/2;
if(a[mid]==key)
return mid;
else if(a[mid]>key)
【1】
else
【2】
}
return -1;
}
A. 【1】bot=mid+1; 【2】top=mid-1;
B. 【1】bot=mid; 【2】top=mid;
C. 【1】top=mid-1; 【2】bot=mid+1;
D. 【1】top=mid; 【2】bot=mid;
43、假设定义数组int a[10];,则数组 a 能访问的元素的下标范围是 0 到 9。一旦超过这个范围,如访问a[10],可能会出现的情况不包括【 】。
A. 编译不通过
B. 运行正常
C. 运行显示意外值
D. 运行时异常退出
44、已知自定义函数的原型声明如下:
int max(int a[],int n);
如果主函数中定义了数组int arr[10];
并给予初始值,则主函数中调用max函数语法正确的是【 】。
A.
int maxValue = max(a,10);
B.
int maxValue = max(int a[],10);
C.
int maxValue = max(arr,10);
D.
int maxValue = max(int arr[],10);
45、下面对二维数组 x 的定义错误的是【 】。
A.
int x[][3]={{0},{1},{1,2,3}};
B.
int x[][3]={0,1,2,3};
C.
int x[3][3]={{1,2,3},{1,2,3},{1,2,3}};
D.
int x[3][]= {{1,2,3},{1,2,3},{1,2,3}};
46、若有说明:int a[][3]={1,2,3,4,5,6,7,8,9,10}; 则a数组第一维的大小是【 】。
A. 3
B. 4
C. 10
D. 不确定
47、下面的语句定义了两个字符数组 sa 和 sb,说法正确的是【 】。
char sa[]="hello";
char sb[]={'h', 'e', 'l', 'l', 'o'};
A. 数组 sa 和数组 sb 是同一个内存,使用不同的名字
B. 数组 sa 的长度等于数组 sb 的长度
C. 数组 sa 的长度大于数组 sb 的长度
D. 数组 sa 的长度小于数组 sb 的长度
48、 已知有定义char s1[20],s2[20];
,判断字符串s1是否大于字符串s2时,应当使用【 】。
A.
if (s1>s2)
B.
if (strcmp (s1,s2))
C.
if (strcmp (s1,s2)<0)
D.
if (strcmp (s1,s2)>0)
49 、定义一个字符数组s,下面语句段执行后,语句cout << s;的执行结果不是“How are you!”的是【 】。
A.
char s[20]; cin >> s;
运行时输入How are you!
回车
B.
char s[20]; cin.getline(s,20);
运行时输入How are you!
回车
C.
char s[20]; strcpy(s,"How are you!");
D.
char s[20]="How are you!";
50、下面对C++语言字符数组的描述中错误的是【 】。
A. 不可以用关系运算符对字符数组中的字符串进行比较
B. 字符数组中的字符串可以整体输入、输出
C. 可以通过赋值运算符“=”对字符数组整体赋值
D. 字符数组可以存放字符串
51、若有以下定义:char s[20]="programming",*p=s;
,则不能代表字符g的表达式是【 】。
A.
*p+3
B.
s[3]
C.
p[3]
D.
p+=3,*p
52、C++中,文件操作完成后必须进行关闭,断开文件流与文件的联系,保证将缓冲区中的数据写入到文件中。假如打开文件流对象ifs,则关闭文件要使用ifs.【 】方法。
A. end
B. fail
C. close
D. open
答案(仅供参考)
1 ~ 10 DDCBA DBDAB
11 ~ 20 CDDBD ACDDD
21 ~ 30 ABDCD CBCDA
31 ~ 40 DCCCB CACCA
41 ~ 50 CCCCD ACDAC
51 ~ 52 AC