C编程 实现输入一个正整数,输出其对应的二进制数。

作者&投稿:闵缸 (若有异议请与网页底部的电邮联系)
C语言编写程序,从键盘输入一个二进制正整数,输出其对应的十进制数~

问题大着呢,你只返回了一个数而已,应该返回一个数组 #include void main() { void fun(int m,int *j,int c[]); int m; int i; int c[100]={0};//用来装二进制数 int count = 0;//用来统计有效位数 printf("输入一个十进制整数:
"); scanf("%d",&m); fun(m,&count,c); for(i = 0; i 0;i++) { n=m%2; m=m/2; a[i]=n; *j=*j+1; } for(i=*j-1;i>=0;i--) { c[k++]=a[i]; } }

  #include
  #include
  int count1InNum(int num)
  {
  int result=0;
  while(num!=0)
  {
  num &=(num-1);
  result++;
  }
  return result;
  }
  //此方法如果num为负数,比如-7,则求的1的个数实际是7的二进制形式中1的个数
  int count(int num)
  {
  int result=0;
  while(num!=0)
  { if(num%2!=0) result++; num /= 2; }
  return result;
  }
  int main()
  {
  int num;
  scanf("%d",&num);
  while(num!=0)
  { char s[33]; itoa(num, s, 2);
  printf("The number of 1 in %d (%s) is %d.
",num,s,count1InNum(num));
  printf("The number of 1 in %d (%s) is %d.
",num,s,count(num));
  scanf("%d",&num); }
  getchar();
  return 0;
  }

用递归

#include "stdio.h"

int output(int num);

void main()
{
int num;

printf("输入正整数:"); //当超过一定位数时,会溢出
scanf("%d",&num);

if(num<=0)
{
printf("输入整数!");
}

else
{
output(num);
}
}

int output(int num)
{
int temp;
if(num!=0)
{
temp=num%2;
num=num/2;

output(num);

printf("%d",temp);
}

}

1。//实用点
#include <stdio.h>
typedef unsigned char byte;
void ShowBit(byte x, int n)
{
if (--n) ShowBit(x>>1, n);
printf("%d", x%2);
}
int main()
{
byte x = 0x6A;
ShowBit(x, 8);
return 0;
}
2。//容易点
#include <stdio.h>
int main(void) {
struct bits {
unsigned char b8 :1,
b7 :1,
b6 :1,
b5 :1,
b4 :1,
b3 :1,
b2 :1,
b1 :1;
};
union uchar {
struct bits chbits;
unsigned char ch;
} mychar;

printf("Enter a character: ");
scanf("%c", &mychar.ch);

printf("Binary representation of the character %c : %d%d%d%d%d%d%d%d\n", mychar.ch,
mychar.chbits.b1, mychar.chbits.b2, mychar.chbits.b3,
mychar.chbits.b4, mychar.chbits.b5, mychar.chbits.b6,
mychar.chbits.b7, mychar.chbits.b8);

return 0;
}
3.微软标准答案
////////////////////////////////
static void __cdecl xtoa (
unsigned long val,
char *buf,
unsigned radix,
int is_neg
)
{
char *p; /* pointer to traverse string */
char *firstdig; /* pointer to first digit */
char temp; /* temp char */
unsigned digval; /* value of digit */

p = buf;

if (is_neg) {
/* negative, so output '-' and negate */
*p++ = '-';
val = (unsigned long)(-(long)val);
}

firstdig = p; /* save pointer to first digit */

do {
digval = (unsigned) (val % radix);
val /= radix; /* get next digit */

/* convert to ascii and store */
if (digval > 9)
*p++ = (char) (digval - 10 + 'a'); /* a letter */
else
*p++ = (char) (digval + '0'); /* a digit */
} while (val > 0);

/* We now have the digit of the number in the buffer, but in reverse
order. Thus we reverse them now. */

*p-- = '\0'; /* terminate string; p points to last digit */

do {
temp = *p;
*p = *firstdig;
*firstdig = temp; /* swap *p and *firstdig */
--p;
++firstdig; /* advance to next two digits */
} while (firstdig < p); /* repeat until halfway */
}

/* Actual functions just call conversion helper with neg flag set correctly,
and return pointer to buffer. */

char * __cdecl _itoa (
int val,
char *buf,
int radix
)
{
if (radix == 10 && val < 0)
xtoa((unsigned long)val, buf, radix, 1);
else
xtoa((unsigned long)(unsigned int)val, buf, radix, 0);
return buf;
}

char * __cdecl _ltoa (
long val,
char *buf,
int radix
)
{
xtoa((unsigned long)val, buf, radix, (radix == 10 && val < 0));
return buf;
}

char * __cdecl _ultoa (
unsigned long val,
char *buf,
int radix
)
{
xtoa(val, buf, radix, 0);
return buf;
}

#ifndef _NO_INT64

static void __stdcall x64toa ( /* stdcall is faster and smaller... Might as well use it for the helper. */
unsigned __int64 val,
char *buf,
unsigned radix,
int is_neg
)
{
char *p; /* pointer to traverse string */
char *firstdig; /* pointer to first digit */
char temp; /* temp char */
unsigned digval; /* value of digit */

p = buf;

if ( is_neg )
{
*p++ = '-'; /* negative, so output '-' and negate */
val = (unsigned __int64)(-(__int64)val);
}

firstdig = p; /* save pointer to first digit */

do {
digval = (unsigned) (val % radix);
val /= radix; /* get next digit */

/* convert to ascii and store */
if (digval > 9)
*p++ = (char) (digval - 10 + 'a'); /* a letter */
else
*p++ = (char) (digval + '0'); /* a digit */
} while (val > 0);

/* We now have the digit of the number in the buffer, but in reverse
order. Thus we reverse them now. */

*p-- = '\0'; /* terminate string; p points to last digit */

do {
temp = *p;
*p = *firstdig;
*firstdig = temp; /* swap *p and *firstdig */
--p;
++firstdig; /* advance to next two digits */
} while (firstdig < p); /* repeat until halfway */
}

/* Actual functions just call conversion helper with neg flag set correctly,
and return pointer to buffer. */

char * __cdecl _i64toa (
__int64 val,
char *buf,
int radix
)
{
x64toa((unsigned __int64)val, buf, radix, (radix == 10 && val < 0));
return buf;
}

char * __cdecl _ui64toa (
unsigned __int64 val,
char *buf,
int radix
)
{
x64toa(val, buf, radix, 0);
return buf;
}

#endif /* _NO_INT64 */
/////////////////////////////
例:
#include <stdio.h>

void main( void )
{
char buffer[20];
int i = 3445;
long l = -344115L;
unsigned long ul = 1234567890UL;

_itoa( i, buffer, 10 );
printf( "String of integer %d (radix 10): %s\n", i, buffer );
_itoa( i, buffer, 16 );
printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );
_itoa( i, buffer, 2 );
printf( "String of integer %d (radix 2): %s\n", i, buffer );

_ltoa( l, buffer, 16 );
printf( "String of long int %ld (radix 16): 0x%s\n", l,
buffer );

_ultoa( ul, buffer, 16 );
printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul,
buffer );
}

LZ给分

用递归
#include
"stdio.h"
int
output(int
num);
void
main()
{
int
num;
printf("输入正整数:");
//当超过一定位数时,会溢出
scanf("%d",&num);
if(num<=0)
{
printf("输入整数!");
}
else
{
output(num);
}
}
int
output(int
num)
{
int
temp;
if(num!=0)
{
temp=num%2;
num=num/2;
output(num);
printf("%d",temp);
}
}

用 itoa()函数也可以实现这个功能
#include <stdlib.h>
int main(){
int shu = 12;
char str[32];
itoa(shu, str, 2);
printf("integer = %d erjinzhi = %s\n", shu, str);
getch();
}


头屯河区19175977818: C编程 实现输入一个正整数,输出其对应的二进制数. -
星丁双鹭: 用递归#include "stdio.h"int output(int num);void main() {int num; printf("输入正整数:"); //当超过一定位数时,会溢出scanf("%d",&num); if(num<=0){printf("输入整数!");} else{output(num);} }int output(int num) {int temp;if(num!=0){temp=num%2;num=num/2; output(num); printf("%d",temp);}}

头屯河区19175977818: 输入一个正整数输出其反序数,c语言 -
星丁双鹭: #include<stdio.h> #include<stdlib.h> #include<string.h> void main(){ int ipnumber,i; char string[100]; printf("请输入要进行反序的正整数:"); scanf("%d",&ipnumber); itoa(ipnumber,string,10); i=strlen(string); printf("\n反序后的正整数为:...

头屯河区19175977818: C语言编程:输入一个正整数,输出如下图形,例如输入5,输出的图形如下: -
星丁双鹭: #include int main() { int i,j,k,n; printf("请输入一个数字:"); scanf("%d",&n); for(i=1,k=-1;i { for(j=0;j printf("%d",i); if(k>0) { for(j=0;j printf("%d",i); } printf("\n"); } for(i=n-1,k=2*(n-2)-1;i>0;i--,k-=2) { for(j=0;j printf("%d",i); if(k>0) { for(j=0;j printf("%d",i); } printf("\n"); } return 0; }

头屯河区19175977818: c语言,用循环,输入一个整数,正序输出其各个位例如输入1234输出1 2 3 4
星丁双鹭: #include<stdio.h>#include<math.h>int main() { int a; scanf("%d", &a); while(a>0) { printf("%d\n", a%10); a = a/10; } return 0;}

头屯河区19175977818: 输入一个正整数,输出其各位数字之积的C编程怎么写? -
星丁双鹭: #include int main(){ int a,sum=0; scanf("%d",&a); for(;a;a/=10) sum+=a%10; printf("%d",sum); }

头屯河区19175977818: C语言编写程序,从键盘输入一个二进制正整数,输出其对应的十进制数 -
星丁双鹭: 问题大着呢,你只返回了一个数而已,应该返回一个数组 #includevoid main() { void fun(int m,int *j,int c[]); int m; int i; int c[100]={0};//用来装二进制数 int count = 0;//用来统计有效位数 printf("输入一个十进制整数:\n"); scanf("%d",&m); ...

头屯河区19175977818: C编程 输入一个不超过10的9次方的正整数,输出他的位数.例如12735的位数是5.不要是用任何数学函数,只能用四则运算和循环语句实现 -
星丁双鹭:[答案] #include int main () { int num,t; int sum=0; printf("输入一个正整数,范围1到1000000000:"); scanf("%d",&num); t=num; if(num<1||num>1000000000) { printf("不在正确范围,系统退...

头屯河区19175977818: 如何用c语言编程输入一个两位正整数,让其以字符形式输出 -
星丁双鹭: #include int main() { int k; scanf("&d",k); if(k>99 || k<10) { printf("输入不符合要求"); return 0; } int d = k /10; //十位数 int i = k - d*10; // 个位数 printf("十位字符:%c\n",d); printf("个位字符:%c\n",i); getchar(); return 0; }

头屯河区19175977818: 用C语言编程:输入一个正整数,输出如下式子之和:1+1/2+1/3+1/4+……+1/n -
星丁双鹭: int i,n; double sum=0; scanf("%d",&n); for(i=1;i<=n;i++) { sum+=1./n; } printf("%lf\n",sum);

头屯河区19175977818: 用c语言编写程序 输入一个正整数n
星丁双鹭: /*用c语言编写程序 输入一个正整数n,求1到n的数中1出现的个数*/#include"stdio.h"int count(int n){ int i,j,c=0; for(i=1;i

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网