QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 873|回复: 8

c++的两道题目不明白

[复制链接]
发表于 2004-10-11 14:40:11 | 显示全部楼层 |阅读模式
有一道题是这样的.用公式"s/4=1-1/3+1/5-1/7......“求s的近似值,直到最后一项的绝对值不大于10的负8次方。程序如下。
没有通过编译。请问应该怎么样来修改。[code:1]
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int
main ()
{
  double s = 0, x = 1;
  long k = 1;
  int sign = (-1);
  cout << "this program will out put a sum" << endl;
  while (fabs (x) > 1e-8)
    {
      s += x;
      k + 2;
      sign *= (-1);
      x = sign / double (x);
    }
  s *= 4;
  cout << "the sum is" << setiosflags (ios::
                                       fixed) << setprecision (8) << s <<
    endl;
}[/code:1]
还有一道题是这样的。
给定一整数m判断是否为素数,程序如下,但是没有通过编译。[code:1]
#include<iostream>
#include<cmath>
using namespace std;
int
main ()
{
  long m;
  int i;
  cout << "please enter the number of m" << endl;
  cin >> m;
  long double sqrtm = sqrt (m);
  for (i = 2; i <= sqrtm; i++)
    if (m % i == 0)
      break;
  if (i > sqrtm)
    cout << "the number is a prime" << m << endl;
  else
    cout << "the number is not a prime" << m << endl;
}[/code:1]
这两个程序都是照着书上面学着写的,但是不知道为什么不能够通过编译。
可以告诉我正确的应该怎么做吗。
发表于 2004-10-11 16:41:57 | 显示全部楼层
有什么错误信息?贴出来
回复

使用道具 举报

发表于 2004-10-11 16:48:50 | 显示全部楼层
程序错误太多了。即使是书上的错,楼主也太不细心了。而且较懒!
回复

使用道具 举报

发表于 2004-10-11 19:31:24 | 显示全部楼层
long double sqrtm = sqrt (m); 改为long double sqrtm = ::sqrt (m);
回复

使用道具 举报

发表于 2004-10-11 19:32:01 | 显示全部楼层
第一个编译没问题
回复

使用道具 举报

发表于 2004-10-11 20:22:54 | 显示全部楼层
[quote:395ba790b3="mozilla"]第一个编译没问题[/quote]运行有问题,改后结果是4.85840737。
回复

使用道具 举报

 楼主| 发表于 2004-10-13 01:23:14 | 显示全部楼层

谢谢提醒,已经看到第一个程序的错误了,k+2应该是k+=2;
double(x)应该是double(k)
我写这两个程序出来是因为我不知道应该怎么样在c++里面运用头文件.知道形式是#include<名称>
但是不知道应该是程序体里面怎么写,好象跟c里面有很大的出入,所以不明白.第一个程序要用到求绝对值的函数, 第二个要用到求平方根的函数.但是真正用起来的时候不知道怎么写.两个程序我运行了一下午都没有成功.今天总算是看到了错误的所在.明天我运行之后再看一下子结果,再来请教.现在很晚了晚安.
回复

使用道具 举报

 楼主| 发表于 2004-10-14 21:23:41 | 显示全部楼层
终于搞好了.错误还是很多的呢.现在修正了.也知道了用法.正确的代码也好感谢给我帮助的人.第一道程序为了减少运算时间,把运算的控制改了.[code:1]#include<iostream>
#include<cmath>
using namespace std;
int main()
{double s=0,x=1;
int i;
double k=1;
double sign=1;
for(i=1;fabs(x)>0.00001;i++)
    {s=s+x;
    cout<<"x="<<x<<endl;
    sign=sign*(-1);
    k=k+2;
    x=sign/k;}
s=s*4;
cout<<"s="<<s<<endl;
}
[/code:1]
第二个程序
[code:1]#include<iostream>
#include<cmath>
using namespace std;
int main()
{long m;
int i;
cout<<"请输入m的值回车继续"<<endl;
cin>>m;
double sqrtm=::sqrt(m);
for(i=2;i<=sqrtm;i++)
         if(m%i==0)
     break;
if(i>sqrtm)
cout<<"素数为"<<m<<endl;
else
cout<<"素数不为"<<m<<endl;
}
[/code:1]
我的成长感谢各位的大力帮助,多谢多谢.
回复

使用道具 举报

发表于 2004-10-14 21:47:11 | 显示全部楼层
其实都是靠你自己。
希望常来啊,也帮帮其它人   
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-7 07:42 , Processed in 0.051053 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表