首页 > 其他分享 >[每天例题] 查找输入整数二进制中1的个数

[每天例题] 查找输入整数二进制中1的个数

时间:2023-04-07 14:59:16浏览次数:43  
标签:count EOF 二进制 scanf 个数 查找 例题 输入

查找输入整个二进制中1的个数

题目

 

题目分析

计算它在二进制下的1的个数。 注意多组输入输出!!!!!!   数据范围:1≤n≤2^31 −1 

思路分析

1.多组数据的输入方法:

1.EOF法

因为在线评测系统的输入数据存放在一个文件中,因此可以通过文件是否结束的方式判断输入的数据是否结束。scanf在读取到文件结束符时,会返回标识EOF(end of life),EOF是一个预定义的常量,等于-1。通过判断scanf的返回值否为EOF决定是否退出循环。

 

 

 2.for循环

ps:

1.EOF法常用于不知道几组数据,用while循环,利用scanf()的返回值结束时为EOF。
2.计数法用于知道几组数据,用for循环。

2.十进制转二进制方法:

要点:除二取余,倒序排列解释:将一个十进制数除以二,得到的商再除以二,依此类推直到商等于一或零时为止,倒取将除得的余数,即换算为二进制数的结果

 

例子:(52)10=(00110100)2

 

3.思路

1.先将十进制数转化为二进制数。

2.再使用if统计二进制中1的个数。(统计可以直接统计,也可以将二进制放入数组中,通过数组进行统计)

代码

#include<stdio.h>
int main()
{
	int a;
	while(scanf("%d",&a)!=EOF)
	{
		int count=0;
		while(1)
		{
			//对2求余,得出二进制中的0、1 
			if(a%2==1)
			{
				count++;
			}
			a/=2;
			if(a==1)
			{
				count++;
				break;
			}
		}
		printf("%d\n",count);//输出一定要换行,不然输出多种数据时格式错误
	}
	return 0;
}

  运行结果

 

 

 

标签:count,EOF,二进制,scanf,个数,查找,例题,输入
From: https://www.cnblogs.com/hcrzhi/p/17284261.html

相关文章

  • [每天例题]蓝桥杯C语言 成绩分析
    蓝桥杯C语言成绩分析题目    题目分析1.每个学生的得分都是一个0到100的整数。2.输出三行。第一行包含一个整数,表示最高分。第二行包含一个整数,表示最低分。第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。思路分析1.使用数组进行成绩输入,声明为i......
  • 图片转二进制 base64
    functiongetBase64Image(img){varcanvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;varctx=canvas.getContext("2d");......
  • 如何通过博客文本直接发布二进制数据文件(非下载链接)
    是否想过,在博客中直接利用文本字符传播二进制数据?现在这个被我遗忘了近10年的便捷的工作完工了:《Base64&UUE文件编码解码工具》,直接将二进制文件编码为可由WinRAR解压的UUE纯文本格式文件,还可以先加密码,这样你就可以在博客中直接发布二进制文件了,下面就是这个小工具的可......
  • pg数据库查找外键但没有索引的sql
    SELECTpg_index.indexrelid::regclass,'createindex'||relname||'_'||array_to_string(column_name_list,'_')||'_idxon'||conrelid||'('||array_to_string(column_name_list,......
  • fragment的查找和移除
    FragmentManagerfragmentmanger=getSupportFragmentManager();FragmentTransactionfragmenttransaction=fragmentmanager.begintransaction();//这一步不进行也可以查找Fragmentfragment=fragmentManager.findFragmentById(R.id.fragment);if(fragment!==null){......
  • Java-Day-5(数组 + 排序 + 查找 + 二维数组)
    Java-Day-5数组可以存放多个同一类型的数据,属于引用类型动态初始化语法:数据类型数组名[]=new数据类型[大小]例:int[]a=newint[5]或:doublea[]=newdouble[n]使用(引用/访问/获取)时,初始下标(索引)是从0开始,第一个数=a[0]获取长度:数组名.length......
  • 二进制如何转十进制,十进制如何转二进制
    10进制转2进制就是除2取余数,按余数先后顺序排列:例如:5=5%2+2%2=101  2进制转10进制,从0位开始各位从低位开始乘以2的位次方结果相加:例如:110=0×2的0次方+1乘以2的1次方+1乘以2的2次方=6 听语音原创|浏览:9953631234567分步阅读学计算机的朋友刚开始学习时都要接触进制之间的转......
  • js用前缀名查找class或id节点,js模糊查询某个dom节点
    js在操作dom的场景中,有时候会有类似的场景需求。js用前缀名查找class节点//参数dom为htmldom节点//参数key为需模糊查询的名称字段functionqueryClassNode(dom,key){letcollectArray=[];for(vari=0;i<dom.childNodes.length;i++){ //核心点......
  • 计算机中的编码和字符集:理解二进制、字节流和常见编码方案
    编码:将字符串转换到字节串的过程。解码:将字节串转换成字符串的过程。GB2312既是一种中文字符集,也是以ANSI标准为基础,实现的中文编码方案。它主要用于简体中文编码,是中国国家标准,于1981年发布。GBK是GB2312的超集。Unicode是一种字符集,定义了所有字符的唯一标识符(码点),同时......
  • C语言习题 折半查找
     ProblemF:C语言习题折半查找TimeLimit:1Sec  MemoryLimit:128MBSubmit:5189  Solved:2102[Submit][Status][WebBoard]Description有n个数(n<20),已按从大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值。如果不在数组中输......