C 程序的输出 |设置 57(用于循环)
先决条件: for循环
Q.1 这个程序的输出是什么?
#include
using namespace std;
int main()
{
for (5; 2; 2)
printf("Hello\n");
return 0;
}
选项
a) 编译错误
b) 你好
c) 无限循环
d) 以上都不是
ans: c
说明:在条件部分放置一个非零值使其无限。
Q.2 这个程序的输出是什么?
#include
using namespace std;
int main()
{
static int i;
for (i++; ++i; i++) {
printf("%d ", i);
if (i == 6)
break;
}
return 0;
}
选项
选项:
a) 2 4 6
b) 编译错误
c) 垃圾值
d) 没有输出
ans : a
解释:第一次迭代后,程序看起来像 (0, 2, 2)。当 i = 6 时它会中断。
Q.3 这个程序的输出是什么?
#include
using namespace std;
int fun();
int main()
{
for (fun(); fun(); fun()) {
printf("%d ", fun());
}
return 0;
}
int fun()
{
int static num = 10;
return num--;
}
选项
a) 编译错误
b) 无法预测
c) 8 5 2
d) 以上都不是
ans: c
解释 :
At first iteration:
for(10; 9; fun()) //condition true
printf("%d", 8) //8 prints
At second iteration:
for(10; fun(); 7)
for(7; 6 ;fun()) //condition true
printf("%d", 5) //5 prints
At third iteration:
for(7; fun(); 4)
for(4; 3; fun()) //condition true
printf("%d", 2) //2 prints
At fourth iteration:
for(4; fun(); 1)
for(1; 0; fun()) //condition false
Program terminates
Q.4 这个程序的输出是什么?
#include
using namespace std;
int main()
{
for (;;)
printf("%d ", 10);
return 0;
}
选项
a) 编译错误
b) 运行时错误
c) 10
d) 无限循环
ans : d
说明:由于没有提供任何条件,所以循环无限运行。
Q.5 这个程序的输出是什么?
#include
using namespace std;
int main()
{
char i = 0;
for (; i++; printf("%d", i))
;
printf("%d", i);
return 0;
}
选项
一)0
b) 1
c) 无限循环
d) 编译错误
ans: b
说明:以下条件第一次失败,因此循环终止并且 i 的值增加到 1。
for(; 0; printf("%d", i))
Q.6 这个程序的输出是什么?
#include
using namespace std;
int main()
{
int i;
for (i = 0; i < 0, 5; i++)
printf("%d ", i);
return 0;
}
选项a) 错误
b) 1、3
c) 程序永无止境
d) 这些都不是
ans: c
解释 :-
考虑两个条件:
(a)i<0 第一次迭代失败
(b)5 在条件部分使它无限循环,因为它永远不会变成 0。