注册 登录
编程论坛 C语言论坛

为什么出错?

汤姆狗 发布于 2020-10-05 21:54, 852 次点击
只有本站会员才能查看附件,请 登录
2 回复
#2
风过无痕19892020-10-06 01:07
回复 楼主 汤姆狗
程序代码:

# include<stdio.h>
int main()
{
    int a,i,b,c;                // 你的程序 i 后面有一竖杠
    double d;                   // 我的系统不支持变量随用随定义,故移到此;若你系统支持,此句可不预理睬
    scanf ("%d",&a);            // scanf() 中引号后那个不知啥玩艺,不要
    for(i = 1;i <= a; i++)      // 这个循环没有意义,因为循环体内的两个语句都与变量 i 无关
    {
        b = a * a;              // C语言不能将两个语句用逗号隔开
        c = (a + 1) * (a + 1);
    }                           // 循环体结束时不需要分号
    d = 1.00 * b / c;           // 整型除以整型,要强制转换为双精度 double 型,必须得让右侧为 double 型再运算
    printf ("%lf",d);           // double 型数据输出,要用 lf (字母L的小写,不是1)
    return 0;
}
#3
纯蓝之刃2020-10-06 07:05
你这个应该是你编译或debug的时候,上一次运行的窗口没有关闭,导致的文件调用冲突导致的。也就是你编译的时候会更改这个exe执行文件,如果这个文件被打开开了,就不允许写入,这样编译就失败了。
你程序里有几处楼上所说的问题
b = a * a;              
        c = (a + 1) * (a + 1);
语句应该使用分号隔开
d = 1.00 * b / c;
d = (double)b / c;
以上两种方法都可以应该使b或者c变为double类型在进行计算,否则d的值是b/c得到整数后的值在转换的
printf ("%lf",d);
doule类型使用%lf输出,%f是float类型的输出。
1