随堂作业——到底有几个“1”(C++)

一、设计思路

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

二、源代码

 1 // one.cpp : Defines the entry point for the console application.
 2 //
 3
 4 #include "stdafx.h"
 5 #include "iostream.h"
 6
 7 int FindOnes(int num)
 8 {
 9     int ones,mul,num1,num2,num3;
10     ones=0;
11     mul=1;                //除数,10的n次方
12     num1=num2=num3=0;
13     while(num/mul)        //当取整后不为零的话,就循环计算
14     {
15         num1=num-(num/mul)*mul;        //后一位上的数字
16         num2=(num/mul)%10;            //当前位数上的数字
17         num3=num/(mul*10);            //前一位上的数字
18         switch(num2)                //若正整数为abc,b为当前位数
19         {
20             case 0:                    //余数为0时,包含a*mul个1;
21                 ones+=num3*mul;
22                 break;
23             case 1:                    //余数为1时,包含a*mul+c+1;
24                 ones+=num3*mul+num1+1;
25                 break;
26             default:                //其余>1的情况都是(a+1)*mul
27                 ones+=(num3+1)*mul;
28                 break;
29         }
30         mul*= 10;                    //改变除数,继续计算更高位
31     }
32     return ones;
33 }
34 int main(int argc, char* argv[])
35 {
36     int number,ones;    //数字、1的个数
37     cout<<"请输入一个正整数:";
38     cin>>number;
39     ones=FindOnes(number);
40     cout<<number<<"中“1”的个数为"<<ones<<endl;
41     return 0;
42 }

三、结果截图

四、心得体会

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

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

时间: 2025-01-31 09:13:32

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

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

     一.本次课主要内容: 本次以计算圆柱体体积为例,通过定义体积计算功能的函数和主函数调用的例子,引出函数定义的一般形式:函数首部加函数体,且在函数结尾处通过return 语句返回结果.本节要重点掌握两点: (1)形参.实参及参数传递.形参只能用变量表示,在函数中起作用:实参可以是变量.常量或表达式,在主调函数中.实参与形参要个数一致,类型一致.参数传递时,实参把变量.常量的值或者表达式结果值传递给形参. (2)函数定义首部与声明.二者形式相似,函数声明的目的主要是说明函数的类型和参数的情

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

一.本次课学习主要内容及知识结构点: 二.实验内容:(60分) 1. 求奇数和.输入一批正整数(以零或负数为结束标志),求其中的奇数和.试编写相应程序. 2. 展开式求和.输入一个实数 x,计算并输出下式的值,直到最后一项的绝对值小于0.00001 (保留4 位小数).要求定义和调用函数fact(n)计算n 的阶乘,可以调用pow()函数求幂.试编写相应程序. 3. 求序列前n项和(2/1+3/2+5/3+8/5+...).输入一个正整数n,输出 2/1+3/2+5/3+8/5 +"的前n项之和

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

第3次作业的Deadline:? 2016-09-29 23:00pm 本次课学习主要内容: 常用数学函数 掌握for语句 分支结构中的二分支结构.多分支结构和else-if语句 通过四则运算程序掌握字符型数据的输入和输出及逻辑运算 通过简单程序进一步理解掌握数据类型和运算符的特点及应用. 实验内容: 1.计算平方根序列√?1???+√?2???+√?3???+?的前N项之和.可包含头文件math.h,并调用sqrt函数求平方根. 2. 本题要求编写程序,计算交错序列 1-2/3+3/5-4/7

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

          一.  本次课主要内容:             通过几个实例来进一步掌握循环结构的应用. 二. 实验内容:(70分) 1. 穷举算法(古典算术问题-搬砖头)某地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬一块.问用45人正好搬45块砖,有多少种搬法? 2. 猴子吃桃问题.一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个:第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半加一个.到第n天早上想再吃时,见只剩下一

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

一.本次课主要内容: 本次课通过以下两个知识点来完成: (1)以数字金字塔为例,介绍函数的另一种形式,即不返回结果的函数.不返回结果的函数在定义.调用.参数传递.函数声明上,思路完全与以前相同,只是函数类型变为void.最后,强调函数的优点,即结构化程序设计的思路,包括按自顶向下的方法对问题进行分析.模块化设计和结构化编码3 个步骤. (2)以复数运算为例,介绍变量与函数的关系,主要掌握局部变量.全局变量和静态变量三种形式.需要分清三种变量的作用与定义的位置,区分局部变量与全局变量的异同点,局部

【人工智能】实验课随堂作业1

作业1 选择题: 1.  C 编程题: 1. 代码: #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<climits> using namespace std; int isPrime(int n){ int i,j; if(n==2){ return true; } else if (n<2||n%2==0){ return

随堂作业

设计思路:先假设第一个为水王,定义一个计数器j=1,和第二个进行比较,如果不相同,计数器减一,如果计数器<=0,则让它的下一位为水王,进行比较.直到找到水王 代码: package sy; import java.util.*; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in= new Scanner(System.in); Sys

高项2015年下半年培训随堂作业(10月19日)

1.需求开发过程的四个主要活动,及其内容简述: 2.结合图17.5,描述追溯.回溯. 3.PMO的日常性职能.战略性职能,分别是什么? 4.DIPP分析的公式,及简述: 5.大型及复杂项目的四个特征: 6.大型项目按哪3条制订工作分解结构: 7.波士顿矩阵图的四类业务,及简述: 8.防御型战略组织的特征:开拓型战略组织的特征:分析型战略组织的特征:被动反应型战略组织的特征.

高项2015年下半年培训随堂作业(9月30日)

1,梳理出项目成本管理的重点: 成本估算的技术和工具 成本预算的步骤,成本预算的工具和技术 成本控制的主要内容,成本控制的工具和技术:成本变更控制系统:挣值分析:项目管理软件 2,梳理出项目质量管理的重点: 质量规划的方法及技术工具 质量保证(质保部门或相关部门)的方法及技术工具:质量审计:过程分析:基准分析等 质量控制的方法及技术工具:控制:控制图:帕累托图:统计抽样:因果图:趋势分析 3,梳理出项目人力资源管理的重点: 人员配备管理计划 团队的5个阶段:形成:震荡:正规:表现:消亡 激励理论