输入一串以'.'为结束的字符串,求其中的数字的平均数(筛选+字符转换)

题目描述
输入一串以'.'为结束的字符串,筛选出其中的数字字符并转换,然后求这些数字的平均数。
输入
输入一串以'.'为结束的字符串
输出
一行,一个保留两位小数的浮点数
样例输入 Copy
123#45.
样例输出 Copy
3.00

#include<stdio.h>
int main()
{
    char ch;
    int digit=0;
    double sum=0;
    while((ch=getchar())!='.')
    {
        if(ch>='0'&&ch<='9'){digit++;sum+=(ch-'0');}
    }
    printf("%.2lf",sum/digit);
 } 

img


修改:

#include <iostream>
using namespace std;
#include<stdio.h>
int main()
{
    char ch;
    int digit=0;
    double sum=0;
    cin>>ch;
    while(ch!='.')
    {
        if(ch>='0'&&ch<='9'){
            digit++;
            sum+=(ch-'0');
         }
         cin>>ch;
    }
    printf("%.2lf",sum/digit);
 } 
#include <iostream>
#include <iterator>
#include <ranges>
#include <iomanip>

using namespace std;

int main()
{
    double sum = 0.0;
    int n = 0;
    for (auto c : ranges::subrange(istream_iterator<char>(cin), istream_iterator<char>()))
    {
        if (c == '.')
            break;
        if (isdigit(c))
        {
            sum += c - '0';
            n++;
        }
    }
    cout << fixed << setprecision(2) << sum / n << endl;
    return 0;
}
$ g++ -Wall -std=c++20 main.cpp
$ ./a.out
123#45.
3.00