【_(:з)∠)_咸_(:з)∠)_鱼_(:з)∠)_本_(:з)∠)_鱼_(:з)∠)_】
【知识梳理】


【典例分析】
【第七题】
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
思路:emmmmmmmmm原理大概就像输出ASCII码对应的字符。
1 #include<stdio.h> 2 3 int main() 4 { 5 char a = 2, b = 12; 6 printf("%c%c%c%c%c\n", b, a, a, a, b); 7 printf("%c%c%c%c%c\n", a, b, a, b, a); 8 printf("%c%c%c%c%c\n", a, a, b, a, a); 9 printf("%c%c%c%c%c\n", a, b, a, b, a); 10 printf("%c%c%c%c%c\n", b, a, a, a, b); 11 12 system("pause>nul"); 13 return 0; 14 }
运行结果:

做题心得:稍稍了解了一下GB2312-1980的汉字编码表,共分为94个区,每个区有94个字符。表示方式大致是“区号-字符位号”。不同默认代码页表示不同结果这个知识点有待进一步了解。
【第八题】
题目:输出9*9口诀。
思路:此题的关键点在于输出下三角矩阵。
要保证第i行在第j=i列截断并且跳出循环。
1 #include <stdio.h> 2 3 int main() 4 { 5 //变量初始化 6 int i = 0; 7 int j = 0; 8 9 //遍历9*9矩阵 10 for (i = 1; i <= 9; i++) 11 { 12 //在矩阵对角线处截断 13 for (j = 1; j <= i; j++) 14 { 15 printf("\t%d×%d=%d", j, i, i*j); 16 } 17 //截断后换行 18 printf("\n"); 19 } 20 21 system("pause>nul"); 22 return 0; 23 }
运行结果:

做题心得:因为口诀的原理其实就是“列行得几”,所以输出的时候先输出列j再输出行i,否则口诀就毁了。
【第九题】
题目:要求输出国际象棋棋盘。
思路:此题和第七题相似之处就是输出字符。
不同之处在于我们可以通过循环来输出。
1 #include <stdio.h> 2 3 int main() 4 { 5 int i = 0; 6 int j = 0; 7 8 for (i = 1; i < 9; i++) 9 { 10 for (j = 1; j < 9; j++) 11 { 12 printf("%c%c", 0xa8, 0x84); 13 } 14 //先换行 15 printf("\n"); 16 //判奇数偶数 17 if (i % 2 != 0) 18 { 19 printf(" "); 20 } 21 } 22 system("pause>nul"); 23 return 0; 24 }
运行结果:

做题心得:连续输出两个黑框会乱码,因缺思厅。
【第十题】
题目:打印楼梯,同时在楼梯上方打印两个笑脸。
思路:欸,这种没有进步感的题目以后就略掉了。
【第十一题】
题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)
思路:兔子数列即是斐波那契数列,直接搞起。
1 #include<stdio.h> 2 3 int main() 4 { 5 int big = 1, small = 1, i; 6 for (i = 1; i <= 20; i++) 7 { 8 //两两推进,因为两月一生 9 printf("%d\n%d\n", small, big); 10 small = big + small; 11 big = big + small; 12 } 13 system("pause>nul"); 14 return 0; 15 }
运行结果:

做题心得:循环题最好写出每一轮的变量值,或者用单步调试。
【第十二题】
题目:判断101到200之间的素数。
思路:按素数定义就行,即不能被除了1和自身外的任何数整除。
1 #include <stdio.h> 2 3 int main() 4 { 5 //判据 6 int judge; 7 for (int i = 101; i < 200; i++) 8 { 9 for (int j = 2; j < i; j++) 10 { 11 judge = 1; 12 13 if (i%j == 0) 14 { 15 judge = 0; 16 break; 17 } 18 } 19 if (judge == 1) 20 { 21 printf("%d是素数\n", i); 22 } 23 } 24 system("pause>nul"); 25 return 0; 26 }
运行结果:

做题心得:判断==和赋值=念法和平时不一样,念着“等于”打出“=”就会出现最头痛的逻辑bug。
浙公网安备 33010602011771号