2017年高级语言程序设计考研真题答案及解析
考研真题,是用来研究考试规律的。考生可通过真题,来确定自己的复习范围,来研究考试的重点、难点是哪些内容。希赛网为大家整理2017年高级语言程序设计考研真题答案及解析,供大家参考!
本文提供2017年高级语言程序设计考研真题答案及解析,以下为具体内容
1、若有说明语句"char s='\092';",则该语句( )。
A、使s的值包含1个字符
B、说明不合法,s的值不确定
C、使s的值包含4个字符
D、使s的值包含3个字符
2、以下程序的输出为( )。#include <iostream.h>void main(void) { int i,j,k,a=3,b=2; i=(--a==b++)?--a:++b; j=a++;k=b; cout<<i<<'\t'<<j<<'\t'<<k<< endl;}
A、2 1 3
B、1 1 2
C、4 2 4
D、1 1 3
3、若变量a已说明为float类型,i已说明为int类型,则表达式(或语句)( )能实现将a中的数值保留小数点后两位,第三位进行四舍五入的运算。
A、a=(a*100+0.5)/100.0;
B、i=a* 100+0.5,a=i/100.0;
C、a=(int)(a* 100+0.5)/100;
D、a=(a/100+0.5)* 100.0;
4、下列关于C++与C语言的关系描述中,错误的是( )。for(i=0,k=-1;k=1;i++,k++)cout<<"****\n";
A、C语言是C++语言的一个子集
B、C++与C语言是兼容的
C、C++对C语言进行了一些改进
D、C++和C语言都是面向对象的
5、以下选项中,合法的用户标识符是( )。
A、long
B、_2Test
C、3Dmax
D、
6、下列语句彼此等价的是( )。
A、!(a<10)&&!(a>0)和!((a<10)&&(a>0))
B、!(a==b)和(a>b)&&(a<b)
C、!((a>10)||(a<0))和(a<=10)&&(a>=0)
D、!(a>b)和a<b
7、设以下变量都是int类型,则值不等于7的表达式是( )。
A、x=y=6,x+y,x+1
B、x=y=6,x+y,y+1
C、x=6,x+1,y=6,x+y
D、y=6,y+1,x =y,x+1
8、下列语句段将输出字符'*'的个数为( )。int i=100;while(1){ i--; if(i==0)break; cout<<'*';}
A、98个
B、99个
C、100个
D、101个
9、在C++语言中函数返回值的类型是由( )决定的。
A、调用该函数时系统临时
B、return语句中的表达式类型
C、定义该函数时所指定的函数类型
D、调用该函数时的主调函数类型
10、若有以下说明 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为6的表达式是( )。
A、*p+6
B、*(p+6)
C、*p+=5
D、p+5
1、试题答案:B
试题解析:
题中有'\092',以0开头表示为八进制,而又有9,超出八进制范围,故错误;说明不合法,s的值不确定,故本题选B。
2、试题答案:D
试题解析:
语句i=(--a==b++)?--a:++b;可以写成a=a-1;i=(a==b)?--a:++b;b=b+1;,故a==b(即2==2)为真,则i=--a;(表达式++b不执行),即a=a-1;i=a;,那么语句结束时a的值为1,i的值为1,b的值为3。语句j=a++;可以写成j=a;a=a+1;,则j的值为1,a的值为2。语句k=b,则k的值为3。综上输出的i、j、k的值分别为1、1、3。故输出结果为1 1 3,本题选D。
自增和自减运算符,他们的作用是使变量的值增1或减1,如:
++i(在使用i之前使i的值加1,如果i的原值为3,则执行j=++i,i的值先自增为4,然后将i的值赋值给j,j的值为4)。i++(在使用i之后使i的值加1,如果i的原值为3,则执行j=i++,先将i的值赋值给j,j的值为3,然后i的值自增为4)
++i和i++的作用相当于i=i+1,但他们不同之处在于++i是先执行i=i+1,再使用i的值;而i++是先使用i的值,再执行i=i+1。
--i和i--的运算规则同上。
条件表达式的一般形式为:表达式1?表达式2:表达式3。它的执行顺序:先求解表达式1;若为真(非0)则求解表达式2,此时表达式2的值就是整个条件表达式的值;若表达式1的值为0(假),则求解表达式3,此时表达式3的值就是整个条件表达式的值。
3、试题答案:B
试题解析:
令a=1.234,代入计算:
选项A,a=(1.234*100+0.5)/100.0=123.9/100.0=1.239,与题意不符。
选项B,i=1.234*100+0.5=123(i为int型,故123.9转为123),a=123/100.0=1.23,与题意相符合。
选项C,a=(int)(1.234*100+0.5)/100=(int)(123.9)/100=123((int)强制类型转换符,将123.9转为整型123)/100=1(除法运算符'/':两个整型数据相除,结果为整型),与题意不符。
选项D,a=(1.234/100+0.5)*100.0=0.51234*100.0=51.234,与题意不符。
综上本题选B。
4、试题答案:D
试题解析:
选项A,C++语言起源于C语言;C++是C语言的超集,即C语言是C++语言的一个子集,故A说法正确。选项B说法正确,C++语言与C语言是兼容的。选项C,C++对C语言作了很多改进,引进了类和对象的概念,故C说法正确。选项D,C语言是面向过程而不是面向对象的,故D说法错误。综上本题选D。
5、试题答案:B
试题解析:
C语言规定标识符只能由字母、数字、下划线3种字符组成,且第一个字符必须为字母或下划线。编译系统将大写字母和小写字母认为是两个不同的字符。关键字不能作为用户标识符。
选项A,long是关键字:声明长整型变量或函数返回值类型,故不能作为用户标识符,选项A不合法。选项B符合要求,合法。选项C中3Dmax,第一个字符为数字,故选项C不合法。选项D中A.dat,有字符'.',故选项D不合法。综上本题选B。
6、试题答案:C
试题解析:
选项A,!(a<10)即a>=10,!(a>0)即a<=0,则!(a<10)&&!(a>0)就是a>=10&&a<=0(恒为假);而!((a<10)&&(a>0))即a>=10||a<=0,故不等价。
选项B,!(a==b)即a!=b,而(a>b)&&(a<b)(恒为假),故不等价。
选项C,!((a>10)||(a<0))的其中(a>10)||(a<0)取值区间为(-无穷,0)并(10,+无穷),那么!((a>10)||(a<0))取值范围为[0,10],即a<=10&&a>=0,故等价。
选项D,!(a>b)即a<=b,与a<b不等价。
综上本题选C。
7、试题答案:C
试题解析:
选项A的值就是x+1的值,对x的值进行改变的表达式为x=y=6,故x+1的值为7,与题意不符。
选项B的值就是y+1的值,对y的值进行改变的表达式为x=y=6,故y+1的值为7,与题意不符。
选项C的值就是x+y的值,对x,y的值进行改变的表达式为x=6,y=6,故x+y的值为12,符合题意。
选项D的值就是x+1的值,对x的值进行改变的表达式为x=y,对x的值进行改变的表达式为y=6,故x=6,x+1的值为7,与题意不符。综上本题选C。
逗号表达式一般形式为:表达式1,表达式2,...,表达式n(表达式从左至右依次执行)。表达式的值:表达式n的值。
8、试题答案:B
试题解析:
while循环的条件表达式为1,恒为真;那么只有循环体中的break语句(则需要i==0成立)可以结束循环。第一次循环:执行语句i--;后,i值为99;执行if语句时,i为99;执行输出语句,输出一个'*'。故每次循环i的值减1,循环中先判断i的值,再输出'*'。那么从i=99到i=1,一共输出99个'*';当i=0时,先判断i==0成立,直接结束循环,不输出'*'。综上输出字符'*'的个数是99个,故本题选B。
9、试题答案:C
试题解析:
在定义函数时,需要指定函数的类型,即函数返回值类型。故本题选C。
10、试题答案:C
试题解析:
选项A,*p+6即a[0]+6=1+6=7,与题意不符。选项B,*(p+6)即a[6]=7,与题意不符。选项C,*p+=5(a[0]+=5)即a[0]=a[0]=5=1+5=6,符合题意。选项D,p+5表示a[5]的地址,与题意不符。综上本题选C。