C语言,可以分析一下四个选项吗?

作者&投稿:斐逸 (若有异议请与网页底部的电邮联系)
c语言 四个选项都解释一下吧~

答案选A
A 语句a=&x 只适用于a是指针变量的情况,不能用于a是数组的情况,所以是非法的(虽然a也相当于一个指针,但a不能被修改,所以不是指针变量)

B 表达式a+1 等同于&a[1],是合法的

C 三个表达式a[1], *(a+1), *&a[1]都是同一个意思,因为a是数组,所以a也相当于一个指针,所以三种写法都是一个意思

D 表达式*&a[1]是合法的,虽然没加括号,但根据运算符优先级中[]级别最高、*与&同级且为右结合性,所以运算的时候等同于*(&(a[1]))的运算顺序

第一题:
c=getchar()表示计算机获得一个输入的字符并把它赋给int型的c(在1~256之间int和char可以相互赋值).首先接收字符2,把2赋给c,while(c=getchar())!='
')表示只要输入的字符不是enter键就执行while里面的循环体。 而
switch(c-‘2’)
{
case 0:
case 1: putchar(c+4);
case 2: putchar(c+4);break;
case 3: putchar(c+3);
default: putchar(c+2);break;
}
的执行过程是这样的:首先计算‘c'-2的值,只要该值与下面的那个case 后的表达式相同就执行其后的语句,比如说读入的第一个字符2,2-2=0,此时执行case 0 后面的语句,而case 0与case 1后面的语句是同一个语句,所以执行 putchar(c+4);输出6,由于
case 1: putchar(c+4);后面没有break;语句,所以继续执行其后语句,直到遇到break语句或执行完所有语句为止,为此第二个也输出6,因为case 2后有break语句,所以结束第一次循环,之后输入的473的原理也是这样的。
第二题:
for循环的一般形式是for(表达式1;表达式2;表达式3){循环体}表达式1相当于赋初值,其作用只有一次,而表达式2是判断条件,只要表达式2不为0就执行循环体,执行完循环体后在执行表达式3,这是一个完整的循环,接着又判断表达式2的值是否为零,不为零,又执行循环体,......
因为此题中i=2不等于0,所以表达式2 的值为0;因此一次也不执行。
第三题:
参阅第二题解析。
第四题:
*p=&x[1][1];表示把元素5的地址赋给了指针p;
for(i=0;i<4;i+=2)printf("%d ",p[i]);
第一次,i=0;输出p[1][1],第二次i=2,此时使p向后移动两个元素,因此输出3

只有第1个是错误的,char a[]; a++是不对的。a并不是指针,所以a=a+1,这样用是不正确的。
假如允许,那么,a这个变量的首地址,就变成了a+1,a+0这个无地址,系统不知道已经舍弃不用了,但还将其标记为分配状态,从而产生内存泄露。
其余3个都是正常使用。

这个A是有问题的,a[]是一个数组,没法进行自加操作
望您采纳

c语言 四个选项都解释一下吧
答:答案选A A 语句a=&x 只适用于a是指针变量的情况,不能用于a是数组的情况,所以是非法的(虽然a也相当于一个指针,但a不能被修改,所以不是指针变量)B 表达式a+1 等同于&a[1],是合法的 C 三个表达式a[1], *(a+1), *&a[1]都是同一个意思,因为a是数组,所以a也相当于一个指...

C语言,可以分析一下四个选项吗?
答:只有第1个是错误的,char a[]; a++是不对的。a并不是指针,所以a=a+1,这样用是不正确的。假如允许,那么,a这个变量的首地址,就变成了a+1,a+0这个无地址,系统不知道已经舍弃不用了,但还将其标记为分配状态,从而产生内存泄露。其余3个都是正常使用。

c语言,选择题第十二题,四个选项帮我分析下,谢谢
答:C项,a最多只能保存长度为为10的字符串,st字符串长度12,错误;D项,a[1]地址开始,可以保存长度为9的字符,st+2之后的字符串(“w are you ”)长度为10,错误。

C语言 求各个式子的值 能具体解释一下ABCD四个选项吗?
答:C.先算括号里的,--y=2,式子变为x=8-2-2,故x=4 D.乘号和除号同一优先级,从左到右依次运算。y*4.8/2=7.2,由于x是整型, 故x=7 好像答案暂时有点不对……不过感觉C和D都不等于6的说。

求C语言大神,帮忙解释一下这道题的四个选项,刚入门C语言
答:A选项2的二进制是010,5的二进制是101,所以2与5的结果是0,即条件为假,所以不能形成死循环 Bwhile中是逗号表达式,取最后一个表达式3的值为真,所以是死循环 CD中'\0'是字符的ascii值为0的转义字符,所以为假,不构成死循环条件

c语言题,四个选项都怎么算?
答:A选项:y%z为4,y-z为-1,不等式成立,表达式为真,所以表达式的值为1 比如B,++y为5,大于x所以为真,值为1 比如C,x为3,y+z=9所以x!=y+z等于y-x,表达式为真,值为1 比如D,x不大于y,然后y再自减,(注意y--与--y的区别)所以表达式为假,值为0 所以正确答案为D ...

c语言,麻烦解释下四个各选项。。
答:说一下c最后的%o只读取了double的前4个字节,属于一个垃圾值,但是仍然能够正常读取 D的话入栈一个double 类型(8个字节) 读出一个float 类型(4个字节),将double的4个字节按照float的方式来解读,发生未知错误 补充:float -> double可行,读取4个字节,编译器扩充为8个字节 ...

这道题C语言的四个选项都说了什么
答:rb+为读写打开一个二进制文件,wb+为读写建立一个二进制文件,ab+为读写打开一个二进制文件,ab追加数据

c语言下面四个选项中,均是合法整型常量的选项是___ A、160 -0xffff 01...
答:选择A 解释如下:B中的01a是八进制数值,出现a是不允许的 C中0668,同样是八进制数值出现8是不允许的 D中的2e5是十进制数值,出现e是不允许的 顺便说一下,八进制、十进制、十六进制的判断,八进制以0开始,如05等,其中的数字只能为0~7;十进制是默认的,如123等,其中的数字只能为0~9;十六进制是...

c语言第七题四个选项怎么回事
答:&通过变量取地址,*通过地址取值。&*和*&是可以抵消的,*p=&*p,也是*p=p,在语法上就是错的,更不要说完成ab赋值了