输入一个十进制数,统计对应二进制1的个数,求大神

作者&投稿:雕倪 (若有异议请与网页底部的电邮联系)
给一个十进制整数,求其对应2进制数中1的个数。求大神看看我的这个c语言程序错哪里了。。~

没感觉到有对的地方,我帮你改了一下
#include int main(){int i,n1,n2,sum=0;//scanf("%d",&n1);//测试组数for(i=0;i<n1;i++){ sum = 0; scanf("%d",&n2);//每组的测试数据while (n2){ if (n2 % 2 == 1){/最后一位是1 sum++; } n2 /= 2;//相当于右移一位} printf("%d
",sum);}return 0;}

var n,i,j,s:integer; a:array[1..50] of integer;begin readln(n); i:=1;j:=0;s:=0; while n>0 do begin a[i]:=(n mod 2); i:=i+1; n:=(n div 2); end; i:=i-1; write('二进制数:'); for j:=i downto 1 do begin write(a[j]); s:=s+a[j]; end; writeln;writeln('各数字和:',s);end.

1.通过模2判断最后一位是否为1,为1则COUNT++,然后除2(相当与将该数右移一位),循环;最终求出结果。
实现如下:(C实现)
#include<stdio.h>
void main()
{
int i,count=0;
scanf("%d",&i); //输入一个数i。
do
{
if((i%2)!=0) //判断末尾是否为1
{
count++; //末尾为1则count++
}
i=i/2; //i除2,相当于右移一位
}while(i>=1);
printf("1的个数为%d\n",count); //输出结果
}

算法分析:十进制数和二进制数可以用
N=2^n*当前位的值+2^(n-1)*当前位的值+...+2^0*当前位的值,n为二进制位数减1,例如
7对应111,即7=2^2*1+2^1*1+2^0*1
8对应1000,即8=2^3*1+2^2*0+2^1*0+2^0*0;
所以,同理N=2(2^(n-1)*位值+2^(n-2)*位值+...+1*末二位值)+1*最末位位值
那么当前十进制数最末位的数值等同于N%2的值。
此时,将十进制数对应二进制数的最末位去掉,即将N/2在里面向下取整,N/2=2^(n-1)*位值+2^(n-2)*位值+...+1*末二位值
同上处理,N的二进制末二位值等同于N/2后%2的值。
循环处理,直至n/2为0

#include<stdio.h>
voidmain()
{
int test=8;
intcount=0;
while(test!=0)//十进制值不为0
{
if(test%2==1)count++;//最末位为1,则计数加一,否则不计数
test=test/2;//将十进制数对应的二进制数的末位去掉。重复前面操作
}
printf("%d",count);
}

输入10进制数x。
用 x 不断除以2 取余数的方法转换为2进制数,统计 余数 为 1 的个数
#include<stdio.h>
#include<stdlib.h>
main(){ int x;
int n=0;
int d;
printf("input x\n");
scanf("%d",&x);
while(1){
d=x%2; // 除以2 取余数
if (d==1) n++; // 是1 则 n=n+1
// printf("%d ",d);
x = (x - d) /2; // 不断除以2
if (x==0) break;
}
printf("n=%d\n",n);
return 0;
}


只读一个零的最小九位数
十进制数字系统:我们使用的数字系统是十进制,也称为基数10的数字系统。它包含了从0到9的十个数字,这些数字用于表示所有的整数。每个数字的位置在数字中具有不同的权重,从而形成了各种不同的数。数字的位置和权重:在十进制中,一个数字的位置决定了它的权重。从右到左,每个位置的权重是10的幂次方...

四位二进制数来表示一个十进制数符的常用编码是
编码是ascii码,是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO\/IEC 646。使用7个或8个二进制位进行编码的方案,最多可以给256个字符ASCII(包括字母、数字、标点符号、控制字符及其他符号)分配(或指定)数值。

编写matlab程序,实现能输入任意数字,字母后转换成二进制
注意,这里有一个小问题,就是dec2bin函数的返回值是一个char array,所以,我们应该先将其转换为double array!可以利用double()进行强制类型转换,得到ASCII码值,减去48就可以得到double array类型的0,1序列!程序代码如下:[num,numint,numf]=dectobin1(innum,N)十进制数转换为二进制数 输入为十进制数in...

c语言编程 把十进制转换为十六进制
方法一:#include<iostream>#include <string>using namespace std;string DecIntToHexStr(long long num){string str;long long Temp = num \/ 16;int left = num % 16;if (Temp > 0)str += DecIntToHexStr(Temp);if (left < 10)str += (left + '0');elsestr += ('A' + left -...

二进制数1001相对应的十进制数是
二进制转换成10进制,将1001按位去权展开:1*2^3+0*2^2+0*2^1+1*2^0=9。二进制到十进制转换是将二进制数系统转换为十进制数系统,这意味着基数2的数字系统转换为基数10的数字系统。二进制数字系统是最简单的数字系统形式,仅使用0(零)和1(一)两个数字。它也称为以 2 为基数的数字...

怎样把十进制表示成浮点规范化数。。
=(1. 0001 0101 0101 1100 0101 00)二进制 ×26 =(0 10000101 00010101010111000101000)单精度浮点数 注意:如果只有小数部分,那么需要右移小数点. 比如右移3位才能放到第一个1的后面, 阶码就是127-3=124.补充:浮点二进制数手工转换成十进制数的例子:假设浮点二进制数是 1011 1101 01...

1 0 指的是什么
10,相当于汉字"十"。是位于9与11之间的自然数、正整数。在十进制中,10是最小的两位数,写法是一个1后面加一个0,是一个合数,有4个因数(约数),是一个有理数。1、十进制是以10为基础的数字系统 2、10个边的多边形叫十边形 3、截角十二面体和大斜方截半二十面体的面都存在正十边形 4...

C++源程序:输入一个正整数n ,输出2\/1+3\/2+5\/3+8\/5+……的前n项100项之...
2、输入一个正整数,保存在变量num中。3、用do-while语句执行循环,条件是计算后的num值不为0。4、计数变量累加1,实现计算次数的统计。5、对整数num用2取余,保存在变量r中。6、用num除2的方式,计算正整数的商。7、输出正整数转换为二进制数的过程。8、最后,输出十进制数num转换为二进制数所...

98转换成二进制是多少?
98转换成二进制是1100010。二进制在数学和数字电路中指以2为基数的记数系统,以2为基数代表系统是二进位制的。这一系统中,通常用两个不同的符号0和1来表示。一个十进制数转换为二进制数要分整数部分和小数部分分别转换,最后再组合到一起。整数部分采用 "除2取余,逆序排列"法。具体做法是:用2...

六进制与十进制数相同的是多少?
与其他进制一样,六进制可以进行加法、减法、乘法和除法运算。在计算机科学和信息技术领域,六进制经常用于表示内存地址、颜色代码、字符编码等。六进制数与其他进制之间可以进行转换。例如,将一个十进制数转换为六进制数可以使用除法法则,将十进制数连续除以6,直到商为0,然后将余数倒序排列得到六进制数...

和县19363536385: C语言中写一个函数,输入一个10进制数,输出相应的2进制数 -
昌泥怡维: #include "stdio.h" void bin(int n) { if(n>0) { bin(n/2); printf("%d",n%2); } } void main() { int n; printf("输入一个整数:"); scanf("%d",&n); bin(n); }

和县19363536385: 帮我解决一道C语言编程题:将一个十进制数转化为二进制数,统计该二进制数中"1"的个数和"0”的个数 -
昌泥怡维: #include "stdio.h" int main() { int number,i=7,b[8]={0},m=0,n=0; printf("Input a number between 0 and 255:"); scanf("%d",&number); while(number) { b[i]=number%2; number/=2; if(b[i]==0) M++; IF(B[i]==1) n++; i--; } for(i=1;i{ printf("%d,%d,%d",b[i],m,n); }printf("\n"); }

和县19363536385: 输入一个十进制整数,输出其对应的二进制数,用C语言的函数知识. -
昌泥怡维: 问题大着呢,你只返回了一个数而已,应该返回一个数组 #include<stdio.h> void main() {void fun(int m,int *j,int c[]);int m;int i;int c[100]={0};//用来装二进制数int count = 0;//用来统计有效位数printf("输入一个十进制整数:\n");scanf(...

和县19363536385: 输入一个十进制数,将其转换为二进制输出 -
昌泥怡维: 强制格式转换就行了,直接在输出时%0就行了啊

和县19363536385: 4、C语言编程:输入一个十进制数,输出对应的二进制数. -
昌泥怡维: #include<stdio.h> void fun(int n) { int i=0; for (i=sizeof(int)*8-1;i>=0;i--) printf("%d",n>>i&1); } int main(void) { int a=0; scanf("%d",&a); fun(a); return 0; } 测试:1200000000000000000000000000001100 如要去掉前面zhidao的0,可以用一个变量回标记是否遇到1,在显示前加入答判断

和县19363536385: C语言:将一个10进制整数转换为2进制,并统计1和0的个数! -
昌泥怡维: #include <stdio.h>#include <stdlib.h> int main() { int n; char n_bin[100]; int i=0; int t0=0; int t1=0;printf("n="); scanf("%d",&n); while(n) { n_bin[i]=n&1; if(n_bin[i]) t1++; else t0++; n>>=1; i++; } for(i--;i>=0;i--) { printf("%d",n_bin[i]); } printf("\n有%d个0,有%d个1\n",t0,t1); return 0; }

和县19363536385: 给一个十进制整数,求其对应2进制数中1的个数.求大神看看我的这个c语言程序错哪里了.. -
昌泥怡维: 没感觉到有对的地方,我帮你改了一下#include int main() { int i,n1,n2,sum=0;// scanf("%d",&n1);//测试组数 for(i=0;i { sum = 0; scanf("%d",&n2);//每组的测试数据 while (n2){ if (n2 % 2 == 1){/最后一位是1 sum++; } n2 /= 2;//相当于右移一位 } printf("%d\n",sum); } return 0; }

和县19363536385: 编程求十进制数iNum对应二进制数中1的个数,例如:输入7 输出3输入8 输出1 -
昌泥怡维: #include int main() { int iNum; int index=0; scanf("%d",&iNum); while(1) { if(iNum==0) break; if(iNum%2==1) { index++; iNum/=2; } else iNum/=2; } printf("%d\n",index); return 0; }

和县19363536385: c语言 将输入的数表示成二进制,并统计其中1的个数 -
昌泥怡维: #include <stdio.h>#include<conio.h> int main() { int a,i=0,j,k=0; int b[30]; scanf("%d",&a); while(a>0) //下面几行吧十进制转换为二进制 { b[i]=a%2; a/=2; i++; } for(j=0;j<i;j++) //计算1的个数 if(b[j]==1) k++; printf("%d",k); getch(); } 刚写的,符合你要求吧?

和县19363536385: 如何用C语言编写函数实现输入一个十进制数, 将其转换成二进制数并输出? -
昌泥怡维: #include stdio.h #include math.h void main() { int n,a[100],i; printf("请输入"); scanf(&n); i=0; while(n>0) { a[i]=n%2; i=i+1; n=n/2; } for(j=i-1;j>-1;;j--) printf("%d",a[j]); }

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