![]() |
#2
rjsp2021-05-15 21:53
很多逻辑错误(而非语法错误),……,给你一个参考吧
![]() #include <iostream> using namespace std; int main( void ) { double buf[10]; size_t n = 0; for( ; n!=size(buf) && cin>>buf[n]; ++n ); if( n == 0 ) { cout << "There is no data." << endl; return 0; } double average = 0; for( size_t i=0; i!=n; ++i ) average += buf[i]; average /= n; cout << "Average: " << average << endl; size_t count = 0; for( size_t i=0; i!=n; ++i ) count += buf[i]>average; cout << "Number(beyond average): " << count << endl; } 输入 1 2 3 4 5 6 7 8 9 10 输出 Average: 5.5 Number(beyond average): 5 输入 1 2 3 4 5 a 输出 Average: 3 Number(beyond average): 2 当然,正常的程序员不会去重复造轮子,所以工作中代码常常这么写 ![]() #include <iostream> #include <iterator> #include <algorithm> #include <numeric> using namespace std; int main( void ) { double buf[10]; size_t n = 0; for( ; n!=size(buf) && cin>>buf[n]; ++n ); if( n == 0 ) { cout << "There is no data." << endl; return 0; } double average = accumulate( buf, buf+n, 0.0 ) / n; cout << "Average: " << average << endl; size_t count = count_if( buf, buf+n, [average](auto x){return x>average;} ); cout << "Number(beyond average): " << count << endl; } |
编写一个程序,最多将10 个donation值读入到一个double数组中。如果程序遇到非数字输入时将结束输入,并报告这些数的平均值以及数组中有多少个数字大于平均值
代码1:#include<iostream>
#include<cctype>
const int SIZE = 10;
int main()
{
using namespace std;
double* pd = new double[SIZE];
int i = 0;
while (i < SIZE)
{
cin >> pd[i];
if (!isdigit(pd[i]))
break;
i++;
}
if (i == 0)
cout << "There is no data." << endl;
else
{
double average, sum;
int count = 0;
sum = 0;
for (int i = 0; i < SIZE; i++)
sum += pd[i];
average = sum / SIZE;
cout << "Average: " << float(average) << endl;
for (int i = 0; i < SIZE; i++)
{
if (average < pd[i])
count++;
}
cout << "Number(beyond average): " << count << endl;
}
delete[] pd;
return 0;
}
代码2:
#include<iostream>
#include<cctype>
const int SIZE = 10;
int main()
{
using namespace std;
double* pd = new double[SIZE];
int i = 0;
while (i < SIZE)
{
cin >> pd[i];
i++;
}
if (i == 0)
cout << "There is no data." << endl;
else
{
double average, sum;
int count = 0;
sum = 0;
for (int i = 0; i < SIZE; i++)
sum += pd[i];
average = sum / SIZE;
cout << "Average: " << float(average) << endl;
for (int i = 0; i < SIZE; i++)
{
if (average < pd[i])
count++;
}
cout << "Number(beyond average): " << count << endl;
}
delete[] pd;
return 0;
}
若删除代码1中
if (!isdigit(pd[i]))
break;
这个程序就可以正确运行;
但是我想通过
if (!isdigit(pd[i]))
break;
来判断输入的是否为数字。
我代码1 错在哪了?