瑞星卡卡安全论坛技术交流区系统软件 C语言一道计算题的问题

1   1  /  1  页   跳转

C语言一道计算题的问题

C语言一道计算题的问题

main()
{
int a,b;
for(a=0;a<=10;a++)
{
  if(a*2+(10-a)*3==26)
  {
    b=10-a;
    printf("%d %d",a,b);
    }
}
getch();
}
运算结果;a=4,b=6(是正确的结果_


main()
{
int a,b;
for(a=0;a<=10;a++)
{
  if(a*2+(10-a)*3==26)
  {
    b=10-a;
  }
  printf("%d %d",a,b);
}
getch();
}
运算结果不符合预期的.


本人好奇,想试试printf()语句的一些作用范围.
于是在该程序中将printf()做了变化.为什么结果不同?
有没有人知道其中的调试过程,就是各个数据值在各语句中的变化情况?
请详细讲给我听.因为我在写循环和选择语句时应该把printf()语句的位置写错.导致很多错误发生.







最后编辑2006-10-05 16:36:25
分享到:
gototop
 

你想追踪变量数据的话进入后按Ctrl+F7然后输入你要看的变量名~然后按F7或F8跟踪~
gototop
 

这道题一个的printf语句是在for语句中,一个是在循环当中~
当然会有不同啦~
你自己按程序的执行顺序去分析就知道了
gototop
 

第一个输出的是如何a*2+(10-a)*3==26时的a,b。第二个输出的a则不是符合a*2+(10-a)*3==26时的,而是循环结束以后的a,结果应该是a=11,b=6吧


其实只需要了解数据在计算机中的表示形式,了解这种问题的解题思路就不太困难了(尽管有时候要解出来可能还有一些问题,因为你毕竟不是计算机)。有时间,认真看看谭教授的书,在这个问题上,它的书介绍的还算详细


gototop
 

深奥不懂
gototop
 

第一个程序,printf()在if()条件语句内,只有当if里面的条件成立时才print();
第二个程序,print()在不if()语句里面,在外面FOR循环内.也就是,无论IF条件成不成立,每一个循环都要做printf()语句,产生多个结果.同时第二个程序里面.b没有赋初值,当if不成立时.输出的都是-858993460
gototop
 

好好看一下C语言基础吧
gototop
 
1   1  /  1  页   跳转
页面顶部
Powered by Discuz!NT