C语言程序改错题~~~~~~~~大哥姐姐们来看下厄

[复制链接]
查看11 | 回复2 | 2009-8-16 08:31:18 | 显示全部楼层 |阅读模式
上面那个其实加一句就和下面那个等价了fun(intn){
intk,yes=0;
for(k=2; k<=n/2; k++)
if(n%k==0)
{
yes=0;
break;//只要找到一个可以整除,就跳出循环。
}
elseyes=1;
returnyes;
}
回复

使用道具 举报

千问 | 2009-8-16 08:31:18 | 显示全部楼层
比如,如果n=1的话,它是素数吧。那么,由于第一种只是定义了yes,而没有为其赋值,又由于它的算法:if(n%k==0) yes=0;elseyes=1;是错的,因为,如果n=1,不可能执行else 语句,因为n/2=2不可能大于k=2,所以不执行for语句,不执行for语句,也就不能执行if...else语句。
回复

使用道具 举报

千问 | 2009-8-16 08:31:18 | 显示全部楼层
原来的程序中if和else都应该在循环结构中即应该是for(k=2;k<=n/2;k++) { if(n%k==0) yes=0;
else
yes=1;
}return yes;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行