C语言问题,求详解

作者&投稿:轩鲁 (若有异议请与网页底部的电邮联系)
C语言问题,求详解!!!有分!~

这个是一个递归算法,fun函数不断的调用自身,最开始k=5,于是调用fun(4),但是fun(5)还没执行完,fun(4)里继续调用fun(3),直到fun(0)时,直接输出0,然后函数返回上层,即fun(1),而fun(1)已经执行完if语句,直接输出1,同理,函数不断返回上层,最上层的函数是fun(5),所以直到输出5后,整段函数执行完毕

因为prt函数的参数是&c(c的地址), &c就是prt函数的局部变量,它的值在prt函数里改变,main函数中不会改变。c的值是20是因为++的特性,语句结束之后再加1.
把*(z++),换成z++,直接查看z的地址变化,就很容易理解了。把代码发给你,你自己实验下。
#include void prt(int *x ,int *y, int *z){printf("调用prt:
");printf("%d,%d,c的地址:%d
",++*x,++*y,z++);//z++:第一次z不变printf("%d,%d,c的地址:%d
",++*x,++*y,z++);//z++:第2次z+1}int main(){int a=10, b=40, c=20;prt(&a,&b,&c);prt(&a,&b,&c);return 0;}

1、A,a & 3 == 3,3的二进制为0000 0000 0000 0000 0000 0000 0000 0011,这样就好比忽略a的高30位的值,只取其低2位。如果最低两个位 为二进制的 11,那么该表达式的值就等于 二进制的11(十进制的3),这两个位只要有任何一个位不为1那么该表达式就不可能成立
2、D,因为不能对浮点数直接进行判等的比较,浮点数只是一个近似的值,要比较只能用比较大小的办法来比较,而不能用 == 和 != 来判断,所以for(float x=0,s=0; x!=60; x=x+0.3) s=s+x;有可能会出现死循环,结果x当然就远大于60

对啊,选A和D
3的二进制数除了最后两位都是1之外其它是全是0
而&字符运算是把按位且运算
每一位对着来看,哪一位上这两个数(二进制数)不都是1,结果这位数上就是0
比如21&3
21是10101
3是11
21 10101
3 00011
&-----------------
00001
不是3,所是它最后两位不是都是1
而3只有最后两位是1,所以前面的一概是0
x!=60,不能这样写,要写成x-60<0.000001才行,float 是有精度的

第一题A,因为3的二进制是11,1与上1才是1,所以判断末两位是二进制11的只能是与上3后等于3

第二题个人认为x==60

0 & 1 = 0
1 & 1 = 1

BTW,楼上的,C++里面不能直接写2进制数字的,11转换为10进制就是3.

选A和D
解释的都挺详细了,我就不说了呵呵


c语言问题求详解不要只有答案
第1题 b a选项,例:void f(){ int i;...} int j;int main(){ return 0;} 很明显 全局变量j的作用域仅限于main函数 局部变量i作用域为f函数,但main函数中未使用j,实际上j的作用域为无。c选项 函数的形参都是局部变量 d选项 auto变量只有调用的时候才赋值,调用结束就释放,所以...

C语言题目求大佬详解
a = b;b = temp; return a;}int main() { int x = 3, y = 4, z = 5;swap(swap(&x, &y), &z); printf("%d, %d, %d\\n", x, y, z); return 0;} 根据修正后的代码,回答问题如下:(1) 第1次调用swap()函数后,实参x的值为 3。在第一次调用swap()函数...

C语言问题,本人菜鸟,跪求大神详解!!
a-b+++1的意思是a-b+1;b++;所以结果是10-3+1=8;b=b+1=4。d=(c++,c+10,100-c);是逗号表达式,括号内从左至右算,但只把最后一个表达式100-c的值赋给d。那就是c=c+1=11,然后把最后100-c=89赋给d,所以最后a=10,b=10,c=11,d=89。c=(d=a+b),(b+d);也是逗号表...

汇编语言 实验8 分析一个奇怪的程序 求详解
两个问题都对

C语言问题 i=5 (++i)+(++i)+(++i)的值是多少?求详解瓦
等式里面有++i,所有的i都自增1,有i++,等式里面i值不变,运算完后i变为i+1。我主要讲一下第三个,应该是18,有三个++i,所以每个i都是3+1+1+1=6,所以结果是18.

c语言结构体问题,27,26求详解,程序如下
1,rec[10]代表的是建立1个结构体数组,数组的元素是结构体;2、*pr=rec,这语句是pr是结构体指针,指向数组第一个元素,也就是rec[0];所以,A选项就错在,它没有明确是数组的哪个结构体,应该跟D选项一样;BC都是利用的指针,没毛病。27题:student 只是结构体名称,而,stu1,*p是结构体变量...

C语言程序问题,求大神详解
按运算符优先级, a+=a-= (a=4)*(a=3); 等价于 a+= (a-=( (a=4)*(a=3) ) );可以分解为以下步骤:(1)声明与初始化 int a=5;(2)第一个小括号 a=4; a变4。(3)第二个小括号 a=3; a变3。(4) 计算表达式 ((a=4)*(a=3)), 3*3=9;(5) a-= ((a...

c语言问题 int i,x[3][4]; i=*(*(x+1)+1)是什么意思,请详细解释下。谢...
c语言问题 int i,x[3][4]; i=*(*(x+1)+1)是什么意思,请详细解释下。谢 x是int *[3][4]型别的变数起始地址 x+1是第1维的增加,地址增加的尺寸为int[4],x+1相当于&x[1][0]即第2行起始地址 *(x+1)取得x阵列第2行起始地址*(x+1)+1后面的加1是访问第2行第2个元素...

c语言,求详解答案a.b怎么得出的?
结果是:a=3 b=2 首先必须清楚,a++ 和++a的区别。a++ 是运算结束后,在给a自增,而++a 是运算之前先要进行++a,再去计算。所以,这个程序的结果是,先 b=a+a;之后接着计算 a++,a++。

C语言问题求详解
&&是逻辑与运算符,对于a&&b,当a和b都是非0时,a&&b返回1,否则返回0,即&&只返回1(代表真)或0(代表假),且&&是短路运算符,当a为0时,不再执行表达式b。而&是按位与运算符,对于a&b,每次都要执行表达式a与表达式b,且a&b的结果是由按位运算计算后确定的,不只有0和1。对于对应...

临川区13667622291: C语言题.求详解 -
柳谢新复: ++a 先a自增1,然后赋值;a++ 先赋值, 然后自增1 b=(++a)+(a++)+(++a)此时a先自增1为9即a=9, =9+(a++)+(++a)下步a++ 先赋值为9算 然后a自增1,就是a=9先运算在变成a=10 =9+9+(++a)此时a=10 做下步时 ++a时 a先自增1 为11,且此时a=11 =9+9+11 =29

临川区13667622291: C语言问题,求详解 以下选项中,合法的一组C语言数值常量是__________.(标准答案:D) ( -
柳谢新复:[选项] A. ) 0x8A 10,000 3.e5 ( B. ) .177 4e1.5 0abc ( C. ) 028 .5e-3 -0xf ( D. ) 12. 0Xa23 4.5e0

临川区13667622291: c语言问题 求详细解答谢谢 -
柳谢新复: 当调用函数时,u=27,v=18 while(v)--->v=18,为真,执行循环 {w=U%v; --->w=27%18=9;u=v;----->此时,u和v的值并没有改变,所以,u=v=18;v=w;--->v=w=9;} 然后再进行循环,依此类推~

临川区13667622291: C语言程序问题,求详解 -
柳谢新复: #include<stdio.h> main() {int x=1,y=2,z=3;if(x>y) { if(y<z)printf("%d",++z);elseprintf("%d",++y); } printf("%d\n",x++); }if(y<z)else 是一个语句 如果if(x>y)为真 才执行括号里面.所以没有输出z和y的值 只执行了一个输出函数 printf("%d\n",x++); 这个函数输出的是x++ 的值 但x++ 的意思是 先把x输出 在+1 所以输出的结果是1

临川区13667622291: 一道C语言求详解 a=1 b=2 c=3 d=4 a>b?a:c -
柳谢新复:[答案] 3

临川区13667622291: C语言问题,求高手解答.:C语言问题,小白勿入描述:FOR语句循环,我们假定有三个循环.当程序运行到一定程度时怎样让语句从第三个循环返回时直... -
柳谢新复:[答案] 如果只是单纯的实现问题的功能. goto语句就可以了.(虽然goto有点不利于程序可读.但是这里用goto是最直接的方法.) 下面是伪代码: firstFor: for(参数)//第一个for循环 { for(参数)//第2个for循环 { for(参数)第3个fo...

临川区13667622291: C语言问题?求详解每步答案.? -
柳谢新复: 第一句是++i,表示再输出操作前先自加1,即输出为9,此时i=9 第二句是--i,表示在输出操作前先自减1,即输出为8,此时i=8 第三句是i++,表示在输出后对i自加1,即输出为8,此时i=9 第四句是i--,表示在输出后对i自减1,即输出为9,此时i=8 第五句是-i++,表示先算i++,再算负号运算,由于i++需要先让i参与运算再自加,所以输出为-8,此时i=9 第六句是-i--,表示先算i--,再算负号运算,由于i--需要先让i参与运算再自减,所以输出为-9,此时i=8

临川区13667622291: c语言编程问题求详解 -
柳谢新复: #include <stdio.h> int sum(int n) { int i, s = 0; for (i = 1; i <= n; i++) s += i; return s; } int main() { printf("1 + 2 + ... + 300 = %d\n", sum(300)); return 0; } #include <stdio.h> int main() { int i, j; for (i = 1; i <= 9; i++) { for (j = 1; j <= i; j++) printf("%d*%d=%-...

临川区13667622291: 求解答一下C语言编程题,万分感谢 -
柳谢新复: 1)原代码x没声明,算法有错误.#include "stdio.h" int main(void){ int i,n; float s=0.0,x,t1=0.0,t2=1.0; printf("x,n=?"); scanf("%f,%d",&x,&n); for(i=1;i<=n;i++){ t1=t1+x; t2=t2/i; s=s+t1*t2; } printf("s=%f\n",s); return 0; }2)原代码书写不规范...

临川区13667622291: c语言 疑题 求详解
柳谢新复: 28,这个问题其实是这样的,编译的时候,先看到的是a,3个a就是24,然后看++,总共有4对++ ++ ++ ++所以就连加4,就是二十吧!类似的情况也可这样分析,呵呵,这都是经验,以前老碰到这样的情况.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网