一、开关语句

switch(n)       //n可以是数值、表达式,运算结果必须是整型
{case val:       //必须是常量,如果val等于n,则打开开关...;break;          //关闭执行开关,switch中不能与continue配合使用//如果所有的case后面都有break,就形成了多分支结构default:       //如果所有的case都没有匹配成功,则打开default执行开关,而且放在任何位置都一定会执行...;break;       //a ... b 表示一段范围,但是不推荐使用
}练习1:输入一个月份,判断季节
#include<stdio.h>int main(int argc,const char* argv[])
{int mon;printf("请输入一个月份");scanf("%d",&mon);if(mon<1 || mon>12){printf("输入错误");}else{switch(mon/3){case 1:printf("春天");break;case 2:printf("夏天");break;case 3:printf("秋天");break;default:printf("冬天");break;}}return 0;
}
练习2:输入一个月份,忽略润平年问题,判断该月多少天
#include<stdio.h>int main(int argc,const char* argv[])
{char mon;printf("请输入月份");scanf("%hhd",&mon);if(mon<1 || mon>12){printf("输入错误");    }else{switch(mon){case 2:printf("该月28天");break;case 4:case 6:case 9:case 11:printf("该月30天");break;default:printf("该月31天");break;}}return 0;
}

二、循环语句

循环是一种让一段代码反复执行,从而达到你想要的结果
for是哟中比较灵活而且危险(相比较其他循环)的一种循环
一般使用一个变量来引导这个循环的运行,这个变量叫做循环变量i(index 索引)
for([1];[2];[3])
{[4];
}
[1] 给循环变量赋值,C99可以再次定义循环变量
[2] 判断循环变量是否达到边界
[4] 被反复执行的代码语句,也叫做循环体
[3] 改变循环变量,防止出现死循环,一般对循环体变量进行自加或自减
[2]...[4]...[3]...大括号问题:1、如果循环体只有一行代码,大括号可以省略,但不利于扩展,一般商业代码都要求大括号不能省略。2、建议上下对齐(方便查看是否缺少大括号)for循环的多种循环:for(;;)
{//死循环
}int i = 0;
for(;i<10;i++)
{}for(int i=0;i<10;)
{printf("---");i++;
}while语句:while(条件) //当条件为真执行循环体,为假时结束{//循环体}
while循环语句相当于for循环语句的精简版本
for循环负责明确知道循环次数的问题
while循环负责只知道结束条件而不确定循环次数的问题do while语句
do{//循环体
}while(执行条件);  //分号不能少
先执行循环体语句,在判断循环条件,该循环语句至少执行一次
适合先干活,后检查的特殊情况,例如:输入密码,文件读写循环嵌套:循环语句中包含了循环语句外层循环执行一次,内层循环执行全部练习3:计算出所有3位水仙花数
#include<stdio.h>int main(int argc,const char* argv[])
{int num;int i;int a,b,c;for(i=100;i<1000;i++){   a=i/100;b=i/10%10;c=i%10;num=a*a*a+b*b*b+c*c*c;if(i == num){printf("%d ",num);    }}return 0;
}
练习4:输入一个正整数,判断是否是素数
#include<stdio.h>int main(int argc,const char* argv[])
{int i;int num;int k=2;printf("请输入一个数");scanf("%d",&num);if(num<0){printf("输入错误");return -1;}for(i=2;i<(num/2);i++){if(0== num % i){k++;    }}if(2==k){printf("是素数");   }else{printf("不是素数"); }return 0;
}
练习5:输入一个整数,分解显示
#include<stdio.h>int main(int argc,const char* argv[])
{int a[14];int num,num_0,k=0;int i;printf("请输入一个整数");scanf("%d",&num);num_0=num;while(0 != num){a[k]=num%10;num /= 10;k++;}if(num_0<0){printf("- ");for(i=k-1;i>=0;i--){printf("%d ",0-a[i]);    }}else{for(i=k-1;i>=0;i--){printf("%d ",a[i]);   }}return 0;
}
练习6:输入一个正整数,判断是否是回文数
#include<stdio.h>int main(int argc,const char* argv[])
{int num,num_0=0,key;printf("请输入一个正整数");scanf("%d",&num);key=num;while(0 != key){num_0=num_0*10+key%10;key /= 10;}if(num==num_0){printf("是回文数");  }else{printf("不是回文数");}return 0;
}

三、跳转语句

goto 可以在函数内任意跳转
它可能会破坏已经设计好的分支或者循环语句,因此绝大多数公司都是禁用的。
但是它他别适合驱动编程中的异常处理。标签名:...goto 标签名;练习7:不使用循环语句计算N的阶乘break   1、在switch语句中用于关闭执行开关2、在循环语句中,用于跳出循环,只能跳出1层continue结束本次循环,进入下一次循环return1、返回一个数据给调用者2、结束函数的执行

练习8:不使用循环语句,计算出前N项的斐波那契数列
1 1 2 3 5 8 13

#include<stdio.h>int main(int argc,const char* argv[])
{int N;int key,num=1,ret=1;printf("请输入N");scanf("%d",&N);if(N<=2){int i=N;
loop1:printf("1 ");i--;if(i>0){goto loop1; }return 0;}else{printf("1 1 ");       N -= 2;}
loop2:key=num;num=num+ret;ret=key;N--;printf("%d ",num);if(N>0){goto loop2;    }
}

作业:

1、打印99乘法表
#include<stdio.h>int main(int argc,const char* argv[])
{int i,j;for(i=1;i<10;i++){for(j=1;j<=i;j++){printf("%d*%d=%2d  ",i,j,i*j); }printf(" \n");}return 0;
}
2、百鸡百钱问题  公鸡5  母鸡3   3小鸡1
#include<stdio.h>int main(int argc,const char* argv[])
{int i,j,k;for(i=0;i<=20;i++){for(j=0;j<=(100-5*i);j++){k=100-5*i-3*j;if(100 == i+j+3*k){printf("公鸡%d只,母鸡%d只,小鸡%d只\n",i,j,3*k);  }}}return 0;
}
3、计算100~1000所有素数
#include<stdio.h>int main(int argc,const char* argv[])
{int i,j,key=0;for(i=100;i<=1000;i++){key=0;for(j=2;j<=i/2;j++){if(0 == i%j){key++; }}if(0 == key){printf("%d ",i); }}return 0;
}
4、输入一个日期(yyyy-mm-d)计算公元1年到日期为止过了多少天time(NULL) 获取1970-1-1 0秒 到运行此函数为止过了多少秒srand(time(NULL));rand() 随机数,伪随机
#include<stdio.h>int main(int argc,const char* argv[])
{int year,month,day,i,daymax;int time=0;printf("请输入日期(year-month-day)\n");scanf("%d%d%d",&year,&month,&day);if(month < 1 || month>12){printf("输入有误");return -1;}else{switch(month){case 2:daymax=28;break;case 4:case 6:case 9:case 11:daymax=30;break; default:daymax=31;}if(0 == year%4 && month == 2){daymax++;if(0 == year%100 && 0!= year%400){daymax--;}}if(day > daymax || day<1){printf("输入有误,日最大为%d",daymax);return -2;}}time += (year-1)*365;for(i=1;i<year;i++){if(0 == i%4 && 0 != i%100 || 0 == i%400){time++;}}for(i=1;i<month;i++){time += 31;switch(i){case 2:time -= 3;break;case 4:case 6:case 9:case 11:time -=1;break; }}if(0 == year%4 && 0 != year%100 || 0 == year%400){time += 1;}time += day-1;printf("过了%d天",time);return 0;
}
5、显示平行四边形,每个printf只能输出一个符号
#include<stdio.h>int main(int argc,const char* argv[])
{int i,j,k,l=9;for(i=9;i>=0;i--){for(j=i;j>=0;j--){printf(" ");}for(k=0;k<10;k++){printf("*");}printf("\n");}return 0;
}

学习笔记4-C语言-开关、循环、跳转相关推荐

  1. [R语言学习笔记1] R语言for循环的使用

    学习R语言的过程中,后期逐渐就会用循环语句来减少自己的重复工作.所以了解for循环,是必备技能之一. R语言中的for循环结构是: for (循环变量 in 序列向量){表达式1表达式2...} 要注 ...

  2. 游戏开发学习笔记——lua脚本语言——安装、汉化与小测试(解决lua运行代码乱码问题)

    游戏开发学习笔记--lua脚本语言--安装.汉化与小测试 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: Lua 是一种轻量小巧的脚本语言,用 ...

  3. MATLAB学习笔记(一)常值函数与跳变函数的绘制

    MATLAB学习笔记(一)常值函数与跳变函数的绘制 1.常值函数 比如,我们要绘 f(x)=5,x∈(0,10)f(x) = 5,x\in\left(0,10\right)f(x)=5,x∈(0,10 ...

  4. 【学习笔记】C++语言程序设计(郑莉):数组、指针与字符串

    [学习笔记]C++语言程序设计(郑莉):数组.指针与字符串 1. 数组 1.1 数组的声明与使用 1.2 数组的存储与初始化 1.3 数组作为函数参数 1.4 对象数组 2. 指针 2.1 内存空间的 ...

  5. 23 DesignPatterns学习笔记:C++语言实现 --- 2.2 Adapter

    23 DesignPatterns学习笔记:C++语言实现 --- 2.2 Adapter 2016-07-22 (www.cnblogs.com/icmzn) 模式理解 1. Adapter 定义 ...

  6. Java快速入门学习笔记9 | Java语言中的方法

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  7. Java快速入门学习笔记8 | Java语言中的数组

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  8. Java快速入门学习笔记7 | Java语言中的类与对象

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  9. Java快速入门学习笔记3 | Java语言中的表达式与操作符

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  10. Java快速入门学习笔记2 | Java语言中的基本类型

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

最新文章

  1. SpringAMQP--WorkQueue模型
  2. 随想录(怎么用source insight阅读kernel代码)
  3. Python中遍历指定目录
  4. python循环语句for 循环十次_python循环语句for的使用方式,又快又好
  5. 一本名不符实的.NET书籍: Game Engine Toolset Development
  6. mybatis和spring jdbc持久层框架事务支持分析
  7. 无线遥控器应用在安防防盗中有怎样作用?
  8. adminlte php,adminLTE 教程 -1 基础
  9. [Python从零到壹] 四十三.图像增强及运算篇之图像点运算和图像灰度化处理
  10. 聊聊运营商对UDP的QoS限制和应对
  11. 管理者该如何思考团队建设
  12. HBase Java API操作数据库
  13. xticklabel 显示下划线_[转载]matlab坐标轴属性及标注
  14. 分号与逗号的区别及举例_顿号、逗号、分号的区别
  15. Django和Vue搭建前后端分离框架
  16. 【ArcGIS教程】专题图制作-人口密度分布图——人口密度分析
  17. EtherCAT DC (学习笔记)
  18. c语言交通违章编程代码,C语言程序设计之交通处罚单管理系统报告(内含代码)...
  19. 简谈FPGA设计中不同设计方法资源消耗对比
  20. 今日头条财经部门后台研发实习生面试

热门文章

  1. python问号表达式_python中的问号表达式
  2. java值参_JAVA赋值和传参理解
  3. AC_CHECK_LIB的工作原理
  4. PJSIP学习笔记——PJSUA层发起呼叫的主要流程
  5. 介绍最全的LVS负载均衡技术
  6. 炸金花比牌规则java_陈陈来给你们炸金花的简易纸牌规则教学与心态指导
  7. 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python字典和集合)
  8. 【转】使用PowerApps快速构建基于主题的轻业务应用 —— 进阶篇
  9. Web Reference和Service Reference的区别
  10. mysql密码安全级别_Mysql数据库的安全性问题释疑