问题描述
- 为什么将sum和c类型变成int型就报错了
-
#include
using namespace std;
int main()
{
int a,c=-1;
double avg,sum=1.0;
cout << "请输入要统计的数字:";
do{
cin >> a;
c++;
sum = sum + a;
avg = sum / c;
if (a==0)
break;
} while (1);
const int d=c;
cout << "您输入了" <<c<< "个数,平均值为:" << avg << endl;
return 0;
}
解决方案
当sum为double类型时,avg = sum / c; 表达式中编译器会自动把c转换成double类型,double型的c=0时,其实只是约等于0;
而sum为int时,c不会转换,c=0就是0,除数为0当然就会报错 。
解决方案二:
double avg,sum=1.0,c=1.0;//注意sum也要初始化,是不是把c写下来了,但sum没有初始化
解决方案三:
报错,具体是什么错呢?所有局部变量最好都初始化。
解决方案四:
用的什么编译器?吧编译器报的错误帖出来
解决方案五:
因为初始化c=-1,当 第一次 c++ 后,c变为0,avg = sum / c; 除数为0,就出错了。
解决方案六:
avg = sum / c; 这有问题吧, 不能除0吧, -1+1==0
解决方案七:
定义的a和c为整形,sum为双精度实型,过程中无法自动转换,需要强制转换一下。
解决方案八:
int a,c=-1;
double avg,sum=1.0;
c=-1;
cout << "请输入要统计的数字:";
do{
cin >> a;
c++; //这里成了0
sum = sum + a;
avg = sum / c; //除零错误啊
时间: 2024-09-10 04:12:07