惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
Jina AI
Jina AI
GbyAI
GbyAI
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
P
Proofpoint News Feed
The Cloudflare Blog
H
Help Net Security
MyScale Blog
MyScale Blog
T
The Blog of Author Tim Ferriss
量子位
博客园 - 聂微东
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
月光博客
月光博客

博客园 - Arishuang

数据类型 varchar 和 varchar 在 modulo 运算符中不兼容。 ASP.NET2.0_多语言本地化应用程序 ASP.NET2.0_缓存 ASP.NET2.0_执行页面发送的强类型方法与弱类型方法 ASP.NET中的状态管理功能详解(转载) [ASP.NET] Session 详解(转载) ASP.NET页面下载功能程序(转载) vs2005中“密码最短长度为7,其中必须包含以下非字母数字字符: 1”错误 (转载) ASP.NET中实现页面间的参数传递 QueryString\Application\Session\Cookie (转载) - Arishuang ASP.NET页面跳转的几种方法(转载) 常用正则表达式(转载) C#_解决在控制台中输入Ctrl+Z的问题 C#格式化输出(转载) C#格式化输出 面试题之金山(函数练习2)_字符排序(字母、数字及其它字符)ParseString DS_汉诺塔 XML_(3)_用C#操作缓存中的XML即DOM 观书后感之"NET Web Services:架构与实现 (美)贝列哲 "2008-5-2 下定决心,认定了,就全力以赴.Web应用程序开发--跟你杠上了
面试题之金山_函数练习3_数值转换并输出数值中各个数字的个数...
Arishuang · 2008-05-10 · via 博客园 - Arishuang

函数练习3

写一个函数,对给定整数的二进制表示进行描述
如:给定整数131,其二进制表示为10000011,要求函数输出以下结果:
1: 2
0: 5
1: 1
表示从最低位开始,包含2个1,5个0,1个1。
参考上一题,确定本函数的名字,入口出口及返回值,并实现本函数

*解题思路:数制转换是(N/d)*d+N%d 而此题是要我们从低位开始的.又因平常的手写十进制转换二进制也是得到低位到高位的.
*利用上述的特性,我们只要比较新得出的低位数值是否与将要计算的高一位的数值相等,若等,则加一,不等则就输出这个数值
*有多少个,并清理计数器.具体代码最下面:

编程总结:
从这道题中,我又学到了数制转换方面的知识,但还暴露出很多问题。如刚开始自己可以得出转换后从低到高的数值,但
却写不出此题的结果代码。后又经参考别人的代码之后,自己终于做出来了。最大的收获还是在做什么事情,就要先好好的,仔细的了解、明白和清楚究竟是做什么。这次一开始就对题目研究得不是很透彻,导致了自己只能做到一半,最后要参考别人的代码(其实别人的代码也不是很正确)。好了,吸取教训啊。张大两只眼睛,还是看不清的话,就再加两只(即一副眼镜呗)。

#include <stdio.h>

void ParseInt(int pint)
{
     int sum=1; //相同数值个数计数器
     int tempa,tempb; //tempa放低位,tempb放高一位
     while(pint)
     {
          tempa=pint%2; //得到十进制转二进制的低位数值
          pint=pint/2;

          tempb=pint%2; //得到下一个将要得出的高一位数值
          if(tempa==tempb) //低位与高一位数值相比,若相等则计数器加一
          {
               sum++;
          }
          else   //两者不相等,则输出并清理计数器
          {
                printf("%d:%d\n",tempa,sum);
                sum=1;
          }
     }
     
}


int main()
{
 int Snum=131;
 ParseInt(Snum);
 
 scanf("%d",Snum);
}