一、设计思路

在课堂上讨论的时候,老师提出的思路是利用之前的结果计算出比它更大的数字的“1”。但是我不是这么想的,我是把输入的正整数每位上的数都分解出来计算。如abc,就先算c,再加上b,最后再加上a。

二、源代码

 // one.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include "iostream.h" int FindOnes(int num)
{
int ones,mul,num1,num2,num3;
ones=;
mul=; //除数,10的n次方
num1=num2=num3=;
while(num/mul) //当取整后不为零的话,就循环计算
{
num1=num-(num/mul)*mul; //后一位上的数字
num2=(num/mul)%; //当前位数上的数字
num3=num/(mul*); //前一位上的数字
switch(num2) //若正整数为abc,b为当前位数
{
case : //余数为0时,包含a*mul个1;
ones+=num3*mul;
break;
case : //余数为1时,包含a*mul+c+1;
ones+=num3*mul+num1+;
break;
default: //其余>1的情况都是(a+1)*mul
ones+=(num3+)*mul;
break;
}
mul*= ; //改变除数,继续计算更高位
}
return ones;
}
int main(int argc, char* argv[])
{
int number,ones; //数字、1的个数
cout<<"请输入一个正整数:";
cin>>number;
ones=FindOnes(number);
cout<<number<<"中“1”的个数为"<<ones<<endl;
return ;
}

三、结果截图

四、心得体会

敲代码的时候,我以为会挺好写的,想用递归的思想来实现,但是没能自己将每位上的情况总结出来。于是借鉴了一下网上的思路,有个程序是一次性看三位,当前位、高一位和低一位。代码简洁完美。

我发现每次写这种注重算法的程序时,自己就捉襟见肘了,还是得多练,提高一下自己优化代码的能力。

随堂作业——到底有几个“1”(C++)的更多相关文章

  1. C语言程序设计第10堂作业

    一.本次课主要内容: 本次课程学习数组,一种最基本的构造类型,它是一组相同类型数据的有序集合.数组中的元素在内存中连续存放,每个元素都属于同一种数据类型,用数组名和下标可以唯一地确定数组元素: (1) ...

  2. C语言程序设计第9堂作业

    一.本次课主要内容: 本章将散布在前五章中的数据类型和表达式等内容做了归纳性的汇总,本次课需要掌握以下两个方面: (1)本次课通过从数据在计算机内的存储格式入手,介绍整型.字符型.单精度和双精度实型四 ...

  3. C语言程序设计第8堂作业

    一.本次课主要内容: 本次课通过以下两个知识点来完成: (1)以数字金字塔为例,介绍函数的另一种形式,即不返回结果的函数.不返回结果的函数在定义.调用.参数传递.函数声明上,思路完全与以前相同,只是函 ...

  4. C语言程序设计第7堂作业

         一.本次课主要内容: 本次以计算圆柱体体积为例,通过定义体积计算功能的函数和主函数调用的例子,引出函数定义的一般形式:函数首部加函数体,且在函数结尾处通过return 语句返回结果.本节要重 ...

  5. C语言程序设计第6堂作业

              一.  本次课主要内容:             通过几个实例来进一步掌握循环结构的应用. 二. 实验内容:(70分) 1. 穷举算法(古典算术问题-搬砖头)某地需要搬运砖块,已知 ...

  6. C语言程序设计第5堂作业

    一.本次课学习主要内容及知识结构点: 二.实验内容:(60分) 1. 求奇数和.输入一批正整数(以零或负数为结束标志),求其中的奇数和.试编写相应程序. 2. 展开式求和.输入一个实数 x,计算并输出 ...

  7. C语言程序设计第4堂作业

    大家注意:本次作业稍有增加,由于放假期间大家空闲时间比较充足,将之前学习过程中遗留的问题必须在假期解决.   本次课学习主要内容: 分支结构中的二分支结构.多分支结构和else-if语句 掌握字符型数 ...

  8. 软件工程随堂作业--随机产生30到四则运算(c语言)

    #include "stdio.h" #include "math.h" #include "stdlib.h" #include" ...

  9. 福州大学W班-团队作业-随堂小测(同学录)成绩

    作业链接 https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/1246 作业要求 1.题目 即编写一个能够记 ...

随机推荐

  1. 如何根据IP查找计算机名

    示例:nbtstat -A  192.168.1.123 参考网址:http://jingyan.baidu.com/article/335530daa40d7f19cb41c312.html

  2. Android Virtual Devices代理上网

    本机电脑是使用代理上网,然后要在avd中要连接互联网,设置步骤如下: Click on Menu Click on Settings Click on Wireless & Networks ...

  3. POJ C程序设计进阶 编程题#2: 配对碱基链

    编程题#2: 配对碱基链 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 脱 ...

  4. DevExpress 14.2 批量汉化 以及客户端的汉化

    DXperience汉化方法介绍 运用慧都提供的DXperience汉化包,能将最新版本的DXperience WinForm和ASP.NET控件界面.弹出框.右键菜单等汉化成中文,且能根据自己的需求 ...

  5. 关于overflow-y:scroll ios设备不流畅的问题

    最近做双创项目的时候因为页面有很多数据显示,所以打算让它Y轴方向滚动条的形式展现,但在测试阶段发现IOS设备滑动效果非常不理想: search by google之后找到解决办法: -webkit-o ...

  6. 学习c的第8天

    #include <stdio.h> int main() { char ch; printf("请输入分数等级(A,B,C,D):"); scanf("%c ...

  7. 旋转转盘选择Menu--第三方开源--CircleMenu

    CircleMenu在github上的项目主页是:https://github.com/zhangphil/Android-CircleMenu CircleMenu用法简单,JAVA代码: pack ...

  8. 使用WIF实现单点登录Part III —— 正式实战

    我们接下来的demo将包括以下的工程: SiteA —— 基于.net framework 4.5的MVC 4程序,使用WIF 4.5的SDK,第一个RP SiteB —— 基于.net framew ...

  9. ok6410的DMA裸机总结

    1.为何使用DMA:为了提高CPU的工作效率,避免多余的等待时间 2.关于DMA控制器:(1)通道数:2440有4个通道,6410有4个DMA控制器(初始化的时候要选择),32个通道.210有两种DM ...

  10. 18.python的异常处理

    python中至少包括两种错误:语法错误(syntax errors)和异常(exceptions). 1.语法错误   语法错误,也被称作解析错误