怎么一次输入多个数字啊?
getline读入一行到字符数组
遍历字符数组,
(1)遇到逗号,说明一个数结束了
(2)遇到小数点,说明数的处理要改变了
(3)遇到数字,要区分是小数点前还是后的部分
(4)其他空格字符之类,跳过
具体步骤见代码
#include <iostream>#include <string>using namespace std;int main(){ //7.2,4.5,6.3,5.74,25.4 char buf[333]; cin.getline(buf, sizeof(buf));//读入一行 double a[33]; a[0] = 0;//初始化第一个数 int cnt = 0; //初始化 ”输入数字 个数“ double point = 0; //标记小数点是否已出现 for(int i = 0; buf[i] != '0'; i++){ if(buf[i] == ','){ //下一个数,初始化相关变量 a[++cnt] = 0; point = 0; }else if(buf[i] == '.'){ //发现小数点,小数点后第一位的权值为0.1(十进制下) point = 0.1; }else if(isdigit(buf[i])){ //处理数字,分小数点前后 if(point != 0){ //小数点后 a[cnt] += (buf[i] - '0') * point; //该位数字*该位权值 point *= 0.1; //权值变小 }else{//小数点前 a[cnt] *= 10; //当前数值整体*10 a[cnt] += buf[i] - '0'; //加上该位数字 } } } cnt++; for(int i = 0; i < cnt; i++) cout << a[i] << endl; return 0;}
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有