刚学C语言,编了个小程序,运行的结果和真实的有点差距。

2024-12-27 12:04:07
推荐回答(4个)
回答1:

以0 100为例
if(afor(;a<=b;)
c+=a,a++;
执行以上语句结束循环后,a=b+1>b.又符合了下面的if,导致执行了下面的
if(a>b)
for(;b<=a;b++)
c+=b;
这样的话c就多加了b 与 b+1,即本来是5050,却变成了5050+100+101=5251你的本意应该是两个if只能符合其一吧

修改:用else if

#include
main()
{
int a,b,c=0;
scanf("%d%d",&a,&b);
if(a for(;a<=b;)
c+=a,a++;
else if(a>b) //这里
for(;b<=a;b++)
c+=b;
else if(a==b) //这里
printf("error\n");
printf("c=%d",c);
}

回答2:

#include
main()
{
int a,b,c=0;
scanf("%d%d",&a,&b);
if(a(;a<=b;)/*最后一次循环是a=b,那么a为100,但是循环后它还会自增1*/
c+=a,a++;
/*那么现在a是101,所以会继续执行下面代码也就会出错,得到错误数值*/
if(a>b)
for(;b<=a;b++)
c+=b;
if(a==b)printf("error\n");
printf("c=%d",c);
}
正确代码应该是下面这个
#include
main()
{
int a,b,c=0;
scanf("%d%d",&a,&b);
if(afor(;a<=b;)/*if(); else if() ;else if();是级连式语句,只会执行其实一个判断正确的语句*/
c+=a,a++;
else
if(a>b)
for(;b<=a;b++)
c+=b;
else if(a==b)printf("error\n");
printf("c=%d",c);
}

回答3:

第1个循环,a的值为101,a的值已经大于b所以,遇到第二个if语句时就会进入第二个循环,直到a和b的值相等为止,if语句要和else 语句一起使用。

回答4:

MaRk