C++ 程序运行结束后提示程序已停止工作

附上全部代码,求高手帮忙,谢谢!用的WIN7系统,VC++6.0当输出完perimeter的值后弹出窗口显示XXX.exe已停止工作,请问是程序编写的问题还是计算机的问题... 附上全部代码,求高手帮忙,谢谢!
用的WIN7系统,VC++6.0
当输出完perimeter的值后弹出窗口显示XXX.exe已停止工作,请问是程序编写的问题还是计算机的问题?
#include <stdio.h>

#include <math.h>
int main(void)
{
double a[3],s,area,perimeter;
int i;

printf("Please enter three sides of a triangle in sequence:\n");
for(i=1;i<=3;i++){
scanf("%lf",&a[i]);
}
if((a[1]+a[2]>a[3])&&(a[2]+a[3]>a[1])&&(a[1]+a[3]>a[2])){
s=(a[1]+a[2]+a[3])/2;
area=pow(s*(s-a[1])*(s-a[2])*(s-a[3]),0.5);
perimeter=a[1]+a[2]+a[3];
printf("The area is %.2f\nThe perimeter is %.2f\n",area,perimeter);
}
else{
printf("These sides don't correspond to a valid triangle!\n");
}

return 0;
}
展开
 我来答
ahcc08
2014-11-09 · 知道合伙人软件行家
ahcc08
知道合伙人软件行家
采纳数:11853 获赞数:51941
拥有丰富的软件开发经验。

向TA提问 私信TA
展开全部
#include <stdio.h>

#include <math.h>
int main(void)
{
    double a[3],s,area,perimeter;
    int i;

    printf("Please enter three sides of a triangle in sequence:\n");
    // 数组下标是从0开始的
    // for(i=1;i<=3;i++){
    for(i=0; i<3; i++){
        scanf("%lf",&a[i]);
    }
    //if((a[1]+a[2]>a[3])&&(a[2]+a[3]>a[1])&&(a[1]+a[3]>a[2])){
    //    s=(a[1]+a[2]+a[3])/2;
    //    area=pow(s*(s-a[1])*(s-a[2])*(s-a[3]),0.5);
    //    perimeter=a[1]+a[2]+a[3];
    if((a[0]+a[1]>a[2])&&(a[1]+a[2]>a[0])&&(a[0]+a[2]>a[1])){
        s=(a[1]+a[2]+a[0])/2;
        area=pow(s*(s-a[1])*(s-a[2])*(s-a[0]),0.5);
        perimeter=a[1]+a[2]+a[0];
        printf("The area is %.2f\nThe perimeter is %.2f\n",area,perimeter);
    }
    else{
        printf("These sides don't correspond to a valid triangle!\n");
    }

    return 0;
}

运行结果:

追问
谢谢!不会再报错了!可不可以请问一下这是什么原理?
追答
我不是写了注释吗?就怕你不理解,特意写的。
数组下标是从零开始的,而不是1开始的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式