超急(仅限未来12小时)!!!C++的题目!!!
题目1:编程计算PAI=4-4/3+4/5-4/7+4/9.........,并回答程序要计算多少项才 能得到3.14,3.141,3.1415,3.14159。
请问以下程序哪里有错?
#include <stdio.h>
#include <math.h>
double p, d1, d2, s, ep;
long c; int k;
void main()
{
for (k=1, ep=100.0; k<=4; k++, ep*=10.0)
{
p=3.1415926;
d1=4.0; d2=1.0; c=0; s=0;
do
{ if (c%2==0)
s+=d1/d2;
else s-=d1/d2;
c++; d2+=2.0;
}
while ((int)(s*ep)-(int)(p*ep)!=0||fabs(s-p)>=0.5/ep);
printf("p=%f, s=%f, c=%ld\n", p, s, c);
scanf("%*c);
}
}
题目2:回文整数是指正读和反读相同的整数,编程,输入一个整数,判断它是不 是回文整数。
请问以下程序哪里有错?
#include <stdio.h>
void main ()
{
int x,s,a;
printf("请输入整数x.\n");
scanf("%d",&x);
a=x
while (x)
{
s=s*10+x%10; x/=10;
}
if (a==s)
printf("此整数是回文数.\n");
else
printf("此整数不是回文数.\n");
}
题目3:编写从指定文件输入整数,统计文件中有多少整数,并指出最大和最小数
我不会编。编了一点点就编不下去了,请高手指点。谢谢。
#include <stdio.h>
FILE *fp;
int main ()
{
char frame[40];
printf("输入文件名! \n");
scanf("%s%*c",fname);
if ((fp=fopen(fname,"r"))==NULL)
{
printf("不能打开文件%s.\n",fname);
return 0;
}
参考答案:我刚看到,以下是我把你的改了一下,也不知道对你对,你参考一下吧!
一.
#include <stdio.h>
#include <math.h>
double p, d1, d2, s, ep;
long c; int k;
int a;
void main()
{
for (k=1, ep=100.0; k<=4; k++, ep*=10.0)
{
p=3.1415926;
d1=4.0; d2=1.0; c=0; s=0.0;
do
{ if (c%2==0)
s+=d1/d2;
else s-=d1/d2;
c++; d2+=2.0;
}
while ((int)(s*ep)-(int)(p*ep)!=0||fabs(s-p)>=0.5/ep);
a=(int)(s*ep);
printf("p=%f, s=%f, c=%ld\n", p, (float)a/ep, c);
scanf("%*c");
}
}
二.
#include <stdio.h>
void main ()
{
int x,s=0,a;
printf("请输入整数x.\n");
scanf("%d",&x);
a=x;
while (x)
{
s=s*10+x%10; x/=10;
}
if (a==s)
printf("此整数是回文数.\n");
else
printf("此整数不是回文数.\n");
}
三.
#include <stdio.h>
FILE *fp;
int main ()
{
char ch,fname[40];
int max=0,min=0,i=0,n=0,s=0;
printf("输入文件名! \n");
scanf("%s%*c",fname);
if ((fp=fopen(fname,"r"))==NULL)
{
printf("不能打开文件%s.\n",fname);
return 0;
}
else
{
do
{
if(ch!='\0')
{
ch=fgetc(fp);
do{
s=s*10+ch;
ch=fgetc(fp);
}while(ch!=' ');
if(s>max)max=s;
if(s<min)min=s;
n++;
i++;
}
else break;
}while(1);
}
printf("一共是%c个整数,最大为%d,最小为%d",n,max,min);
return 0;
}