关于return语句
下面是一个判断素数的函数:intisprime(x){for(inti=2;i<x/2;i++)if(x%i==0)return0;//第一个return语句return...
下面是一个判断素数的函数:
int isprime(x)
{
for(int i=2;i<x/2;i++)
if(x%i==0)
return 0; //第一个return语句
return 1;
}
我想问下,比如要判断10是不是素数,程序是这样执行的,先用10除以2,得出余数是0,if语句为真,则返回值0.这样这个for循环是不是就结束了?还是返回0后,继续执行10%3=1,然后返回1?如果是后者这样继续执行,程序就是错误的.请问是不是执行10%2==0,然后返回0,程序就执行结束了,后面的for循环不再执行,直接返回0,判断10不是素数?
希望能回答得详细些 展开
int isprime(x)
{
for(int i=2;i<x/2;i++)
if(x%i==0)
return 0; //第一个return语句
return 1;
}
我想问下,比如要判断10是不是素数,程序是这样执行的,先用10除以2,得出余数是0,if语句为真,则返回值0.这样这个for循环是不是就结束了?还是返回0后,继续执行10%3=1,然后返回1?如果是后者这样继续执行,程序就是错误的.请问是不是执行10%2==0,然后返回0,程序就执行结束了,后面的for循环不再执行,直接返回0,判断10不是素数?
希望能回答得详细些 展开
5个回答
展开全部
楼主这个题目有一定的认识缺陷,可能是没有把题目的原弄的清楚,有那么点含糊,所以导致理解透彻。我给你分析下!
首先你使用return(a>b?a:b),也是为了的到一个数来提供给你的主函数,
所以可以这样分解,
z=a>b?a:b;
return z;
即是把z的值返回到主函数中。那么这样就可以合并其起来为 return a>b?a:b.也就表明return后面不仅可以十个值,也可以是个表达式,所以这样合并是合法的。
但是,你在a>b?return a:return b;中在return 后使用a和b 便面看是合法的,但仔细研究 表达式1?表达式2:表达式3这种类型的条件表达式你就知道,它里面的三个参数都必须为表达式。再看看你的式子,表达式1对应你的a>b,显然是个表达式,但你后面的表达式2,和表达式3对应的分别为return a和return b,这不是个表达式,而是一个函数,return函数,所以肯定是错误的。
所以楼主在分析这类题目是一定要看里面,而且还要看外面,这样才会做到万无一失。
首先你使用return(a>b?a:b),也是为了的到一个数来提供给你的主函数,
所以可以这样分解,
z=a>b?a:b;
return z;
即是把z的值返回到主函数中。那么这样就可以合并其起来为 return a>b?a:b.也就表明return后面不仅可以十个值,也可以是个表达式,所以这样合并是合法的。
但是,你在a>b?return a:return b;中在return 后使用a和b 便面看是合法的,但仔细研究 表达式1?表达式2:表达式3这种类型的条件表达式你就知道,它里面的三个参数都必须为表达式。再看看你的式子,表达式1对应你的a>b,显然是个表达式,但你后面的表达式2,和表达式3对应的分别为return a和return b,这不是个表达式,而是一个函数,return函数,所以肯定是错误的。
所以楼主在分析这类题目是一定要看里面,而且还要看外面,这样才会做到万无一失。
展开全部
一个函数可以有多个return语句但只会也只能执行其中的一个
执行return就是回到函数的调用点的下一条语句向下执行
用10除以2,得出余数是0,if语句为真,返回值为0
例如调用点如下
void main()
{
.........
f = isprime(10)
........
}
函数就把0作为返回值带回送入f
再继续执行main函数中下面的语句
执行return就是回到函数的调用点的下一条语句向下执行
用10除以2,得出余数是0,if语句为真,返回值为0
例如调用点如下
void main()
{
.........
f = isprime(10)
........
}
函数就把0作为返回值带回送入f
再继续执行main函数中下面的语句
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先用10除以2,得出余数是0,说明10不是素数,就跳出循环,返回0,假如是7,就一直循环到最后,也不会有if(x%i==0) 这种情况,就执行return1,说明是素数,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
return 是结束函数 并返回
所以判断10不是素数,就返回了
不再执行for循环
所以判断10不是素数,就返回了
不再执行for循环
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询