若有说明: int n=2, *p=&n, *q=p;
28
p=q;
*p=*q;
n=*q
p=n
可以看出p和q是普通变量,n是指针变量,所以p=n是错误的。
*p=&n 指针*p取变量n的地址
*q=p 指针*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));}
运行结果:空格空格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。
[展开]
我补充一下2楼学长回答的,其他基本上都没有错,除了第一题。在第一题中,p和q不是普通的变量,它们是指针变量。n才是普通变量。
p=q;
*p=*q;
n=*q
p=n
上面的四个等式从C语言严密的写法上看肯定是错的,连类型都没有!!!
从一般思维上分析,为什么最后一个是错误的。
原因也很简单。因为一个是指针变量,一个是普通变量,怎么可以互相赋值。第一个和第二个式子都是因为它们的类型相同,所以可以互相赋值,第三个是因为*q可以表示一个和n同类型的值,这时*q表示q指向的那个存储空间的值。
C语言不难,我们共同学习。
。
...你要一点儿都不会只能靠背答案了。没办法。
洪恩在线讲了这方面的知识。