Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从包含数字和字母的字符串计算平均值?_C++_String_Int_Average - Fatal编程技术网

C++ 如何从包含数字和字母的字符串计算平均值?

C++ 如何从包含数字和字母的字符串计算平均值?,c++,string,int,average,C++,String,Int,Average,该函数应采用字符串参数 string return_average(string x)您添加的是字符代码(很可能是ASCII代码),而不是数值。更改: n+=(int)c; // accumulate character code 致: 注意:如果您尝试在调试器中单步执行代码,问题会立即显现出来,因为n将以大值(49、50、51)而不是预期值(1、2、3)递增。字符使用 n+=(c-'0') 不是n=(int)c是,您正在添加ASCII值,因为从123abc的输出中可以看到它返回

该函数应采用字符串参数


string return_average(string x)您添加的是字符代码(很可能是ASCII代码),而不是数值。更改:

    n+=(int)c;    // accumulate character code
致:

注意:如果您尝试在调试器中单步执行代码,问题会立即显现出来,因为
n
将以大值(49、50、51)而不是预期值(1、2、3)递增。

字符使用 n+=(c-'0')
不是n=(int)c

是,您正在添加ASCII值,因为从123abc的输出中可以看到它返回50=((49+50+51)/3) 记住(int)c将“c”强制转换为其ASCII值 因此,您可以从n中删除48(ASCII值为0)或执行n+=(c-“0”)

    n+=(int)c;    // accumulate character code
    n+=(c - '0'); // convert character to numeric value and accumulate