c/c++ 二进制与十进制换算还二进制 为什么在5,等会出错。

二进制数转换成十进制数_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
二进制数转换成十进制数
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩18页未读,继续阅读
你可能喜欢c/c++ 十进制换还二进制 为什么在5,等会出错。_百度知道
c/c++ 十进制换还二进制 为什么在5,等会出错。
#include &stdio.h&#include &stdlib.h&#include &iostream&#include &cstring&int main(){
int _jzzh(int x,int y);
int a=2,b;
cout&&&1&;
_jzzh(a,b);
system(&pause&);
return 0;}int _jzzh(int x,int y){
char s[18];
a=y/x;
if(a==0)return y%x;
sprintf(s,&%d&,y%x);
int len=strlen(s);
for(int j=len-1;j&=0;--j)
cout&&s[j];
return _jzzh(x,a); }
提问者采纳
#include&&iostream&using&namespace&int&main()&{ char&*_jzzh(unsigned&num,unsigned&base,char&*str); unsigned&n; char&s[18]; while(cin&&&&n)
cout&&&&n&&&&&&:&&&&&&_jzzh(n,2,s)&&&& system(&pause&); return&0;}char&*_jzzh(unsigned&num,unsigned&base,char&*str)&{ int&i,t,len&=&0; strcpy(str,&0&); while(num)&{
str[len++]&=&num&%&base&+&'0';
num&/=& } if(len)&str[len]&=&0; for(i&=&0;&i&&&len/2;&++i)&{
t&=&str[i];
str[i]&=&str[len&-&1&-&i];
str[len&-&1&-&i]&=&t; } return&&}
提问者评价
其他类似问题
为您推荐:
二进制的相关知识
其他1条回答
我知道了,不用了,这个下面是倒着输出的(子函数)
你的main中cout&&&1&是什么意思
二进制中从左数第一个不是1吗
输入0应该输出0才对
调好了吗,我改的程序,C++,VS2010环境// 十进制转二进制,输入字母结束//#include &stdafx.h&#include &iostream&int *d2b(int y);int ss[18]={0}; int m=0;int main(){
while(cin&&b) {
cout&&&=(&;
for(int j=m;j&=0;j--)
cout&&p[j];
cout&&&)B&&& }
return 0;}int* d2b(int y)//返回指针的函数{ if(y==0) {
ss[m]=0; } else if(y==1) {
ss[m]=1; } else {
ss[m]=y%2;
d2b(y/2); } }
哎,浪费大家时间了
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁十进制转化为二进制的函数(自己写的)谁帮我看看
Description of your first forum.
27 篇帖子 & 分页:1 / 2 &
由 cmdline & 星期三, 日 09:27
unit Unit1;interfaceuses& Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,& Dialogs, StdCtype& TForm1 = class(TForm)& & Button1: TB& & Edit1: TE& & Edit2: TE& & procedure Button1Click(Sender: TObject);& private& & { Private declarations }& public& & { Public declarations }&var& Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);type&arr =var&I,Temp :I&J,NCount :I&S :&arr1 :begin&S:=Edit1.T&I:=StrToInt(S);//&Temp:=I;//临时变量&NCount:=0;&ShowMessage(IntToHex(I,4));//转换为16进制&while I&&0 do & begin& &I:=I div 2;& &NCount:=NCount+1;&&SetLength(arr1,NCount-1);//建立动态数组&I:=T&for J:=0 to NCount-1 do //开始转换二进制& begin& &if (I mod 2)=1 then& & arr1[NCount-J-1]:='1'& &else& arr1[NCount-J-1]:='0';& & I:=I div 2;&&s:='';&for Temp:=0 to NCount-1 do //输出二进制& S:=S+arr1[Temp];&Edit1.Text:=S;end.上面这个程序完全通过,但是如果用整形数组,好像程序运行不了。type&arr =//改了这个原程序在下面unit Unit1;interfaceuses& Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,& Dialogs, StdCtype& TForm1 = class(TForm)& & Button1: TB& & Edit1: TE& & Edit2: TE& & procedure Button1Click(Sender: TObject);& private& & { Private declarations }& public& & { Public declarations }&var& Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);type&arr =var&I,Temp :I&J,NCount :I&S :&arr1 :begin&S:=Edit1.T&I:=StrToInt(S);&Temp:=I;&NCount:=0;&ShowMessage(IntToHex(I,4));&while I&&0 do & begin& &I:=I div 2;& &NCount:=NCount+1;&&SetLength(arr1,NCount-1);&I:=T&for J:=0 to NCount-1 do & begin& &if (I mod 2)=1 then& & arr1[NCount-J-1]:=1& &else& & arr1[NCount-J-1]:=0;& & I:=I div 2;&&s:='';&for Temp:=0 to NCount-1 do & S:=S+IntToStr(arr1[Temp]);&Edit1.Text:=S;end.我还想问一下,有不有直接把二进制转换成十进制的函数和十进制转换成二进制的函数?c语言和c++语言中的也行我还想问一下,中的记录类型想当于c语言和c++语言中的什麽类型?delphi的类又相当于他们中的什麽?本人同时在学三门语言有很多地方不明白。恳请指教。上面的程序应该和可以简化,谁可以在给出个优化算法
由 Supermay & 星期三, 日 09:36
delphi自带有十进制与二进制转换函数,也有10-&16
由 DIGUA & 星期三, 日 09:49
inttobin() 10-&2 &需 uses IdGlobalinttohex() 10-&16delphi中的记录类型想当于c语言和c++语言中的什麽类型? structdelphi的类又相当于他们中的什麽?C是面向过程的,而类是面向对象语言所特有的,C中无此概念,C++同样是类
由 白河愁 & 星期三, 日 09:49
一个不会指针的受害者
由 cmdline & 星期三, 日 11:16
来自:白河愁, 时间: 9:49:48, ID:3893183一个不会指针的受害者 &不知兄台此话何意?指针我也会啊用数组和用指针到底有什麽区别?指针和数组运算速度不一样吗?另外,二进制转换到十进制的函数有吗?上面只有十到二进制的转换
由 cmdline & 星期三, 日 11:20
unit Unit1;interfaceuses& Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,& Dialogs, StdCtype& TForm1 = class(TForm)& & Button1: TB& & Edit1: TE& & Edit2: TE& & procedure Button1Click(Sender: TObject);& private& & { Private declarations }& public& & { Public declarations }&var& Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);type&arr =//为什麽程序这里使用整形数组会出错??????var&I,Temp :I&J,NCount :I&S :&arr1 :begin&S:=Edit1.T&I:=StrToInt(S);&Temp:=I;&NCount:=0;&ShowMessage(IntToHex(I,4));&while I&&0 do & begin& &I:=I div 2;& &NCount:=NCount+1;&&SetLength(arr1,NCount-1);&I:=T&for J:=0 to NCount-1 do & begin& &if (I mod 2)=1 then& & arr1[NCount-J-1]:=1& &else& & arr1[NCount-J-1]:=0;& & I:=I div 2;&&s:='';&for Temp:=0 to NCount-1 do & S:=S+IntToStr(arr1[Temp]);&Edit1.Text:=S;为什麽程序里使用整形数组会出错,而改用字符数组没有问题,这个好像还没有人回答
由 DIGUA & 星期三, 日 11:27
type&arr =//为什麽程序这里使用整形数组会出错??????需要指定数组大小的type& arr = array [1..9] of I
由 cmdline & 星期三, 日 11:30
SetLength(arr1,NCount-1);//建立动态数组,并指定大小我在这里是指定了大小的程序里有
由 白河愁 & 星期三, 日 11:36
所谓进制,只是用不同的方法去读取指针指向的数据的一种表示方式。所以其实什么进制根本没区别,你怎么读,就是什么进制,或者什么格式。
由 cmdline & 星期三, 日 11:44
十六进制的话还可以四个一读.十进制的话该怎麽读?用几个二进制位来表示?高手指导一下,数据存储原理我还是知道一些的
由 HJ.Yao & 星期三, 日 13:04
不报措呀,靠
由 DIGUA & 星期三, 日 13:14
搞不懂要干吗了,靠
由 HJ.Yao & 星期三, 日 13:17
while I&&0 do& begin& &I:=I div 2;& &NCount:=NCount+1;&&SetLength(arr1,NCount-1);//你如果输入1的话,这里的NCount-1就等于0了。所以就会报错了,问题在这里,你看下是哪里不对了
由 白河愁 & 星期三, 日 13:39
比如在内存中一个A字符,按字符都就是 A,按10进读就是65,按16进读就是0x41,按2进制就是,但在内存中都只占一个字节。那又谈何转换?
由 新世纪 & 星期三, 日 14:40
楼主的程序代码中有个简单的序号错误, 其实也是概念的混淆.1. 楼主注意到了动态数组的下标是从0开始的, 最后一个单元下标是(总数-1);2. 但是楼主没有注意到setLength(arr1, NCount-1)的错误, 这其实分配少了一个单元, 是错误的; 例如 setLength(arr1, 4-1), 实际上只分配了0,1,2 共3个单元; 正确的写法应该是 setLength(arr1, NCount);3. 用 array of char 之所以没有出错(其实本身也是错误的)是因为内存分配的问题:& &array of integer 一个单元要分配4个字节, 而 array of char 一个单元就一个字节;& &因为内存分配最小的单位是4个字节(有的系统是8个字节或者16个字节), 所以你用char的时候, 你申请了3个char, 实际上给你了4个char的空间, 所以不会出错;& &但用integer的时候, 你申请了3个integer, 给您了3个integer的空间, 但你最后要用4个integer, 所以出错了; &// 我已经说得很详细了, 希望能明白!
27 篇帖子 & 分页:1 / 2 &

我要回帖

更多关于 十进制换成二进制 的文章

 

随机推荐