C语言,哪位大佬能帮我解释一下这题目是怎么算出来的

作者&投稿:洪音 (若有异议请与网页底部的电邮联系)
C语言,哪位大佬可以帮解析一下这些题目的的答案怎么选出来的?谢谢各位大佬了。~

由上至下(1)~(5):
(1)
A、B、C都是同一个错误,试图让常指针s1[0]或s2[0]指向别处,错。
D——将常指s2[0]针指向的目标拷贝到常指针s1[0]指向的目标空间,正确。
(2)
A——试图在数组初始化以外的地方“整体”向数组赋值,错。
B——把b[0][0]元素的值赋给a[0][0]元素,正确。
C——a[0]、b[0]都是常指针,不能再赋值,连a[0]=a[0];这样都不行,别说a[0]=b[0];了。
D——错误同本题A选项。
(3)
A——a是int (*)[3]型指针,没有那种赋值语法;即使有也犯了“整体”赋值错误。
B——把b数组中的一个元素值赋给a数组的a[0][0]元素,正确。
C——a和b都是常指针,不能再赋值。
D——和本题A项错误一样。
(4)
A——声明和初始化时只有最靠近数组名a的那个[]可以空着,其余[]都不能空着。
B——在声明时可以同时这么初始化,声明后在这里就是“整体”赋值了,错。
C——错误和本题B一样。
D——给a数组的a[0][0]元素赋值100,正确。
(5)
A——a[0]、b[1]都是常指针,不能再赋值。所以错误。
B——把b的b[1][0]元素值赋给a的a[0][1]元素,正确。
C——把b的b[1][2]元素值赋给a的a[2][0]元素,正确。
D——把b的b[1][1]元素值赋给a的a[0][1]元素,正确。

012是个八进制数,按照%d(十进制)输出,就是10;
%2d,宽度至少为2,而102、10的宽度都大于等于2,正常输出。
所以输出102,10

13)NULL是定义的常量,其值为0,选D
14)0X02就是2,<<2是左移2位,相当于乘以2^2,所以输出值8,选C
15)f2('k')的值为2(因为case'k':k++;的后面没有break;所以继续执行下一行的k++排印再break),f2('y')的值为1(执行default:k++;),故选B
16)f3(10)的值为-1(因为j不断自减,当j==-1时就退出循环,然后返回-1)所以选A

null就是0嘛
0x02左移两位,左移一位相当于乘以2,所以0x02乘以4,就是8嘛

‘k’分支没有break;会继续执行到‘x’分支,所以是2嘛,‘y’进入的是defualt,所以是1嘛
当j变成0的时候,循环就结束了,退出循环的时候还会执行一下j--,就是-1嘛

有没有c语言大佬解释一下?
答:根源来自于默认类型。如果不在编译环境特殊指明的话,浮点数默认double型,而即便是同一个浮点数,其single和double的值是不同的,比较必然FALSE。程序中加上强制类型就可以解除(当然也可以修改编译器默认类型设置),如下图所示:

C语言,哪位大佬能帮我解释一下这题目是怎么算出来的
答:13)NULL是定义的常量,其值为0,选D 14)0X02就是2,<<2是左移2位,相当于乘以2^2,所以输出值8,选C 15)f2('k')的值为2(因为case'k':k++;的后面没有break;所以继续执行下一行的k++排印再break),f2('y')的值为1(执行default:k++;),故选B 16)f3(10)的值为-1(因为j...

求c语言大佬给一下超详细的解释
答:static int a[3]={1,2,3} 函数fun中,数组a[3]定义为静态变量。主函数调用fun(0),函数fun中形参n接收赋值0,即n=0 for(k=0;k<3;k++) x[]+=x[]-n x[0]=x[0]+x[0]-n=1+1-0=2 x[1]=x[1]+x[1]-n=2+2-0=4 x[3]=x[3]+x[3]-n=3+3-0=6 此时数组变为...

C语言,可以的话讲一下每一步呗。求大佬帮忙
答:2、圆环参数需要输入,因此要定义一个输入函数,负责输入参数,验证参数,并存储到对应的结构变量。3、解析功能需求,实现体积和面积分别需要计算圆的面积、周长和柱侧面积。所以程序应包含所有实现功能的函数,分别为:计算圆面积,计算圆周长,计算圆柱侧面积,计算圆柱体积。(这里部分函数很简单,你可能想...

c语言题目求大佬详解
答:这是一个对二维数组进行处理的程序,a是一个3行4列的二维数组。i为第一层循环值为0,1,2 j为嵌套循环值为0,1,2,3 循环内对数组a的值进行判断,如果是小于0,就继续下一个,如果是等于0,就跳出循环,如果是大于0的话,就执行s+=a[i][j]因此当i为0时,1,2,-3,-4 根据上面的...

求教C语言 大佬分析一下这个程序
答:int f(int x);main(){ int n=1,m;/ 调用函数f三次,将最后一次调用的返回值赋给m,第2,第3次调用分别用前次调用的返回值作为实参再调用f。第一次,f(1),返回1*2,等于2,第二次,f(2),返回2*2,等于4,第三次,f(4),返回4*2,等于8,最后,m=8。/ m=f(f(f(n)));...

C语言例题 说反话,求大佬帮我解释一下?
答:if ( p == str )//这里是什么意思?——如果p的值与str的值一样(指向了同一个目标),则执行if的“体”。if (*p == ' ' && *(p+1) != ' ')//这里是什么意思?——如果p指向的目标是空格,而p+1指向的目标(即空格后面的一个字符)不是空格,则执行这个if的“体”。printf("%s ...

C语言题目求大佬详解
答:在第一次调用swap()函数时,传入的实参是&x和&y,即变量x和y的地址。在swap()函数内部,通过交换指针指向的值,将x和y的值进行了交换。因此,第一次调用swap()函数结束后,实参x的值仍然为3。(2) 程序的输出结果为 "4, 3, 5"。在main()函数中,首先调用swap(&x, &y),实参x和y的值...

求大佬解释下这个C语言编程。
答:information的属性包括id、name等,具体含义需参考相关文档或information的定义注释。结构体:在C语言中吗,结构体是一种数据结构,是C语言中聚合数据类型的一类。结构体可以被声明为变量、指针、数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素成为结构体的成员,且这些成员可以为...

刚接触C语言,这些表达式怎么解释啊,哪位大佬帮帮我
答:1 ++a值为3,3-2=1 1 a=a/(a=a*(a=2))36 a=3使a值为3,a+=3后a值为6,a*a=36 6.5 1/(float)a=0.5,0.5+6=6.5 0 (a>b)>c,2>6值为0(假),0>5值为0(假)1 (--a)||(++b&&c++),--a值为1,||运算符左侧为非零值,整个表达式值为1(真),右侧不进行运算 ...