求教!一道C语言题目。
题目如下:#include<stdio.h>main(){intk=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);pri...
题目如下:
#include <stdio.h>
main()
{int k=4,m=1,p;
p=func(k,m);
printf("%d,",p);
p=func(k,m);
printf("%d\n",p);
}
func(a,b)
int a,b;
{static int m=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
为什么第二次运行fun函数时,m的值是1而不是8,第一次运行完fun函数时,m的值不是等于8吗?
.高手们快来求救啊~~~ 展开
#include <stdio.h>
main()
{int k=4,m=1,p;
p=func(k,m);
printf("%d,",p);
p=func(k,m);
printf("%d\n",p);
}
func(a,b)
int a,b;
{static int m=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
为什么第二次运行fun函数时,m的值是1而不是8,第一次运行完fun函数时,m的值不是等于8吗?
.高手们快来求救啊~~~ 展开
4个回答
展开全部
逻辑错误。比如输入25——
第一遍循环结果是top=0,bottom=6,mid=3;
第二遍循环结果是top=0,bottom=2(要找的数就在这个位置),mid=1;
第三遍循环时就没有一个分支是满足条件的,进入了死循环……
一宗逻辑错误的代码再考察它的输出结果是无意义的,考察也是很困难的。
第一遍循环结果是top=0,bottom=6,mid=3;
第二遍循环结果是top=0,bottom=2(要找的数就在这个位置),mid=1;
第三遍循环时就没有一个分支是满足条件的,进入了死循环……
一宗逻辑错误的代码再考察它的输出结果是无意义的,考察也是很困难的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数调用是不能改变实参的值得如果想要,可以将m定义为 static int m;
或者定义一个指针用来传递参数。
或者定义一个指针用来传递参数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
m是形式参数,第一次调用fun的时候,并不能改变m的数据
虽然你在func 中将m定义为static,但这仅保证了在func函数内部m的数据仅被初始化一次
但这里定义的m和main()中定义的m是单独的两个变量
你去看看变量的作用域的介绍和函数参数的介绍就知道了
虽然你在func 中将m定义为static,但这仅保证了在func函数内部m的数据仅被初始化一次
但这里定义的m和main()中定义的m是单独的两个变量
你去看看变量的作用域的介绍和函数参数的介绍就知道了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询