int i,a = 16;
i=3;
// for(i=3;IsPrime(i);i++)
while(IsPrime(i)){
printf("%d is a lucky number.\n",i);
i++;
}
分开写成
while(1){
if(IsPrime(i)){...}
}
就没问题
这是怎么回事
但是,我们怎么总是写成while(scanf("%d",&n) != -1)?
其中,IsPrime函数如下
int IsPrime(int n)
{
double k;
int i;
k = sqrt(n);
for(i=2;i<k+1;i++){
if(n%i == 0) return 0;
}
return 1;
}
还有,要怎样才能用bool,
写成1,0,看起来很别扭,还是true/false比较顺
谢谢~~
10 个解决方案
#1
18 #include <stdlib.h>
19 #include <stdio.h>
20
21
22 int test_func(int n)
23 {
24 if (n > 0)
25 return 1;
26 else
27 return 0;
28 }
29 int main(void )
30 {
31 int i = 3;
32 while( test_func(i) ) //测试代码 ,这里是OK的
33 {
34 printf("OK\n");
35 break;
36 }
37 printf("return \n");
38
39 return 0;
40 }
第二个问题:
至于bool类型
你自己可以定义的
#define _false 0
#defien _true 1
#2
谁说的?SDK中消息循环就是一个典型的例子
while(GetMessage(&msg,0,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
#3
c中要用bool型可以宏定义:
至于循环的判断部分用函数来写,完全可以嘛,我用楼主的代码跑了下,没问题,有图有真相:
运行结果:
#define bool int
#define TRUE 1
#define FALSE 0
至于循环的判断部分用函数来写,完全可以嘛,我用楼主的代码跑了下,没问题,有图有真相:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int IsPrime(int n);
int main(void)
{
int i,a = 16;
i=3;
// for(i=3;IsPrime(i);i++)
while(IsPrime(i)){
printf("%d is a lucky number.\n",i);
i++;
}
system("pause");
}
int IsPrime(int n)
{
double k;
int i;
k = sqrt((double)n);
for(i=2;i<k+1;i++){
if(n%i == 0) return 0;
}
return 1;
}
运行结果:
#4
问题在其他地方,在if,while,和for中都可以使用函数调用表达式。
#5
你的需求决定了,你要这么写。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int IsPrime(int n);
int main(void)
{
int i;
//输出2~16间的质数
for(i=2;i < 16;i++)
if(IsPrime(i)){
printf("%d is a lucky number.\n",i);
i++;
}
//else;
}
int IsPrime(int n)
{
double k;
int i;
k = sqrt((double)n);
for(i=2;i<k+1;i++){
if(n%i == 0) return 0;
}
return 1;
}
#6
typedef enum { false=0, true=!false } bool;
#7
大神啊 膜拜
#8
for (A;B;C) D;
//等价于
{
A;
while (1) {
if (!(B)) break;
D;
C;
}
}
#9
ok!
函数写的有点乱,有点写错了。现在搞定了~~
谢谢
#10
最新的C标准好像支持bool型。
#1
18 #include <stdlib.h>
19 #include <stdio.h>
20
21
22 int test_func(int n)
23 {
24 if (n > 0)
25 return 1;
26 else
27 return 0;
28 }
29 int main(void )
30 {
31 int i = 3;
32 while( test_func(i) ) //测试代码 ,这里是OK的
33 {
34 printf("OK\n");
35 break;
36 }
37 printf("return \n");
38
39 return 0;
40 }
第二个问题:
至于bool类型
你自己可以定义的
#define _false 0
#defien _true 1
#2
谁说的?SDK中消息循环就是一个典型的例子
while(GetMessage(&msg,0,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
#3
c中要用bool型可以宏定义:
至于循环的判断部分用函数来写,完全可以嘛,我用楼主的代码跑了下,没问题,有图有真相:
运行结果:
#define bool int
#define TRUE 1
#define FALSE 0
至于循环的判断部分用函数来写,完全可以嘛,我用楼主的代码跑了下,没问题,有图有真相:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int IsPrime(int n);
int main(void)
{
int i,a = 16;
i=3;
// for(i=3;IsPrime(i);i++)
while(IsPrime(i)){
printf("%d is a lucky number.\n",i);
i++;
}
system("pause");
}
int IsPrime(int n)
{
double k;
int i;
k = sqrt((double)n);
for(i=2;i<k+1;i++){
if(n%i == 0) return 0;
}
return 1;
}
运行结果:
#4
问题在其他地方,在if,while,和for中都可以使用函数调用表达式。
#5
你的需求决定了,你要这么写。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int IsPrime(int n);
int main(void)
{
int i;
//输出2~16间的质数
for(i=2;i < 16;i++)
if(IsPrime(i)){
printf("%d is a lucky number.\n",i);
i++;
}
//else;
}
int IsPrime(int n)
{
double k;
int i;
k = sqrt((double)n);
for(i=2;i<k+1;i++){
if(n%i == 0) return 0;
}
return 1;
}
#6
typedef enum { false=0, true=!false } bool;
#7
大神啊 膜拜
#8
for (A;B;C) D;
//等价于
{
A;
while (1) {
if (!(B)) break;
D;
C;
}
}
#9
ok!
函数写的有点乱,有点写错了。现在搞定了~~
谢谢
#10
最新的C标准好像支持bool型。