设有定义intx=1,以下表达式中,与其他选项值不同的是

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/13 16:07:15
C语言:设有定义:float x=123.4567;,则执行以下语句后的输出结果是 【 】 .

LZ注意,先不管是不是输出对于(int)(x*100+0.5)/100.0这个算式被强制转换为整型的是分子部分,而分子除以100.0这个浮点型的数据之后整个算式就又变回浮点型了,要输出的数据真是整型也

设有如下定义:int a,*p,*p1 = NULL,*p2 = NULL,sum[2] = {1,2};以下指针变量p

选B因为&a是一个指向数组的指针,而p是一个指向整型的指针,二者不是同一个概念.

设有变量定义“intx=1,y=2,z=3 ;”,计算下列表达式的值

1)这个是要求什么表达式的值呢?后面的除2(/2)完全没有作用啊,执行后x=2,因为x是整型;若是x=((float)(y)+0.5)/2,执行后x=1;2)逗号(,)运算符求职顺序为自左至右,所以,

34) 设有以下定义和语句 int a[3][2]={1,2,3,4,5,6},*p[3]; p[0]=a[1]; 则

选c,p[0]指向a[1],也就是&a[1][0],二维数组在内存中的存储方式和一维数组一样也是顺序存放的,所以p[0]+1就是a[1][0]的下一个元素

7.设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是( ).A) p=1; B) *q

n是整数,p是整数指针,q是双重指针.A:p=1属于将地址1赋给p,非法.B:*q=2这里*q相当于一个整数指针,问题同上,非法.C:q=p相当于把p的地址赋给q,不能说错,但是不同维数的指针互相赋值

设有如下定义:char *aa[2]={"abcd","ABCD"}; 则以下说法中正确的是( )

答案为D*aa[2]数组指针aa[0]aa[1]为数组名,分别为“abcd”"ABCD"的首地址也就是‘a’和‘A’的地址(详情参考指针那方面知识)A选项应该为“abcd”和“ABCD”的地址B选项是

设有以下定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int(*ptr)[3]

a[1][2]是第二行第三个所以a[1][2]=6你的数组是这样的123456789

B C D选项设有以下变量定义:char str1[]="string",str2[8],*str3,*str4="st

(C)选项正确!str1是常量,指向"string"串的首地址,不能改变,所以(A).错;(B)str2="China"只可以定义时赋值,即charstr2[]="China";(B)相当于给常量赋值

17、设有如下定义: char *aa[2]={“abcd”,“ABCD”}; 则以下说法中正确的是( )。

char*类型的数组指的是每个元素都是char*指针char*指针是指向字符类型的所以aa数组的两个元素各自存放了字符'a'和‘A’的地址A)答案不对aa数组元素是两个char*字符类型的指针B)aa

设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是?

C.if(a>b)c=a;if语句已经结束了a=b;b=c;是俩个单独的表达式c:a=2b=3c=3其他的都没变

设有定义:double x[1O],*p=x;以下能给数组x下标为6的元素读入数据的正确语句是

D不能这样理解.写法是合法的,只是p[6]是下标为6的元素,不是元素指针,要写成&p[6]就对了.所以错误.其他都分析得对.

设有定义语句:int =0,*p=&你,*q;以下选项正确的是?a;p=1 b:p=q c:*p=*q

使用了逗号操作符,实际上等于:intn=0;int*p=&n;int*q;所以,n是整型,p,q是整型指针.a错了,c也错了,*p是解引用操作,得到的是p所指向的内存区域的值.它不能作为一个“左值”(

老师,若已定义intx,y,z;执行语句x=(x=1,y=z=2,y++,z++);后,x为什么为2,

(x=1,y=z=2,y++,z++)逗号表达式按顺序从左到右执行,最后整个表达式返回最右值.所以最后返回z的值2,然后z再自加1.

以下数组定义中错误的是()A int x[][3]={0 };B intx [2][3]={{1,23,4,5,6};

A错intx[][3],它的列下标为0~2,但它的行下标的取值范围没有显式给出.而初始化只是{0},系统无法确定该数组的长度,因此在编译时无法为它分配一定大小的存储空间.

若已定义intx,y,z;执行语句x=(x=1,y=z=2,y++,z++);后,x为什么为2,

结果其实就是x=z++先赋值再自加,结果是2a=(b,c)这种运算,实际上就是a=c当然前面的运算也是要算的就这个题就是相当于x=1;y=z=2;y++;x=z++

设有定义:int a=5 ,b=2;以下值为1的表达式是 A b!=a B!(b==a/2) C a!=b‖a>=b D

AC当返回值为真时,值为相当于为1.A和C都为真.B中a/2是整数相除,在结果为2,和b相等,内部值为1,但外面有个!,所以为假.D中

、设有以下宏定义:#define N 3 #define Y(n) ( (N+1)*n) 则执行语句:z=2 * (N+

宏定义就是把出现的N和Y(n)用后面的表达式替换掉而已所以这里的z=2*(N+Y(5+1));等价于z=2*(3+4*6)=54所以选D

设有说明 intx=0,y=0;则执行if(x++)y=1+x;elsey=2+x;后,变量y的值是?具体算法是?

y=3x++表示“先用后加”if(x++)y=1+x;因为x=0,所以这一步跳过,但是执行完这一步,x变为1elsey=2+x;成立,y=2+x被执行,所以y=3再问:为什么x=0时这一步跳过啊再答: