输入字符转换二进制求出1的个数问题

关于将整数转化成二进制的问题,我们常用的可以是itoa()这个函数,但是在一些OJ上,对于这个非标准函数的判定存在问题,所以最好还是自己能够掌握手动十进制转二进制的算法(短除法)为好。

/*题目描述
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。

输入描述:
 输入一个整数(int类型)

输出描述:
 这个数转换成2进制后,输出1的个数
 */

#include<stdio.h>
#include<stdlib.h>


 
 int main()
 {
 	int a;
 	scanf("%d",&a);
 	int b,i=0;
    int str[100];
    //短除法将十进制转二进制,存进str数组中;

 	while(a!=0){
 		b = a/2;
 		str[i] = a-b*2;
 		a = a/2;
 		i++;
	 }	
    //注意,这个方法只是将十进制转成二进制数的逆序,对本题来说足够;如需正序的二进制,用栈打印出                
    //即可;
	 int count=0;
	for(int j=0;j<i;j++)
 	{
		 if(str[j]==1){
 			count++;
		 }
	 }
	printf("%d\n",count);
 	return 0;
  } 

当然,如果解决平时的问题,用itoa()函数也就足够了。【不会用?点这个,看十进制转二进制的两个常用方法

发布了5 篇原创文章 · 获赞 2 · 访问量 55

猜你喜欢

转载自blog.csdn.net/main_double/article/details/104855218