- 若有说明: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