单选题有如下程序段:其中会产生编译错误的语句是(  )。A ④B ③C ②D ①

题目
单选题
有如下程序段:其中会产生编译错误的语句是(  )。
A

B

C

D

参考答案和解析
正确答案: A
解析:
语句①是合法的引用声明语句,变量i被r引用;语句②通过引用r将变量j的值赋给变量i;语句③声明了指针变量p,并初始化指向变量i;语句④中*p代表了变量i的值,是数值常量,不能放在赋值表达式的左端。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

( 20 )有如下程序段

int i =0, j=1;

int & r=i ; // ①

r =j; // ②

int*p= & i ; // ③

*p= & r ; // ④

基中会产生编译错误的语句是

A ) ④

B ) ③

C ) ②

D ) ①


正确答案:A

第2题:

有如下程序段int i=0,j=1;int &r=i; //①r=j; //②int*p=&i; //③*p=&r; //④其中会产生编译错误的语句是

A.④

B.③

C.②

D.①


正确答案:A
解析:本题考查的知识点是:指针和引用。指针声明的一般形式为: 数据类型>*声明的指针变量名>;
引用声明的一般形式为:
数据类型>&声明的引用变量名>=被引用的变量名>;
引用声明时必须初始化,而指针则可有可无。通过引用来改变其所引用的对象,直接赋值即可,而通过指针改变其所指对象则须使用一元运算符“*”。在本题中,语句①就是一条合法的引用声明语句,使变量i被r所引用。语句②通过引用r将变量j的值赋给变量i。语句③声明了指针变量p,并初始化指向变量i。而语句④中的*p代表了变量i,欲将&r(变量r的地址值)赋给*p(变量i),这会引起VC6编译器产生一条类型不匹配的错误“无法将类型int*转换为int”。故本题应该选择A。

第3题:

现有如下程序段,此程序段编译有错误,则程序段的错误出在

#include

main()

{ int a=30,b=40,c=50,d;

d=a >30?b:c;

switch(d){case a:printf("%d,",a);

case b:printf("%d,",b);

case c:printf("%d,",c);

default:printf("#");}}

A.default:printf("#");这个语句

B.d=a>30?b:c;这个语句

C.case a:printf("%d,",a); case b:printf("%d,",b); case c:printf("%d,",c);这三个语句

D.switch(d)这个语句


正确答案:C

第4题:

有如下程序:

#include<iostream>

using namespace std;

class Music{

public:

void setTitle(char*str){strcpy(title,str);}

protected:

char type[10];

private:

char title[20];

};

class Jazz:public Music{

public:

void set(char*str){

strcpy(type,”Jazz”); //①

strcpy(title,str); //②

}

};

下列叙述中正确的是

A.程序编译正确

B.程序编译时语句①出错

C.程序编译时语句②出错

D.程序编译时语句①和②都出错


正确答案:C
解析:数据成员title在基类中声明为私有成员,派生类不能访问基类中的私有成员,故语句②在编译时出错。本题选C。

第5题:

有如下程序段,其中会产生编译错误的语句是 inti=0,j=1; int &r=i; //① r=j; //② int * p=&i; //③ * p=&r; //④

A.④

B.③

C.②

D.①


正确答案:A
解析:赋值运算符不能将int地址(指针)赋值给int变量。 

第6题:

当程序出现编译错误时,程序可以继续执行,只是运行过程中会出错。()


正确答案:正确

第7题:

对于已经被定义过可能抛出异常的语句,在编译时()。

A.必须使用try/catch语句处理异常

B.如果程序错误,则必须使用try/catch语句处理异常

C.不使用try/catch语句会出现编译错误

D.不使用try/catch语句不会出现编译错误


正确答案:B

第8题:

下列语句哪一个正确()

A.Java程序经编译后会产生machinecode

B.Java程序经编译后会产生bytecode

C.Java程序经编译后会产生DLL

D.以上都不正确


正确答案:B

第9题:

有如下程序:

#include<iostream>

#include<cmath>

using std::cout;

class Point{

public:

friend double distance(const Point &p); //P距原点的距离

Point(int xx=0,int yy=0):x(xx),Y(YY){}//①

private:

int x,y;

};

double distance(const Point &p){ //②

return sqrt(P.x*P.x+P.y*P.y);

}

int main(){

Point p1(3,4);

cout<<distance(p1);

return 0; //③

}

下列叙述中正确的是

A.程序编译正确

B.程序编译时语句①出错

C.程序编译时语句②出错

D.程序编译时语句③出错


正确答案:A

第10题:

有如下程序段: includedefine Max(a,b) a>b?a:bmain(){int a=5,b=6,c=4,d;d=c+Max(a,

有如下程序段: #include<stdio.h> #define Max(a,b) a>b?a:b main() { int a=5,b=6,c=4,d; d=c+Max(a,b); printf("%d",d); } 其输出结果为______。

A.10

B.5

C.6

D.编译错误


正确答案:B
解析:在C语言中,宏定义是直接替换的,所以在c+a>b?a:b这个条件表达式中,c+a>b为真,所以用a的值作为整个表达式的值,而a的值为5,所以整个表达式的值为5。

更多相关问题