国家二级C++机试(基本控制结构和数组、指针与引用)模拟试卷2
选择题
1.有如下程序:
#include<iostream>
using namespace std;
int main()
{
char str [100],*p;
cout<<’’Please input a string:’’;
cin;str;
p=str;
for(int i=0;*p!=’\0’;p++,i++);
cout<<’’i’’<<end1;
return 0;
}
运行这个程序时,若输入字符串为:
abcdefg abcd
则输出结果是( )。(A)
A. 7
B. 12
C. 13
D. 100
解析:此题考查的是默认输入格式。本题输入数据类型为char,因此输入的数据是“从第一个非空白字符开始到下一个空白字符结束”,而输入数据为abcdefg abed,其中abcdefg后有空格。所以输入后str中的字符串为\\
2.if语句的语法格式可描述为:
格式1:if(<条件>)<语句>
或
格式2:if(<条件>)<语句1>else<语句2>
关于上面的语法格式,下列表述中错误的是( )。(A)
A. <条件>部分可以是一个if语句,例如if(if(a==0-)…)…
B. <语句>部分可以是一个if语句,例如if(…)if(…)…
C. 如果在<条件>前加上逻辑非运算符!并交换<语句1>和<语句2>的位置,语句功能不变
D. <语句>部分可以是一个循环语句,例如if(…)while(…).…
解析:此题考查的是if语句。If语句的条件部分是一个表达式而不是语句,因此选项A叙述错误。
3.若x和y是程序中的两个整型变量,则下列if语句中正确的是( )。(A)
A. if(x==0)y=1;else y=2;
B. if(x==0)then y=1 else y=2;
C. if(x==0)y=1 else y=2;
D. if(x==0)y=1;else y=2;
解析:if else语句的形式为:
if(<条件>) <语句1>else<语句2>
所以符合以上形式的if else语句为选项A。
4.下列语句中,与语句“1n=(a>b?(1)>c?1:0):0);”的功能等价的是( )。(C)
A. if(a<=b) n=0;
B. if((a>b)Il(b>c))n=1;else n=0;
C. if(a>b)if(b>c) n=1:else n=0;else n=0;
D. if(a>b) n=1;else if(<=c)n=1;else if(b>c)n=1;else n=0;
解析:条件表达式(a>b?(b>c?1:0):0)的含义是,如果a>b成立,则此表达式的值等于条件表达式(b>c?1:0)的值,否则其值等于0。而条件表达式(b>c?1:0)的含义是,如果b>c成立,其值等于1,否则其值等于0。
5.有如下程序
#include<iostream>
using namespace std;
int main(){
char a;
cin>>a;
if(a=’*’) cout<<’’***’’<<end1;
else cout<<’’###’’<<end1;
rerurn 0:
}
输入字符+时,程序的运行结果是( )。(A)
A. ***
B. ###
C. ***###
D. 无输出
解析:本题的考点是双分支选择语句的执行流程,答题的关键点在于选择条件的判定。双分支选择语句的执行流程是首先计算if后表达式的值,如果表达式的值为非零,则执行if后面的分支,否则执行与其匹配的else后面的分支。本题执行时虽然输入变量a的值为‘+’,但是在执行if后括号内表达式(a=’*’)的时,由于此表达式为赋值表达式,因此表达式的值为赋值号右边的值’*’,其ASCII码的值非零,执行if后面的输出语句“***”后回车。
6.有如下程序:
int x=3;
do {
x-=2;
cout<<x;
} while(1(–x));
执行这个程序的输出结果是( )。(C)
A. 1
B. 30
C. 1-2
D. 死循环
解析:此题考查的是do-while循环语句。do-while循环首先执行do语句中的循环体,再判断是否需要继续执行循环。题目中do语句“x-=2”,while语句中“–x”即x为0,取反为非0,循环继续执行;执行“x-=2”和“–x”取反后,循环结束程序退出。
7.执行下列语句段后,输出字符’’*\\(B)
A. 48
B. 49
C. 50
D. 51
解析:此题考查的是for循环语句。For循环中i从50开始逐渐递减,直到i=1时退出,而此时没有机会执行到循环体,因此一共执行了49次循环体,所以最终输出的是49个字符’*’。
8.执行下列语句段后,输出字符“*”的个数是( )。
for(int i=50;i>1;I-=2)cout<<’*’;(B)
A. 24
B. 25
C. 26
D. 50
解析:此题考查的是for循环语句。执行循环语句,变量i从50递减,每次减2,所以循环会执行25次,输出25个’*’。
9.有如下程序:
#include<iostream>
using namespace std;
int main(){
hat sum;
for(int i=0;i<6;i+=3){
sum=i;
for(int j=i;j<6;j++)sum+=j;
}
cout<<sum<<end 1;
return 0:
}
运行时的输出结果是( )。(D)
A. 3
B. 10
C. 12
D. 15
解析:由题干可以知道,外层循环会进行两次,且第一次的结果我们可以不去理会和计算,读者仔细观察能发现,在第一次的循环以后sum和j都会被重新赋值,所以外层第二次循环如下:
此时i=3,sum=3内层循环开始如下:j=3,j<6,sum=6;j=4,j<6,sum=10,j=5,j<6,sum=15,j=6退出内层循环。得到sum=15。
10.有如下程序段:
int i=5;
while(int i=
本文档预览:3600字符,共10492字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载