PAT 1054求平均值(未AC)

在这里插入图片描述
在这里插入图片描述
解析

  1. 对于每一个输入的数字判断是否合法(很麻烦)
  2. 若合法即装到vector中去,并且count++(用来记录合法的数字)
  3. 输出Average 注意小数点位数
    cout<<fixed()<<setprecision(1)<<sum/count<<endl;

对于合法的判断

1. 先判断这是不是一个数字(2种情况)
第一种:例如3.45,7.89 这些正实数 即应该满足条件(num[0]>='0'&&num[0]<='9')
第二种:例如-3.45,-7.89这些负实数 即应该满足条件

(num[0]=='-'&&(num[1]>='0'&&num[1]<='9')) 

第一个符号是符号,第二个符号是数字

2.再判断这个数字有几个小数点

for (int i = 0; i < num.length(); i++)
            if(num[i] == '.')
                Xiaoshudian++;//小数点个数

3.接着判断这个数字的小数位数

 for (int i = 0; i < num.length(); i++)
                if(num[i] == '.')
                    Position = i;//找到第一个小数点的位置
       if(num.length()-Position-1 > 2&&Position != 0)
                return false;//如果数字的长度-小数点的位置-1(这也就是小数的位数)

4.最后获取这个数字判断其abs()是否大于1000

               double Num = stod(num);//stod函数
                if(Num < -1000&&Num > 1000)
                    return false;
                else
                    return true;

注意

  1. 注意0的输出 0.0
  2. 注意这些整数 01000.00 -01000.00 这些整数都是正确的

代码(未AC)

在这里插入图片描述
在这里插入图片描述

PAT结果在这里插入图片描述

总结

  1. stirng 转int float double
    int num = stoi()
    double num = stod()
    float num = stof()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值