关于c、vfp、c#的问题~!~!~!

biser 2004-05-14 08:43:28
昨天一个朋友那来了一个vfp题:求100--200的素数。
我顺手把c语言的书那了出来,找到c语言的版本,并把它翻译成了
vfp版的程序,结果运行后没反映,经过分析后发现在输出打印时的if语句
有点不同,虽然问题是解决了,但是不明白为什么,另外我有试了
一下c#版的,结果和vfp版的if语句一样,不知道为什么?请求大家帮忙!!!


// 以下是c语言版的:
#include "math.h"
#include "stdio.h"

main()
{
int m,k,i,n=0;
for(m=101;m<=200;m=m+2)
{
if(n%10==0) printf("\n");
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>=k+1) //就是这里!!!
{
printf("%d ",m);
n++;
}
}
}
// 以下是vfp语言版的:
for m=101 to 200 step 2
k=sqrt(m)
for i=2 to k
if m%i==0
exit
endif
endfor
if i>k &&就是这里!!!!!
? m
endif
endfor
// 以下是c#语言版的:
using System;

namespace ConsoleApplication1
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
double m,k,i,n=0;
for(m=101;m<=200;m=m+2)
{
if(n%10==0) Console.WriteLine();
k=Math.Sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>k) //就是这里!!!
{
Console.Write(m+" ");
n++;
}
}
Console.Read();
}
}
}

...全文
33 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cngdzhang 2004-05-14
  • 打赏
  • 举报
回复
c语言版的是
if(i>=k+1)

vfp和C#版的都是
if(i>k)

这两者是等价的呀!

i>=k+1>k
那么
i>k+1就是i>k了(整数)
saoyu 2004-05-14
  • 打赏
  • 举报
回复
不好意思,上面笔误写错了,是k=(int)Math.sqrt(m);
cancer001 2004-05-14
  • 打赏
  • 举报
回复
不懂VFP
saoyu 2004-05-14
  • 打赏
  • 举报
回复
如果要照C翻译过来的话必须做强类型转换,我没用过C#和VFP,我用java做了个测试,做转化后没问题

import java.math.*;

public class Su
{
public static void main(String[] args)
{
int m,k,i,n=0;
for(m=101;m<=200;m=m+2)
{
if(n%10==0) System.out.println();
k=(int)Math.sqrt((int)m); //这里有两个类型转换
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>=k+1)
{
System.out.println(m+" ");
n++;
}
}
}
}

69,371

社区成员

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

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