一.代码练习

1.观察以下代码,判断程序输出什么内容()

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void){
	int x = 3;
	int y = 3;
	switch (x % 2){
	case 1:
		switch (y){
		case 0:
			printf("first");
		case 1:
			printf("second");
		default:
			printf("hello");
		}
	case 2:
		printf("third");
	}
	getchar();
	return 0;
}

A.secondthied

B.hello

C.firstsecond

D.hellothird


答案:D,我们先来分析最外层的switch语句,其语句的表达式为x%2读作x模2,也就是3%2=1,其满足case1的子语句,case1子句中嵌套了一层switch语句,其表达式为 switch(3) ,case子句中只有 0 和 1 不满足条件,所以执行default语句中的内容,输出一个hello,由于外层switch语句中case1子句并未添加break循环终止语句,所以case2子句也会被执行输出一个third,所以最终答案是hellothird,如图所示:

C语言分支与循环(11)--- 课后练习_switch语句


2.写一段代码将三个数字从大到小输出

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void){
	int x, y, z;
	scanf("%d %d %d",&x,&y,&z);
	//目标 变量x存最大值 y次之 z存最小值
	if (x < y){
		int tmp = x;
		x = y;
		y = tmp;
	}
	if (x < z){
		int tmp = x;
		x = z;
		z = tmp;
	}
	if (y < z){
		int tmp = y;
		y = z;
		z = tmp;
	}
	printf("X=%d Y=%d Z=%d\n",x,y,z);
	getchar();
	getchar();
	return 0;
}


3.写一段代码将1-100以内是三的倍数的数字进行输出

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void){
	int i = 1;
while (i<100){
	if (i % 3 == 0){
		printf("%d ",i);
	}
	i++;
}
	getchar();
	return 0;
}

                                                                                2023/7/28

                                                                                      王起舟