上期回顾:
分支
if else switch 三目运算符

格式:
if(条件)
{语句1;}
else
{语句2;}

switch (变量)
{
default:
break;
case 常量1:语句1 ;break;
case 常量2:语句2 ;break;
...
}

条件?语句1:语句2

三大循环 四大跳转语句
1、循环
while    for    do while

 

//最简单的 while
if(饿) 吃;
while(饿) 吃; //循环 如果饿就吃 吃到不饿为止

1.1 while循环

格式:
while(条件) // 条件可以使数字 0为假 非零为真 先判断条件 条件满足执行语句
{
语句; //循环体
} //一直执行循环体 直到条件不满足为止

while(1)  条件恒成立 一直执行------>死循环  可以用来替换getchar 防止闪屏

 举个栗子~

再倒着打印出10-1 只需改一下条件就可以

 

1.2、for循环 (用的比较多)
格式:
for(初始化语句1;条件2;自增/自减3)
{
循环体4;
}
1刚刚进入for的时候 执行一次
判断条件2 条件为真的时候 执行4 为假结束循环
执行4之后 执行3 然后判断条件
1243 243 243...

for(;;) //死循环 条件默认为真
{}

举个栗子~

 

 

1.3、do while
格式:
do
{
循环体;
}while(条件);
//先执行一次循环体 然后判断条件 条件为真 继续循环 为假 退出循环

 for和while可以相互转换 先判断条件 再执行循环体 循环体可能一次都不执行

do while 先执行再判断 循环体至少会执行一次

 

举个栗子~

 

 

 

2、循环嵌套

    for循环是最简单的
    循环里面还有循环 一般只有两次
    99乘法表
    1*1=1
    2*2=4
    i*j=(i*j)
    printf(“%d%d=%d”,i,j,i*j);

 

举个栗子~ 99乘法表

但是打印出的结果并不美观 我们可以改一下

这样就看起来好看多了

 

这样是不是就更好看了呢

 也可以用while改写

 

四大跳转
goto 无条件跳转语句 可以从任意地方跳转到任意地方 (很多公司不允许使用) 代码紊乱 维护困难
break 跳出最近的循环和switch
while(1)
{
  if(条件) (break;)//在循环中和if搭配使用 提前跳出循环
}
continue 跳过本轮循环 进入下一次循环
return 用于跳出该函数 (如果跳出main函数的时候 程序结束)

exit(0) //stdlib.h里面
在任意地方使用 都是跳出程序(程序结束)

主函数
int main()
(
  return 0;//表示程序正确结束 其他都表示非正常结束
)

 

对continue举个栗子~

 

 当我们改写为while语句时

 

他会变成死循环 一直打印123 对continue后面的语句并没有执行

 

要想程序可以正常运行 将++ i放到continue前面就可以了

 

 

下年举一个打印图形的栗子

用 * 打印出五角星

 

 

练习 测试的代码如下:

  1 /*
  2 上期回顾:
  3 分支
  4 if else switch 三目运算符
  5 
  6 格式:
  7 if(条件)
  8 {语句1;}
  9 else
 10 {语句2;}
 11 
 12 switch (变量)
 13 {
 14 default:
 15 break;
 16 case 常量1:语句1 ;break;
 17 case 常量2:语句2 ;break;
 18 ...
 19 }
 20 
 21 条件?语句1:语句2
 22 
 23 三大循环  四大跳转语句
 24 1、循环
 25 while  for  do while
 26 
 27 //最简单的 while
 28 if(饿) 吃;
 29 while(饿) 吃; //循环 如果饿就吃 吃到不饿为止
 30 
 31 格式:
 32 while(条件)  // 条件可以使数字 0为假 非零为真  先判断条件 条件满足执行语句
 33 {
 34   语句; //循环体
 35 } //一直执行循环体 直到条件不满足为止
 36 while(1)  条件恒成立 一直执行------>死循环
 37 
 38 2、for循环 (用的比较多)
 39 格式:
 40 for(初始化语句1;条件2;自增/自减3)
 41 {
 42    循环体4;
 43 }
 44    1刚刚进入for的时候  执行一次
 45    判断条件2  条件为真的时候 执行4 为假结束循环
 46    执行4之后 执行3  然后判断条件
 47    1243 243 243...
 48 
 49 for(;;)  //死循环 条件默认为真
 50 {}
 51 
 52 3、do while
 53 格式:
 54 do
 55 {
 56 循环体;
 57 }while(条件);
 58 //先执行一次循环体  然后判断条件 条件为真  继续循环  为假 退出循环
 59 
 60 
 61 for和while可以相互转换 先判断条件 再执行循环体  循环体可能一次都不执行
 62 do while 先执行再判断  循环体至少会执行一次
 63 
 64 
 65 
 66 循环嵌套
 67   for循环是最简单的
 68   循环里面还有循环 一般只有两次
 69   99乘法表
 70   1*1=1
 71   2*2=4
 72   i*j=(i*j)
 73   printf(“%d%d=%d”,i,j,i*j);
 74 
 75 
 76 四大跳转
 77   goto      无条件跳转语句 可以从任意地方跳转到任意地方 (很多公司不允许使用) 代码紊乱 维护困难
 78   break     跳出最近的循环和switch
 79            while(1)
 80            {
 81              if(条件) (break;)//在循环中和if搭配使用 提前跳出循环
 82            }
 83   continue 跳过本轮循环 进入下一次循环
 84   return   用于跳出该函数  (如果跳出main函数的时候 程序结束)
 85 
 86   exit(0)  //stdlib.h里面
 87   在任意地方使用 都是跳出程序(程序结束)
 88 
 89   主函数
 90   int main()
 91   (
 92   return 0;//表示程序正确结束 其他都表示非正常结束
 93   )
 94 
 95 
 96 */
 97 
 98 
 99 
100 
101 
102 
103 
104 
105 
106 
107 
108 
109 
110 
111 
112 
113 
114 
115 
116 
117 
118 #include<stdio.h>
119 #include<stdlib.h>
120 int main()
121 {
122 
123 /*
124     //举个栗子~ 打印出0-9
125     int i = 10;
126     while (i>0)
127     {
128         printf("%d\t",i); // \t 是制表符 相当于四个空格
129         i--;
130     }
131 */
132 
133 /*
134     //举个栗子~  打印0-9
135     for (int i = 1; i < 10; i++)
136     {
137         printf("%d\t",i);
138     }
139 
140     或者
141     for(int i=1;j<10;printf("%d\t",i),++i); //不推荐
142 
143 */
144 
145 /*
146     //举个栗子~
147 
148     int j = 0;
149     do
150     {
151         printf("%d\t",j);
152         ++j;
153     } while (j < 10);
154 */    
155 
156 /*
157     //举个栗子~ 99乘法表
158     
159     for (int i = 1; i < 10; ++i)
160     {
161         for (int j = 1; j <= i; ++j)//内圈循环一轮后 外圈循环一次
162         {
163             printf("%d*%d=%d\t",j,i,i*j);//总共能执行81次
164         }
165         printf("\n");
166     }
167 */    
168 
169 /* 
170     //举个栗子~ 用while改写99乘法表
171     int i = 1, j;
172     while (i<10)
173     {
174         j = 1;//while 循环开始前 j初始化
175         while (j <= i)
176         {
177             printf("%d*%d=%d\t",j,i,i*j);
178             ++j;
179         }
180         printf("\n");
181         ++i;
182     }
183 */
184 
185 /* 
186     //举个栗子~ 打印10次 12345
187     for (int i = 0; i < 10; ++i)
188     {
189         printf("1");
190         printf("2");
191         printf("3");
192         if (i == 5) continue;
193         printf("4");
194         printf("5\n");
195     }
196 
197     //改写为while
198     int i = 0;//给循环设置初始条件
199     while(i<10)
200     {
201         printf("1");
202         printf("2");
203         printf("3");++i;
204         if (i == 5) continue;
205         printf("4");
206         printf("5\n"); 
207         
208     }
209 */
210 
211 
212 
213     //栗子~ 打印五角星
214 /*
215               *
216              ***
217        ***************
218           *********
219            *** ***
220           *        *
221 
222 */
223 
224     for (int i = 0; i <= 3; ++i)//打印三行
225     {
226         //先打印7-i个空格
227         for (int j = 0; j < 7 - i; ++j) printf(" ");
228         //然后打印2*i-1个*
229         for (int j = 0; j < 2 * i - 1; ++j) printf("*");
230         printf("\n");
231     }
232     for (int i = 1; i <= 3; ++i)//打印三行
233     {
234         //先打印i-1个空格
235         for (int j = 0; j <i-1; ++j) printf(" ");
236        //打印 1 4-2*i个*
237         for (int j = 0; j < 15-2*i; ++j) printf("*");
238         printf("\n");
239     }
240     for (int i = 1; i <= 3; ++i)//打印三行
241     {
242         //先打印空格
243         for (int j = 0; j < 4 - i; ++j) printf(" ");
244         for (int j = 0; j < 4 - i; ++j) printf("*");
245         
246         //空格个数 1 5 9  4*i-3
247         for (int j = 0; j < 4 * i - 3; ++j) printf(" ");
248         for (int j = 0; j < 4 - i; ++j) printf("*");
249         printf("\n");
250     }
251     system("pause");
252     return 0;//表示跳出主函数
253 }

 

 

2018-06-18  21:29:56