iOS笔记之_C语言流程控制
来源:互联网 发布:windows教育版 编辑:程序博客网 时间:2024/06/05 16:53
顺序结构:默认的流程结构。按照书写顺序执行每一条语句。
选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。
循环结构:在给定条件成立的情况下,反复执行某一段代码。
1.选择结构-if
if的4种结构:
> 1.if的第1种结构
if(条件)
{
语句1;
语句2;
......
}
> 2.if的第2种结构
if(条件1)
{
语句1;
语句2;
......
}
else
{
}
> 3.if的第3种结构
if(条件1)
{
语句1;
语句2;
......
}
else if(条件2)
{
}
else if(条件3)
{
}
else if(条件4)
{
}
else
{
}
> 4.if的第4种结构
if (条件)
语句1;
练习:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
程序代码:
#include<stdio.h>main(){ //定义一个变量i存放金额 long int i; //定义每个金额区间 int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;//提示并接受用户输入数值 printf("请输入金额:\n"); scanf("%ld",&i);//计算每个区间应发放的金额 bonus1=100000*0.1; bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15;//循环判断并调用相关公式计算金额 if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03; else if(i<=1000000) bonus=bonus6+(i-600000)*0.015; else bonus=bonus10+(i-1000000)*0.01;printf("利润是%d,应发放金额为%d",i,bonus);}2.选择结构-switch
switch(表达式)
{ case 数值1:
break;
… default:
break;}
switch没有If灵活。switch只能某个单值。
练习:输入某年某月某日,判断这一天是这一年的第几天?
> 1.分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
> 2.程序代码:
#include<stdio.h>main(){int day,month,year,sum,leap;printf("\n请输入年月日并以逗号隔开:\n");scanf("%d,%d,%d",&year,&month,&day); //先计算某月以前月份的总天数switch(month){ case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:printf("您的输入有误\n"); break; } //再加上某天的天数 sum=sum+day; //判断是不是闰年 if(year%400==0||(year%4==0&&year%100!=0)) leap=1; else leap=0; //如果是闰年且月份大于2,总天数应该加一天 if(leap==1&&month>2) sum++; printf("%d-%d-%d是一年的第%d天。\n",sum);
}
>编译运行结果:
3.循环结构-while和do while
(1)
while (条件)
{
循环体
}
> 运行原理
1.如果一开始条件就不成立,永远不会执行循环体
2.如果条件成立,就会执行一次循环体,执行完毕,再次判断条件是否成立......
break
直接结束整个while循环
continue
结束当前的循环体,进入下一次循环体的执行
(2)
do {
} while(条件);
> while和do-while的区别
1.很多情况下,while和do while可以互换。
2.while特点:如果一开始的条件不成立,永远不会执行循环体。
do while特点:不管一开始的条件是否成立,至少会执行一次循环体。
3.最好使用while
注意:
while循环是一开始条件不成立就永不执行,do while是先执行do再进行条件判断,注意do while后有“
int a = 10;
while (a>0); // 死循环
// 最简单的死循环
while(1);
练习:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
> 1.利用while语句,条件为输入的字符不为'\n'.
#include <stdio.h>int main(){ char c; int letters=0,space=0,digit=0,others=0; printf("请输入一串字符:\n"); while((c=getchar())!='\n') { if((c>='a' && c<='z')||(c>='A' && c<='Z')) letters++; else if(c==' ') space++; else if(c>='0' && c<='9') digit++; else others++; } printf("统计结过为:%d个英文字符,%d个空格,%d个数字,%d个其他字符\n",letters, space,digit,others);}
4.循环结构-for
(1)
for (语句1; 条件; 语句2)
{
循环体
}
语句1:初始化语句
语句2:增量语句(执行完循环体后再执行的语句)
> 1.for一开始就会执行一次语句1(整个for循环只会执行一次)
> 2.判断条件是否成立,如果条件成立,就会执行一次循环体,然后就会执行语句2,再次判断条件是否成立
(2)使用注意
不要随便在for()后面写分号
如果要在循环体中定义新的变量,必须用大括号{}包住
最简单的利用for循环实现死循环:for(;;);
练习:题目:打印出如下图案(菱形)
> 1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
> 2.程序代码:
#include <stdio.h>int main(){//定义三个变量i代表行数,j代表空格数,k代表*数int i,j,k;//先打印前四行for(i=0;i<=3;i++) { for(j=0;j<=2-i;j++) printf(" "); for(k=0;k<=2*i;k++) printf("*"); printf("\n"); }//再打印后三行for(i=0;i<=2;i++) { for(j=0;j<=i;j++) printf(" "); for(k=0;k<=4-2*i;k++) printf("*"); printf("\n"); }}
输出结果:
5.三种循环结构小结
> 1.可以相互替代
> 2.while和do while,循环变量的初始化应该在while和do while语句之前完成,for语句可以在表达式1中实现循环变量的初始化。
> 3.while和do while应在循环体中包含使循环结束的语句。
> 4.do while是先执行后判断,while是先判断后执行。
> 5.for的功能最强,凡是while和do while能完成的都可以用for代替。
二、函数
1.什么是函数
程序的每一个功能都是可以定义一个函数来实现。
例如一个mp3软件的暂停、播放、停止都可以定义函数去实现其功能。
2.函数的定义
当需要添加一个常用的功能的时候就可以定义函数。
定义格式:
返回值类型 函数名(形式参数列表)
{
函数体
}
例:定义一个函数计算a+b的值。
#include<stdio.h>int sum()int main(){ int a = 10,b = 20; sum(a,b); return 0;}int sum(m,n){ return m+n;}
> 1.函数名要起的有意义。
> 2.明确返回值类型,没有返回值就写void,声明了返回值类型,也可以不返回任何值。
> 3.如果函数写在main的后面,调用前一定要声明。
> 4.默认情况下,不允许有函数的名称一样
> 5..函数不能嵌套定义
> 6.函数不能重复定义,但是可以重复声明
> 7.如果有函数的声明,没有函数的定义
编译可以通过,因为编译器只会检测语法合不合理,并不会检测函数有没有定义。
链接报错,因为链接的时候会检测函数是否定义。
3.函数的参数
形式参数:定义函数时函数名后面中的参数,简称形参。
.实际参数:调用函数式传入的具体数据,简称实参。
参数注意点:
> 1.形式参数:定义函数时函数名后面中的参数,简称形参。
> 2.实际参数:调用函数式传入的具体数据,简称实参。
> 3.实参个数必须等于形参个数。
> 4.函数体内部不能定义和形参一样的变量。
> 5.如果是基本数据类型作为函数形参,纯粹是值传递,修改函数内部形参的值,并不会影响外面实参的值。
> 6.一个函数可以没有形参,也可以有无限多个形参。
4.函数的递归调用
在调用一个函数时又出现直接或间接调用该函数本身,称为函数的递归调用。
练习:用递归方法求n!(n的阶乘的值),如果n为5,结果为120。
程序代码:
#include<stdio.h>int mul(int m);int main(){ int n = 0; //如果输入的数值小于等于0就重新输入 while (n <= 0) { printf("请输入一个正整数:\n"); scanf("%d",&n); } printf("%d的阶乘结果是:%d\n",n,mul(n)); return 0;}//定义计算阶乘的函数int mul(int m){ int p; if(m>1) p = m*mul(m-1); else p = 1; return p;}
编译运行结果为:
0 0
- iOS笔记之_C语言流程控制
- iOS笔记之_C语言基础
- iOS笔记之_C语言数组与指针
- iOS笔记之_C语言结构体与预处理
- C语言流程控制之循环笔记
- C语言流程控制之循环笔记
- 黑马程序员_C语言基本运算和流程控制
- iOS笔记:第四篇 C语言 流程控制
- 黑马程序员IOS基础---C语言学习之流程控制
- 黑马程序员-IOS基础之C语言流程控制
- 黑马程序员-------c语言学习笔记之流程控制
- C语言笔记流程控制
- 学习笔记_C语言
- 个人笔记-从零开始IOS开发_C语言基础1
- C语言之控制流程
- iOS之流程控制相关
- 黑马程序员_C语言学习笔记之基础
- 黑马程序员_C语言学习笔记之运算符
- Master内使用FindControl找不到控件的解决方案
- Mozilla Firefox Web Browser火狐浏览器安装一直处于“正在检测下载文件的完整性”
- POI导出Word插入复选框
- Bag标签之把字符串分割成数组,返回一个存放数组数据的书包(Bag)
- 修改VS2008中文字体
- iOS笔记之_C语言流程控制
- Ubuntu安装appium过程整理
- iOS 常用四种数据存储方式
- F5刷新-引起表单重复提交解决-<s:token />
- 关于ES、PES、PS以及TS码流
- iOS 捕获长按事件,跟踪滑动轨迹
- Hibernate4是用二级缓存的步骤
- linux 服务器优化设置
- 指针数组和数组指针的区别