若有说明:intn=2,*p=&n,*q=p;28则一下非法的赋
28 则一下的赋值语句是: p=q; *p=*q; n=*q p=n 答案是p=n为什么 *p=&n, *q=p是什么意思? 29 float fun(int x, int y){return(x+y);} main() {int a=2,b=5,c=8; printf("%3.0f\n", fun((int)fun(a+c,b),a-c));} 程序运行后输出的结果是????? float fun是什么意思? %3.0f\n"是什么意思? fun((int)fun(a+c,b),a-c))是什么意
28 p=q; *p=*q; n=*q p=n 可以看出p和q是普通变量,n是指针变量,所以p=n是错误的。 *p=&n 指针*p取变量n的地址 *q=p 指针*q用变量p的数据作为地址 29 flt fun(int x, int y){return(x+y);} main() {int a=2,b=5,c=8; printf("%3.0f\n", fun((int)fun(a+c,b),a-c));} 运行结果:空格空格9 float fun是什么意思?定义返回值为单精度的函数 %3.0f\n"是什么意思? 输出结果最小宽度为3、小数位为0的单精度数 fun((int)fun(a+c,b),a-c))是什么意思? 先求a+c+b的结果,再取整,然后结果+(a-c) 30 void fun(char *c, int d ){*c=*c+1; d=d+1; printf("%c,%c,",c,d);} main() {char a='A',b='a'; fun(&b,a); printf("%c,%c\n",a,b);} 输出结果是 b,B,A,b void fun是什么意思? 无返回值的函数 char *c是什么意思? 定义字符指针 *c=*c+1是什么意思? 指针指向数据加一 fun(&b,a); 是什么意思? 运行函数,参数是变量b的地址和变量a 运行fun(&b,a)后,*c指向b的地址,d='A',那么*c=*c+1后,指针*c指向的变量b加一,由于在C语言中字符也是整型数字,字符'a'加一就变成'b',同理d=d+1,d的值由'A'变成'b',所以输出b,B 运行到printf("%c,%c\n",a,b);时a='A',b='b',所以输出A,b 32 int f(int n) {if (n==1) return 1; else return f(n-1)+1;} main() {int i,j=0; for(i=1; i<3;i++) j+=f(i); printf("%d\n",j);} i,j的初始值为0 for循环为2次 第一次: i=1 j=j+f(i)=0+1=1 i++ 第二次: i=2 j=j+f(i)=1+2=3 i++ 第三次:i=3 i<3条件不成立,退出循环 打印输出j的值3