当前位置: 代码迷 >> C语言 >> [求助]看看我编的C语言有什么不对的哈。
  详细解决方案

[求助]看看我编的C语言有什么不对的哈。

热度:114   发布时间:2006-06-05 14:14:00.0
[求助]看看我编的C语言有什么不对的哈。

请问一下C语言程序。
我自己编了一个,感觉没什么错误,但是就是运行不起,那位蝈蝈知道下哈。程序的思想是一个数形如题目中的9.5565657,,先计算出有几个数用j表示,,然后将这个数变成小数,,0.95565657(无论这个数是什么,,都将它变成小于1的小数);
然后,将这个数*10,,变成9.5565657,,得到整数部分的9,给函数存入out数组..9.5565657这个数减它的整数部9,得到0.5565657,,,,然后*10,,如上述过程,,直到j(这个数的长度)变成0;
最后结果在out数组中,程序的目的是将把一个有整数和小数部分的一个数(如123.456789)。把每位数(如首位的1)所对应的ASC码的八位二进制位依次放到一个数组中
#include <stdio.h>

int out[128];
int *p;

void put(int *,int );
long sq(int );
void main(void)
{
int i=1,length,j=1;
long temp;
double x=9.5565657,y;
p=&out[0];
temp=(int) x;
y=x;
while(1)
{
y=x*sq(j++);
if(y==(int) y)
break;
}
while(temp!=0)
{
temp=temp/sq(i++);
x=x/sq(--i);}
while(j--)
{
x=x*10;
temp=(int) x;
put(p,temp);
x=x-temp;
}

}


long sq(int i)
{
int j;
long k;
if(i==1) return(10);
for(j=i,k=1;j>0;j--)
k=10*k;
return(k);
}
void put(int *q,int temp)
{
int i=0;
int *pp;
p=q;
int g1[8]={0,0,1,1,0,0,0,0};
int g2[8]={0,0,1,1,0,0,0,1};
int g3[8]={0,0,1,1,0,0,1,0};
int g4[8]={0,0,1,1,0,0,1,1};
int g5[8]={0,0,1,1,0,1,0,0};
int g6[8]={0,0,1,1,0,1,0,1};
int g7[8]={0,0,1,1,0,1,1,0};
int g8[8]={0,0,1,1,0,1,1,1};
int g9[8]={0,0,1,1,1,0,0,0};
int g10[8]={0,0,1,1,1,0,0,1};
if(temp==0)
pp=&g1[0];
else if(temp==1)
pp=&g2[0];
else if(temp==2)
pp=&g3[0];
else if(temp==3)
pp=&g4[0];
else if(temp==4)
pp=&g5[0];
else if(temp==5)
pp=&g6[0];
else if(temp==6)
pp=&g7[0];
else if(temp==7)
pp=&g8[0];
else if(temp==8)
pp=&g9[0];
else if(temp==9)
pp=&g10[0];
while(i<8)
{
*p=*pp;
p++;
pp++;
i++;
}
}
知道的蝈蝈可以站内PM我,或者和我QQ联系,我QQ号是:55564835

搜索更多相关的解决方案: C语言  

----------------解决方案--------------------------------------------------------

//Let me help you:
#include<stdio.h>
int main( )
{
double x;
char s[80];
int i=0,n;
long ix,base=1;

printf("Input a double: ");
scanf("%lf",&x);

if(x<0)//负数处理
{
s[i++]='-';
x=-x;
}
ix=(long)x;//截整
if(x-ix>=1)//滤掉绝对值太大的数
{
printf("Sorry,|x| is too large...\n");
return -1;
}
for(n=1; ;n++)//确认整数部分有几位
{
ix/=10;
if(!ix)break;
base*=10;
}
ix=(long)x;//再次恢复ix
while(n--) //获取整数区的字符
{
s[i++]=ix/base%10+'0';
base/=10;
}
x-=ix;//获得纯小数
if(x)s[i++]='.';//插入小数点
while(x)//获取小数区的字符串
{
x*=10;
ix=(long)x;
s[i++]=ix+'0';
x-=ix;
}
s[i]='\0';//添加串尾标志
puts(s);
return 0;
}


----------------解决方案--------------------------------------------------------

程序之精不在于器,而在于心也


----------------解决方案--------------------------------------------------------
不太会呀! 等一等别人做一下! 我也是才学! 不好意思!

----------------解决方案--------------------------------------------------------
  相关解决方案