数组与循环问题1

2014-11-24 01:18:30 · 作者: · 浏览: 6

题1、

以下代码的输出结果是什么?【中国著名金融企业J银行2008年面试题】


[cpp]
#include
#include
using namespace std;
int main()
{
int x = 10;
int y = 10, i;
for(i = 0; x > 8; y = i++)
{
printf("%d,%d,", x--, y);
}
return 0;
}

#include
#include
using namespace std;
int main()
{
int x = 10;
int y = 10, i;
for(i = 0; x > 8; y = i++)
{
printf("%d,%d,", x--, y);
}
return 0;
}A. 10,0,9,1 B. 10,10,9,0C. 10,1,9,2 D. 9,10,8,0
解析:

for循环括号内被两个分号分为3部分:i=0是初始化变量;x > 8是循环条件,也就是只要x>8就执行循环条件;那y = i++是什么呢?在第一次循环时执行了吗?答案是不执行,y = i++实际上是个递增条件,仅在第二次循环开始时才执行。所以结果是10,10,9,0。

面试者务必要搞清楚下面程序和题目的不同:


[cpp]
#include
#include
using namespace std;
int main()
{
int x = 10;
int y = 10, i;
for(i = 10; x > 8;)
{
y = i++;
printf("%d,%d,", x--, y);
}
return 0;
}

#include
#include
using namespace std;
int main()
{
int x = 10;
int y = 10, i;
for(i = 10; x > 8;)
{
y = i++;
printf("%d,%d,", x--, y);
}
return 0;
}与题目不同,y = i++在循环体内,而不作为递增条件,所以在第一次循环就执行了,所以输出结果是10,0,9,1。

答案:B