3.4(一位有效数字)除以3等于几啊,你求出了小数点后面的值有意义吗
好像还有一些别的除数嘛,例如365.2422、29.5306和1.602e-19之类,您知道这些数字的含义么?
落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
我想用数组存储除法运算的商,让结果更精确, 可是结果有错? 程序哪儿错了???
#include "stdio.h"
void main()
{
float a,b;
char c[100];int i;
printf("enter the numbers(a/b):\n");
scanf("%f/%f",&a,&b);
getchar();
if(a>=b)
{
c[0] = (int)(a/b);/*这里数据类型不匹配*/
c[1] = '.';
}
else
{
c[0] = 0;
c[1] = '.';
}
for(i=2;i<=100;i++)
{
a = (a/b - (int)(a/b)) * b;/*应该用另外的变量存储吧*/
c[i] = (int)(a/b); /*这一句没必要吧*/
}
printf("the result is: ");
for(i = 0; i <= 100; i ++)
printf("%d",c[i]);
printf("\n");
}
我想用数组存储除法运算的商,让结果更精确, 可是结果有错? 程序哪儿错了???
#include "stdio.h"
void main()
{
float a,b,d;
char c[100]={'\0'};int i,e;
printf("enter the numbers(a/b):\n");
scanf("%f/%f",&a,&b);
getchar();
if(a>=b)
{
c[0] =(int)(a/b)+48;
c[1] = '.';
}
else
{
c[0] =48;
c[1] = '.';
}
for(i=2;i<=100;i++)
{
d=a/b;
e=(int)a/b;
a = (d-e) * b*10;
c[i] = (int)(a/b)+48;
}
printf("the result is: ");
for(i = 0; i <= 100; i ++)
printf("%c",c[i]);
printf("\n");
}
您这种想法挺好,可是有问题。受到float 精度的影响,在算到一定位上是会出错的,上面的程序帮您改了些毛病,
但这个程序仍是错的,原因就是float的精度影响
#include "stdio.h"
#include "malloc.h"
#include "math.h"
#define MAX 100
int main()
{
long *resource,k;
int result[MAX]={0},num,i,j;
printf("please input the num of tese data:\n");
scanf("%d",&num);
resource=(long *)malloc( sizeof(long) *num );
printf("please input the test data:\n");
for(i=0;i<num;i++)
scanf("%ld",&resource[i]);
for(i=0;i<num;i++)
{
j=0; k=1;
if(resource[i]==1)
{
printf("1\n");
continue;
}
while(resource[i]%10==0)
{
result[j++]=0;
resource[i]/=10;
}
if ( resource[i]==1 )
{
result[j-1]=1;
k=0;
}
while(k!=0&&j<MAX)
{
while( (k*=10)<resource[i] )
result[j++]=0;
result[j++]=k/resource[i];
k %= resource[i];
}
printf("0.");
for(k=0;k<j;k++)
{
printf("%d",result[k]);
result[k]=0;
}
printf("\n");
}
free(resource);
getch();
return 0;
}
这个是版主老大(feng1256)写的,您可以参考参考.
程序是求一个整数的倒数(1/k)