当前位置: 代码迷 >> C语言 >> 紧急求救!
  详细解决方案

紧急求救!

热度:189   发布时间:2005-01-14 16:08:00.0
紧急求救!

#include <stdio.h> int func(int a,int b);

void main() { int k=4,m=1,p;

p=func(k,m); printf("%d,",p); p=func("%d\n",p); }

int func(int a,int b) { static int m=0,i=2;

i+=m+1; m=i+a+b;

return(m); }

A. 8,17 B. 8,16 C. 8,20 D. 8,8   答案:A #include <stdio.h> void main() { int i,s;

i=0;s=0; while(i<10); { s+=(i++); printf("%d\n",s); } printf("i=%d\n",i); }

A. i值为9,s值为45 B. i值为10,s值为45 C. i值为10,s值为36 D. 程序陷入了死循环

答案: D 这两题觉得有问题,请大家指教!


----------------解决方案--------------------------------------------------------
p=func("%d\n",p);   // 这个地方是不是写错啦,
函数int func(int a,int b)的m位于静态存储区,是一个静态局部变量
也就是说p=func(k,m);语句后,func函数中m的值为8,第二次执行这个函数时mde值还是8.

位于静态存储区的变量,经程序编译后,就已经分配了存储空间,在程序整个运行期间都存在,
而未经static修饰的变量,是在程序运行期间分配的,如果一个函数结束,那么这个变量将消失.

第二题,while语句后有个分号,循环条件不变,陷入死循环
----------------解决方案--------------------------------------------------------
while语句后有个分号,循环条件不变,陷入死循环 ,呵呵,怪浪
----------------解决方案--------------------------------------------------------
  相关解决方案