題1、
以下代碼的輸出結果是什麼?【中國著名金融企業J銀行2008年面試題】
[cpp]
#include <iostream>
#include <string>
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 <iostream>
#include <string>
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 <iostream>
#include <string>
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 <iostream>
#include <string>
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