以下C语言选择题选什么,并作简要分析。

1、以下能对一维数组 a 进行正确初始化的语句是_________ 。 A、int a[10]={0;0;0;0;0}; B、int a[10]={0} C、int a[ ] = {0} D、int a[10]={10*1} 2、若定义 int a[ ] ={1, 2, 3, 4, 5 , 6, 7 , 8 , 9 , 10}, *p=a ; 则值为 3 的表达式是 ( )。 A、p+=2,*(p++) B、p+=2,*++p C、p+=3,*p++ D、++*p 2、若有定义和语句 int **pp, *p, a=10, b=20; pp=&p; p=&a; p=&b; printf("%d,%d\n",*p,**pp); 则输出结果是( )。 A、10,20 B、10,10 C、20,10 D、20,20 3、设 int *p , I ;以下正确合理的语句是( )。 A、*p=10; B、i=p; C、i=*p; D、i=2*p+1; 4、设 char s[10] ; int I ; 以下引用数组 s 中元素正确的表达式是( )。 A、S(i+2); B、*(s+i) C、*(&s+i) D、*((s++)+i)

第1个回答  2019-06-22
1、以下能对一维数组
a
进行正确初始化的语句是_________

A、int
a[10]={0;0;0;0;0};
B、int
a[10]={0}
C、int
a[
]
=
{0}
D、int
a[10]={10*1}
答:
题打错了吧
应该是
不能正确初始化的是
是A
,BCD都可以初始化的
2、若定义
int
a[
]
={1,
2,
3,
4,
5
,
6,
7
,
8
,
9
,
10},
*p=a
;
则值为
3
的表达式是
(
)。
A、p+=2,*(p++)
B、p+=2,*++p
C、p+=3,*p++
D、++*p

:
A
,p+=2
指向的是3的位置
*(p++)的意思是
将p向后一个位置
指向的是4的位置
但是
返回值
返回的
依旧是三的位置
然后
用解引用操作符
返回值
应该就是3了
B
错了
是因为
没有括号
应为
++的优先级
和*是相同的
所以
是从右往左
运算的
先算++
后算*
所以
++p就把指针
指向了4的位置
在取值
得的就是4了
C和D
错的很明显
没什么好说的了
有问题再问我
2、若有定义和语句
int
**pp,
*p,
a=10,
b=20;
pp=&p;
p=&a;
p=&b;
printf("%d,%d\n",*p,**pp);
则输出结果是(
)。
A、10,20
B、10,10
C、20,10
D、20,20

D
**pp是指向指针的指针
它里面存储的是指针p的地址
p最后存储的是b的地址
所以
*p的值是20
*pp存储的是p的地址
所以**pp
解引用出来的
应该是
p地址的值
所以
还是应该20
3、设
int
*p

I
;以下正确合理的语句是(
)。
A、*p=10;
B、i=p;
C、i=*p;
D、i=2*p+1;

这个
编译正确的
应该是B
A
指针
不能把一个数据赋值给指针
因为指针
存储的是地址
数据
是没有地址的
所以
编译没有错误
但是
运行的时候
会出现内存错误导致程序的
崩溃
B
p是一个地址
地址
赋给int
是可以的
但是翻译出来的是一个随机数
编译可行
没错误
C
程序崩溃
因为
p没有被初始化
所以
p的地址
就是
CCCCCCCC
这时候编译器检查出错误了
程序
就停止运行了
D
2*p+1
*的优先级大于+的优先级
所以
程序
先解引用
之后
就导致程序错误了
因为
*有二义性
所以
其实哪个都不对
但是只有B能编译成功
4、设
char
s[10]
;
int
I
;
以下引用数组
s
中元素正确的表达式是(
)。
A、S(i+2);
B、*(s+i)
C、*(&s+i)
D、*((s++)+i)

int
i没有初始化
所以
你不知道
s
越没越界
正确的
表达式
应该是
B
他的含义
就是
s[i]
s
在这里面等于是这个字符串数组的
首地址
就是
s=&s[0]
A
明显错误
C
不能取地址的地址
地址
是唯一的
你取不出来
地址的
地址
编译器
会报错的
D
S++错了
s++的意思是取s的地址
让地址
让地址递增1在赋值给s
s首先就是一个地址
s是常量
他是不能被改变的
所以
出错误了

以下C语言选择题选什么,并作简要分析。
C、int a[ ] = {0} D、int a[10]={10*1} 答: 题打错了吧 应该是 不能正确初始化的是 是A ,BCD都可以初始化的 2、若定义 int a[ ] ={1, 2, 3, 4, 5 , 6, 7 , 8 , 9 , 10}, *p=a ;则值为 3 的表达式是 ( )。A、p+=2,*(p++)B、p+=2,*++p C、p...

以下C语言选择题选什么,并作简要分析。
1、以下能对一维数组 a 进行正确初始化的语句是___。A、int a[10]={0;0;0;0;0};B、int a[10]={0} C、int a[]= {0} D、int a[10]={10*1} 答:题打错了吧 应该是 不能正确初始化的是 是A ,BCD都可以初始化的 2、若定义 int a[]={1,2,3,4,5 ,6,7 ,8 ,9 ,1...

以下是一道c语言选择题,请问如何解答?写出分析步骤。
选择 (A、C)"%d%c%d%c"中的%d表示整数,%c表示一个字符 输入数字10或20后,必须紧跟着字符A或B 否则如果数字后面跟了空格的话,空格就会被读入到c1或c2中 而一旦字符读入正确后,再读入数字时,之前的空格是可以被忽略的 这个题,答案有两个!,题目中的选项应该哪个给错了吧 补充回答:说明...

一道C语言选择题,求答案及解析,好评
答案为:C 分析:1、switch(表达式)中的表达式不能为实型,所以A错误。同时B的用法错误,如果B改为 switch((int)x)那么B也是正确的;2、case 常量表达式: 中的 常量表达式不能是实型,所以A中的1.0和2.0都是错误的,同时该表达式也不能是变量或含有变量的表达式,所以D错误,因为D中有 case...

C语言,选什么,求过程
答案选B,即输出3,2,-1。分析:这题考查后缀自减和前缀自加运算符,以及逻辑与运算符 &&。后缀 z--,是先使用 z 的值,再 -1。前缀 ++x,是先 +1,再使用 x 的值。逻辑与运算符 &&,只有其两边的条件都为真时,总的结果才为真。当 && 左边的条件为假时,就不会计算其右边的表达式(...

C语言,选啥呀?
答案选B,即输出“876”。分析:这题不难,按照循环一步步来即可。像这种循环的题,注意这几点:n 的起始值,n 的判断,n 的更新。运算过程:n = 9,判断 n > 6,即 9 > 6 为真,执行 n--,此时 n = 8,输出 n,即输出 8。n = 8,判断 n > 6,即 8 > 6 为真,执行 n--...

关于c语言的选择题,高手帮忙给我分析一下呀
选C!字符串后面的初值表里只有4个字符,所以D后面全都是字符串结束标志'\\0',而指针p指向了字符串的首地址,也就是'A',而*(p+4)指向a[4],也就是D后面的一个元素,是字符串结束标志'\\0'

C语言,选啥,求过程。
答案选A,即输出“011122”。分析:switch 一般常与 break 结合使用,不过本题并没有,主要是考查对 switch 的了解程度。当所有 case 都不成立时,执行 default 的语句(如果有就执行)。当某一个 case 成立时,就会执行该 case 的语句,在没有遇到 break 之前,其后的语句都会被执行(包括所有 case...

请问这道C语言的题选择什么呢?
!a意为非a,即a=0,!a=1,即为真值;语句if(!a) x--;等价于if(0) x--;整个程序段等价于 if(1) x--; \/\/x=34 else if(0);\/\/第一个if结束 if(0) x=3; \/\/0,假值 else x=4; \/\/x=4 选择A

c语言这题选啥?原因?A选项什么东西?
int a[];int *p;p=a;如果没有这些(或与其相当)的条件,本题没法解。下面按以上三个分析:该题选D——错误引用。再来看A选项,a[p-a],因为有p=a,p的值是数组a的首地址,而a本身就是数组a的首地址,所以p-a=0,a[p-a]=a[0]是第一个元素的值,是正确引用。

相似回答
大家正在搜