下面有一些关于C语言问题,希望大伙儿侃侃,最好解释详细,谢谢呢?

2024-11-15 18:27:27
推荐回答(3个)
回答1:

第一题:3

这是一道位运算,a&0377等同于011&011111111的运算,这两个与一下值为011,也就是3

第二题:11
这也是位运算,先把3,10,15化为二进制,依次为:011,1010,1111.a|b&c先运行b&c得到1010,再跟a或运算(一位一位或)得到1011,也就是11.

第三题: D) h/2*(a+B)
h/2等于1,而代数中等于1.5.这是因为h为整型,h/2后也是整形,0.5舍去.

第四题:20 0
以上格式写得让人误会,我重写一下,你就会明白.
main() {int x=10,y=20,t=0;
if(x==y)t=x; //这里没有加{},固IF语句范围只有第一个;为此
x=y;y=t;
printf("%d,%d\n",x,y);
}

第五题:8 4

void f(int y,int*x) X是按地址传,而Y是按值传,当值传到函数里时,*x可以改变X的值,而Y不能返回.保持原来的值...

第六题:
这是C语言的内存动态分配,不是很掌握,没有把握,希望其它好心人帮忙一下补齐.

第七题:efgh
这道我简单说下,语言点太多,要是不明白,发消息给我,我就这题说详细.
return s+strlen(s)/2,返回的是一个指针,s指向首元素a,strlen(s)/2=4,固返回的指针指向第五个元素e.主函数中的 printf打印从第五个元素之后的字串.

第八题:6
这是一道递规调用.主函数传给函数时f()时,a[]=a[3]首元素是1;返回1+f(&a[1],2);f(&a[1],2)在调用函数时a[]=a[1],但此时首素是2而不是1;返回1+2+f(&a[1],1);最后调用函数,a[]=a[2],首元素为3,也只有一个;返回1+2+3,得到6

第九题:double max,&y
这题不需要解释吧....还是简单讲一下,第一个空是函数声明;要与定义的函数相符,第二个空,输入时要加&,为什么呢?我们要把输入的值传给变量对应的地址,固用地址符&

最后一题:14
位运算;12|012化简得到:001100|001010=001110,换算成10进制得到14
其中注意,012是八进制,1对应001,2对应010,一整个001010,因为两个要等长,固补0;

哇,一口气做完,真是够累的...好久没这么做了...

/---------------------------------------------------------/
呵呵,又来了;
我补充一下第六题,我看一下书,明白了.
p=(double *) malloc(3*sizeof(double));

回答2:

我说老兄,你到底学过编程没有?

回答3:

这些还有什么可侃的