一.编程题

1.求!打印的次数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>

int main()
{
int k;
int i;
for(i = 0,k = 0;k = 0;k++,i++)
{
k++;
printf("!");
}
system("pause");
return 0;
}

答案:打印0次,因为for循环中的表达式二为k=0结果为假,执行完表达式一后,执行表达式二,表达式二结果为假,故不进入for循环体中

1.2.求!打印的次数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>

int main()
{
int k;
int i;
for(i = 0,k = 0;i==0, k >= 0,;k++,i++)
{
k++;
printf("!");
}
system("pause");
return 0;
}

答案:死循环打印,for循环中的表达式二为逗号表达式,表达式的逻辑结果(真假结果)取决于最后一个逗号后的值,因为k>=0的值为真,所以i==0,k>=0整个表达式的值为真,相当于i==0被悬空了

二.选择题

1.若给定条件表达式 (M)?(a++):(a–) ,则其中表达式 M ( )
A: 和(M==0)等价 B: 和(M==1)等价 C: 和(M!=0)等价 D: 和(M!=1)等价

1
答案:C,假设表达式M的逻辑结果为真(非0的值),则(M=0)整体的逻辑结果也为真;假设表达式M的逻辑结果为假(值为0),则(M!=0)整体的逻辑结果的值也为假,故选C