当前位置: 代码迷 >> C语言 >> 一道进制转化的题,提交显示RUNTIME ERROE,多谢
  详细解决方案

一道进制转化的题,提交显示RUNTIME ERROE,多谢

热度:2740   发布时间:2013-02-26 00:00:00.0
一道进制转化的题,提交显示RUNTIME ERROE,谢谢!
本帖最后由 leizh007 于 2013-02-03 12:17:01 编辑
题目描述:
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
输入:
多组数据,每行为一个长度不超过30位的十进制非负整数。
(注意是10进制数字的个数可能有30个,而非30bits的整数)
输出:
每行输出对应的二进制数。
样例输入:
0
1
3
8
样例输出:
0
1
11
1000
下面是我的代码:
#include<stdio.h>
#include<string.h>
int main()
{
char s[40];
int a[40],t[200],i,len,k,x,top,b[40];
while(scanf("%s",s)!=EOF)
{
top=0;
k=0;
getchar();
len=(int)strlen(s);
i=0;
while(i<len)
{
a[len-1-i]=s[i]-'0';
i++;
}//将s中数赋值到a中,并且逆置,高位在数组a末尾
while(a[len-1]==0)
len--;
if(len==0)
printf("0\n");
else
{
while(len!=0)
{
k=0;
for(i=len-1;i>=0;i--)
{
x=k*10+a[i];
b[i]=x/2;
k=x%2;
}//将a中d数除以2,除数放在b中
t[top++]=a[0]%2;//余数放在t中
for(i=0;i<len;i++)
a[i]=b[i];
while(a[len-1]==0)
len--;
}
for(i=top-1;i>=0;i--)
printf("%d",t[i]);
printf("\n");
}
}
}





------解决方案--------------------------------------------------------
我运行了一下可以运行啊,怎么会运行时错误呢,你把文件保存成.cpp试试~
  相关解决方案