1. C++问题,高手来
A。逗号表达式,最后的值是5
B。算术运算符>赋值运算符(优先级)
C。因为a,b都是int型,赋值表达式中a=a&&b,最后的值是a的值,逻辑运算符&&没有用到。
D。连续赋值,即a=4,b=4。
选C。不是赋值表达式。
这是我的理解。
2. C++问题,高手来
C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如:
3+5,6+8
称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为
表达式1,表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式
a=3*5,a*4
对此表达式的求解,读者可能会有两种不同的理解:一种认为“3*5,a*4” 是一个逗号表达式,先求出此逗号表达式的值, 如果a的原值为3,则逗号表达式的值为12,将12赋给a, 因此最后a的值为12。另一种认为:“a=3*5”是一个赋值表达式”,“a*4”是另一个表达式,二者用逗号相连,构成一个逗号表达式。这两者哪一个对呢?赋值运算符的优先级别高于逗号运算符, 因此应先求解a=3*5(也就是把“a=3*5”作为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4,得60。整个逗号表达式的值为60。
一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如(a=3*5,a*4),a+5 先计算出a的值等于15,再进行a*4的运算得60(但a值未变,仍为15),再进行a+5得20,即整个表达式的值为20。
逗号表达式的一般形式可以扩展为
表达式1,表达式2,表达式3……表达式n
它的值为表达式n的值。
逗号运算符是所有运算符中级别最低的。因此,下面两个表达式的作用是不同的:
① x=(a=3,6*3)
② x=a=3,6*a
第①个是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18。第②个是逗号表达式,它包括一个赋值表达式和一个算术表达式,x的值为3。
其实,逗号表达式无非是把若干个表达式“串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句(for语句)中.
请注意并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。如
printf("%d,%d,%d",a,b,c);
上一行中的“a,b,c”并不是一个逗号表达式,它是printf函数的3个参数,参数间用逗号间隔。
如果改写为
printf("%d,%d,%d",(a,b,c),b,c);
则“(a,b,c)”是一个逗号表达式,它的值等于c的值。括弧内的逗号不是参数间的分隔符而是逗号运算符。括弧中的内容是一个整体,作为printf函数的一个参数。
C语言表达能力强,其中一个重要方面就在于它的表达式类型丰富,运算符功能强,因而c使用灵活,适应性强
3. C++问题,高手来
执行(a>0)?a:-a;这个表达式的值为3,但他并没有对对a赋值啊。
若执行a=(a>0)?a:-a;计算表达式(a>0)?a:-a的值为3,将值通过a=(a>0)?a:-a赋予给a后,a的值就为3。
4. C++问题,高手来
选b。表达式1?表达式2:表达式3。这个语句表达的意思是如果表达式1为真,则以表达式2的值作为整个条件表达式的值。否则以表达式3为整个条件表达式的值。所以原表达式可以进一步简化为:
1?2:1。1为真所以整个表达式的值为2。
满意请给最佳,谢谢
5. C++问题,高手来
首先 7 + 8 > 2 返回真(姑且 叫做a) 。然后 25 % 5 = 0 返回假(姑且叫做b) 。最后真和假做或运算(a && b)运算规则是有一个假 则 整个 就为假 ;所以这个结果是假 ,也就是 0 ;
6. C++高手请进,求解惑
这里的关键是创建对象数组,有两种做法:
采用Student *s = new Student[2]创建,这需要Student有默认的构造方法,因为这里的name和score并非每个Student对象都一样,而是各自不同的四个变量。调用方法的时候,可以用s[0].getName()。析构的时候,需要用delete[](s)。不过这显然不符合这个Student类的设计,若要这样做,需要增加Student类的无参构造方法,且需要加上set方法,故暂且不用。
采用Student *s[2]创建,创建后对s[0]和s[1]可以分别调用Student类的带参构造方法创建对象,即s[0] = new Student(n1, a1)。调用方法是,由于是指针数组,需要用s[0]->getName()方式调用。析构时,由于s本身是指针数组,而数组的每个元素是new出来的,需要单独析构每个元素,即delete(s[0])和delete(s[1])。这种方法符合Student类的设计,可取。
所以实现代码如下(仅列出Student数组相关代码):
Student *s[2];s[0] = new Student(n1, a1);s[1] = new Student(n2, a2);cout getName() getScore() getName() getScore() << endl;delete(s[0]);delete(s[1]);
7. 坐等C++高手,都是一些简单的题,高人帮帮我吧,急用。现在没分了,各位帮帮忙吧。
/**不能保证全对,但是基本都对吧.*/
1.以下选项中合法的用户标识符是(B )。
A) long B) _2Test C) 3Dmax D) A.dat
2.以下选项中不能作为合法常量的是( C )。
A) 1.234e04 B) 1.234e0.4 C) 1.234e+4 D) 1.234e0
3.能正确表示逻辑关系:“x≥5且x≤0”的C语言表达式是( C )
A) x>=5 or x=0|x<=5
C) x>=5 &&x=5‖x<=0
4.设有如下定义:
int a=1,b=2,c=3,d=4,m=2,n=2;
则执行表达式:(m=a>b)&&(n=c>d)后,n的值为(B )
A) 1 B)2 C)3 D)0
5.main()
{ int a=3;
printf(“%d\n”,(a+=a-=a*a) );}( D )
A) –6 B)12 C) 0 D) -12
6.语句形式如下:
if()
例如if(a<b){t=a;a=b;b=t;}
以下错误的if语句是( C )。
A) if (x>y); B) if(x==y) x+=y;
C) if (x!=y) scanf(“%d”, &x)
else scanf(“%d”,&y);
D) if (x<y) {x++; y++;}
7.若有以下程序
main()
{ int a=4,b=3,c=5,t=0;
if (a<b) t=a;
a=b;
b=t;
if (a<c) t=a;
a=c;
c=t;
printf("%d, %d, %d\n", a,b,c);
}
输出结果为:______5,0,3_____
8.main()
{ int a=0,i;
for(i=0;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}}
printf("%d\n",a);
}
运行结果为( )// 这个好像答案不正确.应该是15的
A) 31 B) 13 C) 10 D) 20
9. main()
{int x=3,y=6,a=0;
while(x++!=(y-=1))
{a+=1;
if(y<x) break;
}
printf(“x=%d,y=%d,a=%d\n”,x,y,a);}
输出结果为:_____x=4,y=4,a=1_______
10. 以下循环体的执行次数是( c)
A) 3 B) 2 C) 1 D) 0
main( )
{ int i,j;
for(i=0,j=1; i<=j+1; i+=2, j--)printf("%d \n",i);
}
11.以下程序运行后的输出结果是 ______1 3 6_____。
fun(int x)
{ if(x/2>0) fun(x/2);
printf("%d ",x);
}
main()
{ fun(6); }
12.以下不能正确进行字符串赋初值的语句是( A)
A) char str[5]="good!";
B) char str[]="good!";
C) char *str="good!";
D) char str[5]={'g','o','o','d'};
13.若有以下定义和语句:
char *s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));
则输出结果是( A )
A)4 B)5 C)9 D)10
14.main()
{ char ch[3][5]={"AAAA","BBB","CC"};
printf("%s\n",ch[1]);
}
运行结果为( B )
A) "AAAA" B) "BBB" C) "BBBCC" D) "CC"
8. c++问题,高手来
作用域和可见性是不分家的。
myclass p[10]声明得是一个10个元素的对象数组,意思就是数组元素是类的对象。
当p离开作用域的时候,当然要销毁在内存中占用的空间,而p是一个数组指针,所以整个数组的10个元素都会消耗(遇到ASCII码为0的停止),而每个元素又是对象,对象销毁时,自动调用类的析构函数,处理善后工作,如释放delete类对象的指针。
你可能会疑问,为什么p作用域到了的时候,会自动消耗,而对象作用域到了的时候,不会自动消耗。这其实是为何需要析构函数的问题,一个类的对象,声明定义的时候,你无法得知它具体包含多少个数据成员,所以初始化任务需要构造函数。同样地,销毁的时候,不知销毁多少个数据成员(特指指针),这就需要你手动列出需要销毁的指针,比如是销毁一个还是销毁二个。
以上均是拙见,正确性并非百分之百,请自行斟酌。
最好的学习方法是被实践证明过有效的方法。建议你写出示例程序,然后下断,单步跟踪调试一下。