C语言打印4*4B/A字符图案时代码输出结果不符合预期问题
C语言打印4×4边框字符图案的代码修正
目标输出
需要实现打印的4×4规格图案如下:
BBBB BAAB BAAB BBBB
原有代码逻辑错误
原代码的判断条件存在覆盖不全的问题:
- 原判断逻辑
(i==1&&j>=i)||(i==4&&j<=i)仅能触发第一行全打印B、第四行全打印B的逻辑,第2、3行的所有位置都会进入else分支打印A,完全没有处理第2、3行首尾位置需要打印B的规则,因此输出和预期不符。
正确逻辑与修正代码
图案的规则非常明确:所有边界位置打印B,非边界的内部位置打印A。只要满足以下任意一个条件即为边界位置,打印B:
- 当前行为第1行或第4行
- 当前列为第1列或第4列
其余位置统一打印A即可。
修正后的可运行代码:
#include <stdio.h> int main() { int i, j; for(i = 1; i <= 4; i++) { for(j = 1; j <= 4; j++) { if (i == 1 || i == 4 || j == 1 || j == 4) { printf("%c", 'B'); } else { printf("%c", 'A'); } } printf("\n"); } return 0; }
编译运行上述代码,即可得到符合预期的输出。
内容的提问来源于stack exchange,提问作者Reactoo
相关产品推荐
相关产品推荐

