C 程序的输出 |设置 56(While 循环)
先决条件:While 循环
Q.1这个程序的输出是什么?
#include
using namespace std;
int main()
{
unsigned int x = 3;
while (x-- >= 0) {
printf("%d ", x);
}
return 0;
}
选项
a) 3 2 1 0
b) 2 1 0 -1
c) 无限循环
d) -65535
Answer : C
解释:这里 x 是一个无符号整数,它永远不会变成负数。因此表达式 x–>=0 将始终为真,因此它是一个无限循环。
Q.2这个程序的输出是什么?
#include
using namespace std;
int main()
{
int x = 3, k;
while (x-- >= 0) {
printf("%d ", x);
}
return 0;
}
选项:-
a) 3 2 1 0
b) 2 1 0 -1
c) 无限循环
d) -65535
Answer: b
解释:这里 x 是一个值为 3 的整数。循环运行直到 x>=0 ; 2, 1, 0 将被打印出来,在 x>=0 之后,条件再次变为真,假之后打印 -1。
Q.3这个程序的输出是什么?
#include
using namespace std;
int main()
{
int x = 0, k;
while (+(+x--) != 0) {
x++;
}
printf("%d ", x);
return 0;
}
选项
一)1
b) 0
c) -1
d) 无限
Answer : C
说明一元 + 是 C++ 中唯一的虚拟运算符。所以它对表达没有影响。
Q.4这个程序的输出是什么?
#include
using namespace std;
int main()
{
int x = -10;
while (x++ != 0)
;
printf("%d ", x);
return 0;
}
选项
一)0
b) 1
c) -1
d) 无限
Answer: b
说明:分号在 while 循环之后。当 x 的值变为 0 时,它从 while 循环中出来。由于 x 上的后增量,打印时 x 的值变为 1。
Q.5这个程序的输出是什么?
#include
using namespace std;
int main()
{
while (1) {
if (printf("%d", printf("%d")))
break;
else
continue;
}
return 0;
}
选项
a) 垃圾值
b) 1
c) 0
d) 错误
Answer : a
说明:内部 printf 执行并打印一些垃圾值。