关于isdigit函数的一个问题
凤梨头头 2014-03-23 03:51:08 C++primer plus课后的一个习题:
编写一个程序,最多将10个donation值读入到一个double数组。程序遇到非数字输入时将结束输入,并报告这些数字的平均值以及数组中有多少个数字大于平均值?
以下是给的答案:
#include <iostream>
#include<cctype>
int main()
{
using namespace std;
double sum=0,average=0;
double num[10];
int i=0,total=0;
double temp;
while(cin>>temp&&i<10&&!isdigit(temp))
//这里我有三个问题,希望大神帮我解答一下:
1、这里使用isdigit()函数判断是否为数字,这个函数不是针对字符的嘛,如果这里用这个函数,而且前面加了个‘!’的话,岂不是意味着不能输入48-57(对应的ASCII码是0-9)了吗?
2、而且为什么这里我输入a的时候,直接终止了程序,刚好满足题意输入非数字时候终止,输入a的话,a非数字,我觉得应该函数判定为假,即isdigit=0,!isdigit=1吗?
3、我明明设的temp是double型变量,不是字符呀,咋会输入字符a时候没有错误呢!
{
num[i]=temp;
sum+=num[i];
++i;
}
if(i!=0)
average=sum/i;
for(int j=0;j<i;++j)
if(num[j]>average)
++total;
cout<<"这些数字的平均值为"<<average<<endl;
cout<<"并且共有"<<total<<"个数字大于平均值。\n";
return 0;
}