分类：电脑/网络-程序设计-C/C++
问题：若有说明：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))是什么意思？30void fun(char *c28则一下的赋值语句是: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))是什么意思？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); 是什么意思？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);}输出结果是1，2，3，8，7，6，5，4，9，10，为什么
回答：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