小言_互联网的博客

07-if与循环-案例超经典-C语言

365人阅读  评论(0)

本讲将通过几个经典例子来讲解选择与循环嵌套。

选择与选择嵌套

if 与 if嵌套

判断变量a是否在3~10之间。


   
  1. int a = 4;
  2. if (a >  3) {
  3.     if (a <  10) {
  4. printf( "满足条件");
  5. }
  6. }

可以看到,上面程序也可以使用逻辑运算符来简化为:


   
  1. int a =  4;
  2. if (a >  3 && a <  10) {
  3. printf( "满足条件");
  4. }

第二种写法明显更清晰,也更方便处理。所以在开发过程中,要学会合理运用逻辑运算来合并一些没必要的嵌套。

if 与 switch嵌套

用户输入是否是工作日(y/n)与星期几。如果是工作日,则星期一输出“中午吃牛肉面”,星期二输出“中午吃卤肉面”。


   
  1. char isWorkingDay = 0;
  2. int dayOfWeek;
  3. printf( "请输入是否是工作日(y/n), 与星期几:");
  4. scanf( "%c %d", &isWorkingDay, &dayOfWeek);
  5. if (isWorkingDay ==  'y') {
  6. switch (dayOfWeek) {
  7. case 1:
  8. printf( "中午吃牛肉面");
  9. break;
  10. case 2:
  11. printf( "中午吃卤肉面");
  12.             break;
  13. default:
  14. break;
  15. }
  16. }

选择与循环嵌套

对于选择与循环的嵌套结构,主要讲解for循环与if的嵌套。

if 与 for嵌套

输出2000~2100之间的闰年。


   
  1. // 从2000循环到2100,挨着判断是否是闰年
  2. for ( int i =  2000; i <=  2100; i ++) {
  3. // 判断闰年:能被400整除或能被4且不能被100整除的年份
  4.     if ((i %  400 ==  0) || (i %  4 ==  0 && i %  100 !=  0)) {
  5. printf( "%d ", i);
  6. }
  7. }

循环与循环嵌套

循环嵌套主要讲解for循环的嵌套。

输出以下形状


   
  1. ****
  2. ****
  3. ****

   
  1. // 控制行数
  2. for ( int i =  0; i <  3; i ++) {
  3. // 控制列数
  4.     for ( int j =  0; j <  4; j ++) {
  5. printf( "*");
  6. }
  7. // 每一行结束后换行
  8. printf( "\n");
  9. }

输出以下形状


   
  1. *
  2. **
  3. ***
  4. ****

首先分析*与行号的关系:

行号 *个数
0 1
1 2
2 3
3 4

   
  1. // 控制有多少行
  2. for ( int i =  0; i <  4; i ++) {
  3. // 控制每一行都多少*
  4.     for ( int j =  0; j <= i; j ++) {
  5. printf( "*");
  6. }
  7. printf( "\n");
  8. }

输出九九乘法表


   
  1. for ( int i =  1; i <=  9; i ++) {
  2.     for ( int j =  1; j <= i; j ++) {
  3. printf( "%d * %d = %d\t", j, i, i * j);
  4. }
  5. printf( "\n");
  6. }

输出以下形状


   
  1. *
  2. **
  3. ** *
  4. ****

首先分析*与行号的关系:

行号 *个数 空格数
0 1 3
1 2 2
2 3 1
3 4 0

空格数 = 总行数 - 1 - 行号

*数 = 行号 + 1


   
  1. // 控制行数
  2. for ( int i = 0; i < 4; i ++) {
  3. // 控制每行的空格数
  4.     for ( int j =  0; j <  4 -  1 - i; j ++) {
  5. printf( " ");
  6. }
  7. // 控制每行的*数
  8.     for ( int j =  0; j <= i; j ++) {
  9. printf( "*");
  10. }
  11. printf( "\n");
  12. }

输出以下形状


   
  1. 1
  2. 2 3
  3. 4 5 6
  4. 7 8 9 0

分析:这道题同样需要找到行号、空格、数字之间的关系。同时可以看到,数字是从1开始,到0结束的,可以通过取余运算来达到这个效果。


   
  1. // 定义变量number,用于输出连续数字
  2. int number = 1;
  3. // 外层循环控制行数
  4. for ( int i = 0; i < 4; i ++) {
  5. // 控制每一行的空格数
  6.     for ( int j =  0; j <  4 -  1 - i; j ++) {
  7. printf( " ");
  8. }
  9. // 控制每一行输出的数字
  10.     for ( int j =  0; j < i +  1; j ++) {
  11. // 因为最后一个数是0,而不是10,所以对10取余
  12. printf( "%d ", number % 10);
  13. // 每输出一个数,就++
  14. number ++;
  15. }
  16. printf( "\n");
  17. }

《c语言简明教程》

01-C语言的过去与未来

02-Dev C++  安装及使用方法教程

03-C语言的第一个简单实例

04-关键字与标识符-C语言

05-数据类型与常量变量-C语言

06-C语言运算符

IT入门 感谢关注

程序员题库→

程序员用的单词表→

练习地址:www.520mg.com/it

????戳“阅读原文”,get涨薪技能!


转载:https://blog.csdn.net/bigzql/article/details/109474862
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场