day28:求小数位数个数、进制转换、表达式求值

求小数位数个数

问题描述

明明最近在一家软件公司实习,公司分配给他一个任务,要他写一个小程序,这个程序的功能是求出一个浮点数的小数部分的长度。例如程序输入1.1,则输出1,程序输入1.11,则输出2,明明觉得这个非常简单,花了不到5分钟的时间就把程序给写出来了,然后就把程序交给了测试员测试。但是没有想到的是,经过测试员的测试,发现了一大堆的错误,返回的结果很多都是不对的,这个令明明相当的不解,始终想不通自己的程序错在哪里。你是一名经验丰富的程序员,明明把这个问题来求助于你,明明和你说了他的想法,你一听就明白明明错在了哪里,原来明明使用double型来存放浮点数,但是由于double型的精度问题,不可能把所有的小数都精确的保存好,如果小数位数很长,就会出错。你发现了问题。现在请你写出正确的程序。 明明的问题可以归结为:给你一个浮点数,请你求出这个浮点数的小数位数。

个人总结

写题时不能仅满足 常规输入正确,还要考虑边界情况:比如输入包含多个小数点(12.34.56)、小数点后有非数字字符(12.3a45)、小数点在末尾(123.)等

cpp 复制代码
#include <iostream>
//#include <vector>
//#include <string>
//#include <algorithm>
//#include <cmath>
#include <iomanip>
//#include <set>
#include <sstream>
//#include <bits/stdc++.h> 
using namespace std;

int main(){	
	string num;
	while(cin >> num){
	bool tag = false;
	int count = 0;
	
	for(int i = 0;i < num.size() ;i++){
		if(tag) {
			count++;
		}
		
		if(num[i] == '.'){
			tag = true;
		}
		
	}
		
	cout << count << endl;	
	}
	
	return 0;
}

进制转换

问题描述

输入一个十进制数,将其化成N进制数输出(2≤N≤16)。 输出结果时,大于等于10的数字用字母代替,A代表10,B代表11以此类推。

个人总结

  1. 取余法转进制的核心逻辑要牢记:

十进制转任意进制的核心是 "除基取余,逆序排列":

不断对目标进制取余,得到每一位的数字 / 字母;

取余结果是逆序的,最终需要反转字符串;

负数需先记录符号,转为正数处理后补回负号。

这个逻辑是进制转换的通用方法,适用于 2-36 进制的转换场景。

cpp 复制代码
#include <iostream>
//#include <vector>
//#include <string>
#include <algorithm>
//#include <cmath>
#include <iomanip>
//#include <set>
#include <sstream>
//#include <bits/stdc++.h> 
using namespace std;
string transform(long long num,int n){
	char c;
	string s1;
	if(num == 0){
		c = '0';
		s1 += c;
		return s1;
	}
	while(num){
		if((num % n) < 10){
			c = '0' + num%n;
			s1 += c;
		}
		else{
			c = 'A' + num%n - 10;
			s1 += c;
		}
		num /= n;
	}
	string s2 = s1;
	reverse(s2.begin() ,s2.end() );
	
	
	
	return s2;
}

int main(){	
	long long num;
	int n;
	while(cin >> num >> n){
		string s;
		s = transform(num,n);
		
		cout<< s << endl; 
		
		
		
		
	}
	return 0;
}

表达式求值

问题描述

以字符串形式输入仅有整数和加减(正负)号构成的表达式,输出该表达式的值。

个人总结

  1. 可以先优化字符串格式,让空格什么的去掉

  2. 对数字加见的操作要在后面,否则会漏一项

cpp 复制代码
#include <iostream>
#include <string>
using namespace std;

int main() {
    string input_str;
    while (cin >> input_str) {
        string clean_str;
        for (int i = 0; i < input_str.size(); i++) {
            if (input_str[i] != ' ') {
                clean_str += input_str[i];
            }
        }

        string expr_str = "+" + clean_str;
        int total = 0;
        int index = 0;

        while (index < expr_str.size()) {
            char sign = expr_str[index];
            index++;

            int number = 0;
            while (index < expr_str.size() && isdigit(expr_str[index])) {
                number = number * 10 + (expr_str[index] - '0');
                index++;
            }

            if (sign == '+') {
                total += number;
            } else {
                total -= number;
            }
        }

        cout << total << endl;
    }
    return 0;
}

计算机英语翻译

六、程序设计

一个程序是一系列的指令集,它告诉电脑的硬件要对数据执行哪些操作。程序可以被硬件自身创造(内置于),或者它可能独立的以一种被叫做软件的形式存在。在一些特别的领域(在一些专用),或"故意的"(定制化),电脑的操作指令被嵌入进了电路系统;寻常的例子就比如微电脑里的计算机(计算器),腕表(手表),汽车引擎,和微波炉 (里的微型计算器)。一个总目标电脑(通用计算机),在另一方面,尽管它包含了一些内置的程序(在只读存储器ROM)或者指令(在处理器chips片段里),取决于额外的程序去执行有效的任务(但他依赖外部的程序来执行有用的任务)。只要一个计算机已经被程序设计了(被编程),它能做的最多或者最少的都取决于软件的控制,给予它时令去使它能够去做(他在给定时刻所能完成的任务,都取决于控制它的软件)。软件最广泛的应用包括一个大范围的应用程序(广泛使用的软件包括各种应用程序)-指令去告诉计算机如何处理复杂的任务

①specialized 专用的

②dedicated 定制化的

③embed in 嵌入

④circuitry n.电路

⑤chip n.芯片

单词打卡

相关推荐
x-cmd1 天前
[特殊字符] 新年新气象|x-cmd v0.8.3:Apache 2.0、Minimax M2.5、Claude Code 一键切换
ai·apache·agent·claude·x-cmd·minimax
vortex52 天前
在 Apache 中完整开启 .shtml (SSI) 解析
apache
鸽芷咕3 天前
时序数据库选型解析及Apache IoTDB技术实践
apache·时序数据库·iotdb
Pocker_Spades_A3 天前
从数据生命周期出发的时序数据库选型指南:用 Apache IoTDB 把“存储成本”和“查询体验”一起算清楚
apache·时序数据库·iotdb
Web打印3 天前
Phpask(php集成环境)之01安装Apache
开发语言·php·apache
byte轻骑兵3 天前
大数据场景时序数据库选型指南——Apache IoTDB实践与解析
大数据·数据库·apache·时序数据库·iotdb
IT布道4 天前
基于Rocky Linux制作Apache HTTPD 2.4.66 的RPM安装包
linux·运维·apache
云边有个稻草人5 天前
大数据时代时序数据库选型深度指南:Apache IoTDB的技术内核与场景落地
大数据·apache·时序数据库·apache iotdb
一个天蝎座 白勺 程序猿6 天前
Apache IoTDB(14):IoTDB结果集排序与查询对齐模式——ORDER BY与ALIGN BY DEVICE使用
大数据·ai·apache·时序数据库·iotdb