关于循环语句的问题!

xllfe 2002-04-11 01:35:29
例题:
#include <iostream.h>
#include <math.h>
#define MIN 51
#define MAX 100
void main()
{
int i,j,k,n(0);
for(i=MIN;i<=MAX;i+=2)
{
k=(int)sqrt(double(i));
for(j=2;j<=k;j++)
if(i%j==0)
break;
if(i>=k+1)
{
if(n%6==0)
cout<<endl;
n++;
cout<<" "<<i;
}
}
cout<<endl;
}
问题:
1.k=(int)sqrt(double(i));//对这段语句来讲是不是说先把i强制定义为double型的变量,再把sqrt强行定义为int型变量后赋值给k,意思就是说k的值就为i的值,既然这样中间何必用个sqrt?
2.代码中的break是用于上面的if语句,而不是用于上面的for语句
3.cout<<" "<<i;//这里面的" "表示输出什么东西呢?最后的结果好像都是输出的i的值呀?
...全文
22 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
prototype 2002-04-11
  • 打赏
  • 举报
回复
但我看的书没有说sqrt是表示开根号的意思呀?
does your book tell you something other than 开根号的意思?

单纯的if语句里面也用了break.
i guess you have missed the context. '单纯的if语句里面用break' is meaningless and a compile time error. 'break' can only be used in a loop or 'switch'.
xllfe 2002-04-11
  • 打赏
  • 举报
回复
先谢谢上面的各位大大!但关于我的第一个问题:
就是关于sqrt,意思是说k的值为i开根号后的值?
但我看的书没有说sqrt是表示开根号的意思呀?
我没看c,直接看得c++
另外break我知道用在if里面没用,但我书上一道单纯的if语句里面也用了break!
所以我在这里理解break的时候就想到了书上讲if语句的时候
else总是属于距它最近的if,所以我才会认为break属于离它最近的if而不是上面的for
liao2001 2002-04-11
  • 打赏
  • 举报
回复
:)
fangrk 2002-04-11
  • 打赏
  • 举报
回复
1.把i先强制转换为double类型,开根号后把结果强制转换为int
2.break用在循环中,用于退出本层次的循环
3.cout<<" "<<i;先输出一个空格,再显示i的结果
redleaves 2002-04-11
  • 打赏
  • 举报
回复
补充一下,break所跳出的是
for(j=2;j<=k;j++)
这个循环。
redleaves 2002-04-11
  • 打赏
  • 举报
回复
1. double(i)和(int)sqrt(..)都是强制类型转换。它并不会改变其操作对象本身的类型,它只是把操作对象的值转换成你所要的类型再传给其它的对象。
2.break语句只对循环有作用。所以那个break是用来跳出for循环的。
3.cout<<" "<<i;表示在输出i的值之前先输出一个空格(或其它什么)。
prototype 2002-04-11
  • 打赏
  • 举报
回复
1. 'sqrt' is a standard function, returning the root of a double type number. example sqrt( 2 ) will be 1.414, ...

2. 'break' will make the execution jump out of the current loop.

3. 'cout<<" "' will output a ' ' (a blank space).

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧