当前位置: 代码迷 >> C语言 >> [求助]本人是初学+自学,写个极简单的程序不知道错在那里?
  详细解决方案

[求助]本人是初学+自学,写个极简单的程序不知道错在那里?

热度:109   发布时间:2006-07-29 12:53:44.0
[求助]本人是初学+自学,写个极简单的程序不知道错在那里?

想编一个任意两个数字间的乘积?

main()
{
int a,b,c;
scanf("%d,%d",&a,&c);
b=a;
loop: if(b<=c)
{
b=b+1;
a=a*b;
goto loop;
}
else
printf("%d\n",a);
}

结果我输入了1,3运算结果是24!为什么会是这个结果?那里有错误呢??
由于是自学,没法找人问那里错那里对,所以谁能帮我看下?解读下谢谢拉!!!

搜索更多相关的解决方案: 自学  初学  

----------------解决方案--------------------------------------------------------

是24啊!~b=2 a=2

b=3 a=6

b=4 a=24


----------------解决方案--------------------------------------------------------

1*2*3*4
你说等于多少.
loop: if(b<=c)
{
b=b+1;
a=a*b;
goto loop;
不要这样写循环语句


----------------解决方案--------------------------------------------------------
写程序的时候最好不要用goto语句,这个地方很容易出错!
----------------解决方案--------------------------------------------------------

但是loop: if(b<=c)
{
b=b+1;
a=a*b;
b<=c后就不在执行if下面的语句了呀!我输入1,3
也就是说1是a,3是c 一但b+到4就不执行了呀
应该就显示a的值了?


----------------解决方案--------------------------------------------------------
以下是引用gx962144在2006-7-30 18:24:47的发言:

但是loop: if(b<=c)
{
b=b+1;
a=a*b;
b<=c后就不在执行if下面的语句了呀!我输入1,3
也就是说1是a,3是c 一但b+到4就不执行了呀
应该就显示a的值了?

楼主书还没看到循环语句吧?我刚学的时候也和你一样,用goto语句来代替循环,呵呵。
您大概忘了,您的b+=1是放到if中去的,也就是说,
一开始:b=a=1;
第一次执行if(b<=c)条件成立,执行if()里面的语句,b=2,a=2;
第二次执行if(b<=c)条件成立,执行if()里面的语句,b=3,a=6;
第三次执行if(b<=c)条件成立(此时b还等于3,还没执行里面的语句),执行if()里面的语句,b=4,a=24;
这时if(b<=c)条件才不成立,而a值已经是24了。这下您知道该怎么改了?


----------------解决方案--------------------------------------------------------

哦~~~!!明白了!!呵呵我刚学!就学了个scanf和frintf和int和main(),语句就看了个goto呵呵!谢谢soft_wind.
这样改吧
main()
{
int a,b,c;
scanf("%d,%d",&a,&c);
b=a;
loop: if(b<=c-1)
{
b=b+1;
a=a*b;
goto loop;
}
else
printf("%d\n",a);
}
谢谢大家的帮助!以后有问题还来请教大家啊!因为是自学!可能很多不懂的!望大家看见低级可笑的问题多多
见凉


----------------解决方案--------------------------------------------------------
是不是还可以这样改

main()
{
int a,b,c;
scanf("%d,%d",&a,&c);
b=a;
main()
{
int a,b,c;
scanf("%d,%d",&a,&c);
b=a;
loop: b=b+1
if(b<=c)
{
a=a*b;
goto loop;
}
else
printf("%d\n",a);
}
抱歉循环语句还只会这个!所以又用上了
----------------解决方案--------------------------------------------------------
不会!
----------------解决方案--------------------------------------------------------
两个主函数

main()
{
int a,b,c;
scanf("%d,%d",&a,&c);
b=a;
a=1;
loop:
if(b<=c)
a=a*b;
b=b+1;
goto loop;
printf("%d\n",a);
}

----------------解决方案--------------------------------------------------------
  相关解决方案