以下C语言选择题选什么,并作简要分析。
1、以下能对一维数组a进行正确初始化的语句是_________。A、inta[10]={0;0;0;0;0};B、inta[10]={0}C、inta[]={0}D、in...
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) 展开
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) 展开
6个回答
展开全部
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是常量 他是不能被改变的 所以 出错误了
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是常量 他是不能被改变的 所以 出错误了
展开全部
b数组初始化里面项目用“,”隔开,指定长度后,只定义了一部分,其他默认为0
d指针和二级指针,二级指针指向指针,指针变哪它随着变
c里面p没有指定地址,不可以赋值,但可以把变量i=*p去指针指向地址值,是一个不确定的结果
b要明白s就是一个指针,这样就明白了
d指针和二级指针,二级指针指向指针,指针变哪它随着变
c里面p没有指定地址,不可以赋值,但可以把变量i=*p去指针指向地址值,是一个不确定的结果
b要明白s就是一个指针,这样就明白了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-05-04
展开全部
选择 (A、C)
"%d%c%d%c"中的%d表示整数,%c表示一个字符
输入数字10或20后,必须紧跟着字符A或B
否则如果数字后面跟了空格的话,空格就会被读入到c1或c2中
而一旦字符读入正确后,再读入数字时,之前的空格是可以被忽略的
这个题,答案有两个!,题目中的选项应该哪个给错了吧
补充回答:
说明题目本身就出多了啊!
那句话的意思是:
接收输入的语句是scnaf("%d",&a);时,当你输入" <CR> 12<CR>"
数字12还是能被接收的,12之前的空格或者回车或者tab键,都会被忽略的。
另外,站长团上有产品团购,便宜有保证
"%d%c%d%c"中的%d表示整数,%c表示一个字符
输入数字10或20后,必须紧跟着字符A或B
否则如果数字后面跟了空格的话,空格就会被读入到c1或c2中
而一旦字符读入正确后,再读入数字时,之前的空格是可以被忽略的
这个题,答案有两个!,题目中的选项应该哪个给错了吧
补充回答:
说明题目本身就出多了啊!
那句话的意思是:
接收输入的语句是scnaf("%d",&a);时,当你输入" <CR> 12<CR>"
数字12还是能被接收的,12之前的空格或者回车或者tab键,都会被忽略的。
另外,站长团上有产品团购,便宜有保证
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、选项都有问题,A是语句,但是花括号中数值间应该用逗号隔开,所以A错误,BCD都不是语句;在仔细看一下问题;
2、显而易见,D
3、都有问题;
4、B
2、显而易见,D
3、都有问题;
4、B
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
A A D B 最后一题 I没有初始化 所以结果不确定 如果有初始化就选 B
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.c
2.a
2.d
3.a
4.a
2.a
2.d
3.a
4.a
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询