二级 · 程序改错:= 和 ==
下面程序的功能是:判断 x 是否等于 5、是否不等于 0,x 为 3 时输出: 0 1 程序中有两处错误(都能通过编译)。请改正 found 下面一行中的错误,不要改动其他地方,也不要增删行。
二级 · 选择:连等、逗号和短路
下面的程序运行后,输出的 x 是【0】,b 是【1】。 #include <stdio.h> int main(void) { int a, b, c, x; a = b = c = 1; x = (a
作品:你是在闰年出生的吗
输入你的生日(8 位数,如 20040229),输出两行:出生那年是不是闰年(1 / 0),以及你是不是 2 月 29 日出生——那可是 4 年才过一次生日! 闰年出生:1 四年一次的生日:1 (上面是 20040229 的结果。)程序里闰
岔路口只走一边
x = 7:先算条件,成立走左边(if),不成立走右边(else) x % 2 == 0 ? 成立 ↙ ↘ 不成立 printf("偶数") printf("奇数") 7 % 2 是 1,条件不成立
if 后面多了一个分号
x 是 -3,不是正数,可程序还是打印了「正数」。 原因:if (x > 0) 后面紧跟着一个分号,这个分号自己就是一句空语句,if 管住的是它;下面大括号括起来的复合语句和 if 没关系了,每次都执行。找到那个多余的分号,删掉它,让
母题:两个数取大的
输入两个整数,输出较大的那个。例如输入 3 8,输出: 8 程序的比较写反了。
变式 1:绝对值(只有 if)
输入一个整数 x,输出它的绝对值。只用一个 if(不需要 else):x 是负数时把它取反。例如输入 -7,输出: 7
变式 2:负数的奇偶
输入一个整数(可能是负数),是偶数输出 偶数,否则输出 奇数。例如输入 -3,输出: 奇数 程序用 x % 2 == 1 判断奇数,正数都对,负数出错了。运行一下,看画布上 x % 2 是几。 代码里以 @youci 开头的 printf
变式 3:三个数里最大的
输入三个整数,输出最大的那个。思路:先假设 a 最大,再拿 b、c 各比一次,谁更大就换成谁。例如输入 3 9 5,输出: 9 程序漏了一次比较。
变式 4:从小到大输出两个数
输入两个整数,从小到大输出。如果 a 比 b 大,就把它们交换。例如输入 8 3,输出: 3 8 程序写了交换的三句,但输入 1 2 时结果反而错了。