_(:з)∠)_咸_(:з)∠)_鱼_(:з)∠)_本_(:з)∠)_鱼_(:з)∠)_】

 

【知识梳理】

 

   

 

【典例分析】

【第七题】

题目:输出特殊图案,请在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。