目录
(更多题目可以参考之前的文章,本文是易错重点考点)
一、选择题
自增自减问题
1.设x的值为10,表达式++x*--x的结果为( A )
A. 100 B. 110 C. 99 D. 90
解析:
- 在前面执行完
++x
(使得x
变为 11 后又经过--x
变回 10)后,接下来执行乘法运算++x * --x
,就相当于计算10 * 10
,按照乘法运算规则,其结果就是 100。
三目运算符问题
2.以下程序执行结果是( B )
main()
{
int w=1,x=2,y=3,z=4;
w=(w<x)?x:w;
w=(w<y)?y:w;
w=(w<z)?z:w;
printf(“%d”,w);
}
A.2 B.4 C.3 D.1
解析:第一步:分析第一个条件表达式
w=(w<x)?x:w;
- 首先判断
w < x
这个条件,此时w
的值为 1,x
的值为 2,1 < 2
这个条件成立。- 根据条件表达式
(条件)?表达式1:表达式2
的规则,当条件为真时,整个表达式的值取表达式1
的值,在这里就是取x
的值,然后将其赋给w
,所以经过这一步操作后,w
的值变为 2。第二步:分析第二个条件表达式
w=(w<y)?y:w;
- 接着判断
w < y
这个条件,此时w
的值已经变为 2(上一步操作的结果),y
的值为 3,2 < 3
这个条件成立。- 同样根据条件表达式的规则,会取
y
的值(也就是 3)赋给w
,此时w
的值变为 3。第三步:分析第三个条件表达式
w=(w<z)?z:w;
- 再判断
w < z
这个条件,此时w
的值是 3,z
的值为 4,3 < 4
这个条件成立。- 按照条件表达式规则,会取
z
的值(也就是 4)赋给w
,至此,经过这三步条件表达式的操作后,w
的最终值变为 4。最后执行
printf(“%d”,w);
语句,会输出w
的值,也就是 4。所以该程序的执行结果是选项 B 中的 4。
二、编程题
1.冒泡法排序(升序)
#include<stdio.h> // 定义数组长度 #define SIZE 3 int main() { int arr[SIZE]; int i; // 从控制台输入数字到数组 printf("请输入%d个整数:\n", SIZE); for (i = 0; i < SIZE; i++) { scanf("%d", &arr[i]); } int n = SIZE; int h, j, temp; for (h = 0; h < n - 1; h++) { for (j = 0; j < n - h - 1; j++) { if (arr[j] > arr[j + 1]) { // 交换元素 temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } // 输出排序后的数组 printf("排序后的数组为:\n"); for (i = 0; i < SIZE; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
2.输出100以内的素数
#include <stdio.h> int main() { int i, j; printf("1到100之内的素数有:\n"); // 遍历1到100的数字 for (i = 2; i <= 100; i++) { // 假设当前数字i是素数 int isPrime = 1; // 检查i是否能被2到i-1之间的数字整除 for (j = 2; j < i; j++) { if (i % j == 0) { // 如果能被整除,说明不是素数,标记为0 isPrime = 0; break; } } // 如果isPrime为1,说明是素数,输出该数字 if (isPrime == 1) { printf("%d ", i); } } printf("\n"); return 0; }
3. 奇偶数判断
#include <stdio.h> int main() { int num; printf("请输入一个整数: "); scanf("%d", &num); if (num % 2 == 0) { printf("%d 是偶数。\n", num); } else { printf("%d 是奇数。\n", num); } return 0; }