一
int m=2;
int fun(int x,int y)
{ int m=6; return(x*y-m); }
main()
{ int a=7,b=5;
printf("%d\n",fun(a,b)/m;}
结果:14
解释一下:这是一个函数的调用问题,将实参a=7,b=5通过函数fun()分别传递给了形参x与y,这样在定义的函数fun()中x=7,y=5,同时你在函数前面又定义了一个全局变量m,其值是2,计算后得到了29,通过return返回给了主调函数main(),这样fun(a,b)的值是29,29/2=14.5.但是因为a与b都是int类型变量,所以结果也是一个整数,14
二
main()
{ char a[10]="123456789",*p;
int i=3; p=a+i;
printf("%s\n",p+2);}
结果:6789
解释一下:这是一个有关指针与一维数组的问题.i=3,p=a+i,这样通过给指针p赋值,使p的初值指向了数组a[10]的a[3]的地址,也就是指向了数组里的"4",在printf()语句里p+2使p这个指针指向了数组a[10]的a[5]的地址,这样就把"6789"输出来了!
三
main()
{ int num=0;
while(num<=4)
{num++; printf("%d",++num);}
}
结果:246
四
fun3(int x)
{ static int a=3;
a+=x; return(a);}
main()
{ int k=2,m=1,n;
n=fun3(k); n+=fun3(m);
printf("%d\n",n);}
结果:11
解释一下:先讲解一下static这个关键字吧,它表示的是静态变量,该怎么理解呢??它会把每次计算的结果保留下来,留作下次调用的时候好使用!第一次调用函数fun3()得到n=5,同时在函数fun3()里面a的值也是5,并且会被保留下来留着下次调用的时候使用,第二次调用fun3()得到n=11.
五
main()
{char a[3][5]={"what","are","you"};
char (*p)[5];
int i;
p=a;
for(i=1;i<3;i++)
printf("%s",p+i);}
结果:areyou
解释一下:(*P)[5];这是一个行指针,表示的是每行有5个元素,通过p=a使p成为了指向了二维数组的第一行的指针,通过for循环将are与you输出!