注册 登录
编程论坛 C++教室

帮小女子看看C++程序运行结果,急

avator123 发布于 2011-12-31 17:56, 987 次点击
程序代码:
#include "stdio.h"
int f(int i, const int *j,int& k)
{

 if(i%3 == 0 )
     if (*j >= 6 ) k*= i ;
        k+=i;
        k-=i;
     return *j+k ;
}

int main()
{

 int i , j=1, k=2 , m;

 for (i=0;i<10;i++,j*=2) {
   m=f(i,&j,k);
   printf("i=%2d,  j=%2d  ,k=%2d  ,m=%2d.\n",i,j,k,m);
}

return 0 ;

}

//程序运行结果 : i=0, j=1, k=2, m=3  疑问,当i=0时,j为什么不是2 ?(根据j*=2)
9 回复
#2
avator1232011-12-31 21:32
怎么没有人回复啊?在线等呢!
#3
黄昏的王座2011-12-31 22:18
c程序里面没有引用吧。  头文件里加上#include <iostream>   using namespace std;   就行了
#4
avator1232011-12-31 22:22
还没有回答我的问题呢!
#5
fdasfea2012-01-01 07:01
j*=2在第一个循环结束后才执行
#6
kuangdang1782012-01-01 10:28
当i=0时只执行前面两个语句即初值和判断语句,j*=2要i=1时才执行
#7
chanbo2012-01-01 11:45
在for语句中,for(设初始值; 循环终止条件; 更改循环中的变量值)

其中第二个分号之后的“更改循环变量值”的语句是在每次循环结束时被执行的。

所以第一次循环时,i=0,j=1,k=2。循环中m应该被赋值为3(是函数f的返回值)。

在函数f第一次被执行时,i=0它必定不是3的整数倍,j=1它必定是小于6的,所以函数f中的两个if语句都不被执行,故而其返回值是j+k=3。所以m被赋值为3。
#8
笨拙的学鸠2012-01-01 14:15
人妖啊
#9
chanbo2012-01-01 14:47
回复 8楼 笨拙的学鸠
大家都懂,何必声张呢?
#10
nemokina2012-01-04 21:26
回复 9楼 chanbo
1