C语言-Lesson5-1

合集下载

大工c语言第五章PPT课件

大工c语言第五章PPT课件
第五章 循环控制
5.1概述
在C语言中可用以下语句来实现循环: •用goto语句和if语句构成循环 •用while语句 •用do — while语句 •用for语句
2020/10/13
1
5.2 goto 语句
一般形式: goto 标号; 其中:标号用标识符表示,即由字母、数字和下
划线组成,且首字符必须为字母或下划线。 不能用整数来作标号 用途: 1. 与if语句一起构成循环结构 2. 从循环体中跳到循环体外
for(i=1;i<=2;i++) for(j=1;j<=2;j++) { printf(“%3d”,i+j); printf(“\n”); }
output: 2 3 3 4
2020/10/13
for(i=1;i<=2;i++) { for(j=1;j<=2;j++) printf(“%3d”,i+j); printf(“\n”); }
2020/10/13
10
结论:
当while后的表达式为真时,while语句 和do—while语句的结果相同,否则不同
2020/10/13
11
5.6三种循环语句的比较
• for语句和while语句先判断条件,后执行语句, 故循环体有可能一次也不执行,而do—while 语句的循环体至少执行一次。

先2判020/断10/1条3 件,后执行语句
先执行语句,后判断条件9
例:求1+2+3+······+n的值,n值通过键盘输入。
main( ) {int n , k=1,s=0;
printf(“Please input an integer:\n”);

VisualC#05-1语句

VisualC#05-1语句

下面的示例用foreach语句计算数组中偶数与奇数的个数。 using System; class Test { public static void Main() { int evenNum=0,oddNum=0; int[]{33,12,11,52,79,83};//定义并初始化一个一维数组 int[] arr=new int[]{33,12,11,52,79,83};//定义并初始化一个一维数组 //提取数组中的整数 foreach(int i in arr) //提取数组中的整数 { if(i%2==0) evenNum++; else oddNum++; } Console.WriteLine("evenNum:{0},oddNum:{1}",evenNum,oddNum); } } 程序运行结果为: 程序运行结果为: evenNum: evenNum:2,oddNum:4
第5章 选择和循环结构
第5章 选择和循环结构
5.3 分支语句 Swich语句之后的“表达式1”可以是一个数值表达式, 也可以是一个数值类型的变量.当表达式的值和case后 面的某一个常量表达式的值相等时,则执行该case后面 的语句。
第5章 选择和循环结构
5.3 分支语句 C#中要求每个case后使用break语句或跳转语句 goto,不允许从一个case自动跳转到另一个case,否则 编译会出错。另外,所有常量表达式的值不同,如果两 个或两个以上的case中常量表达式的值相同,编译时也 会出错。 例如,有如下要求:如果用户从控制台输入大写字 符Y,则输出字符串“Welcome”,输入小写字母y,则输 出字符串“How are you!”,否则输出字符串 “Invalid input”。使用switch语句实现此要求的代码 如下:

c语言第5讲课件

c语言第5讲课件
20/
Enter x: -0.5 f(-0.50) = 0.00
Enter x: 9.5
f(9.50) = 12.67
Enter x: 21.3
f(21.30) = 42.75
作业
• 书面
– P63:1,2
• 上机
– 实验一:用C语言编写简单程序
21/
每个字符:惟一的次序值( ASCII 码)
'0'-'9' 'A'-'Z' 'a'-'z'
区分数字 1 和 数字字符 '1'
6/
7/
字符变量
char ch; 定义字符变量ch,用于存放字符型数据。
ch = 'A';
8/
字符型数据的输入和输出
• 字符输入函数getchar
输入一个字符 char ch; ch = getchar( ); char ch; ch = getchar(); putchar (ch); putchar ('?');
a
• 字符输出函数putchar
输出一个字符 putchar(输出参数);
字符常量或字符变量
9/
a?
调用scanf和printf输入输出字符
double value1, value2; char operator; printf(“Type in an expression: ”); scanf(“%lf%c%lf”, &value1, &operator, &value2); printf(“%.2f %c %.2f”, value1, operator, value2);

C语言程序设计教程第5章精品PPT课件

C语言程序设计教程第5章精品PPT课件
(b)多维数组
13
5.2.3 二维数组的定义
二维数组定义的一般形式是: 类型说明符 数组名[数据长度1][数据长度2]; 它的形式与一维数组相比多了一个数据长度的限定,它的元素个数为数据长 度1×数据长度2。它的元素表示是按行列的形式表示的。 例如: a[2][3] 它的数组元素依次为a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2]。
7
5.1.4 一维数组元素的引用数组ຫໍສະໝຸດ 引用形式为:数组名[下标]
其中,下标可以是整型常量表达式或含有变量的整型表达式。
一维数组元素的引用。输出数组每个元素的值。 #include<stdio.h> main() { int i; int a[3]={1,2,3}; for (i=0;i<3;i++) printf("%d ",a[i]); } 输出结果为: 123
5
5.1.2 一维数组的存储形式
一维数组在内存中存储时,按下标递增的次序连续存放。例如int a[5],数组 名a或&a[0]是数组存储区域的首地址,a[0]就存放在这里,a[1]至a[4]在其后 依次存放。因此数组名代表了数组的存放首地址,不能对其进行赋值和其他 运算。
如果知道数组a的首地址和数据类型,可以通过如下公式算出每个元素的地 址:
数组元素a[i]的地址=数组首地址+i*数组元素的数据类型对应的字节数
了解了数组元素在内存中的存储形式,可以更好地掌握数组数据的存储规律, 但在实际的程序设计中,程序设计人员是不知道数组的具体地址的。因此, C语言不允许使用正整数作为数组变量的地址。只能按照下述方法表示数组 元素的地址:

《C语言程序设计》课件-第5讲

《C语言程序设计》课件-第5讲
❖初始化方式
int a[5]={1,2,3,4,在5}定; 义数组时,为数组元素赋初值 等价于:a[0]=1; (在a[1编]=译2阶; a段[2使]=之3;得a到[3]初=值4;)a[4]=5;
❖说明: 数组不初始化,其元素值为随机数 对static数组元素不赋初值,系统会自动赋以0值 只给部分数组元素赋初值 当全部数组元素赋初值时,可不指定数组长度
c[1][0][2] c[1][0][3] c[1][1][0] c[1][1][1] c[1][1][2]
a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1]
3 4
a[1][1] 20 a[2][0] 21
c[1][1][3] c[1][2][0] c[1][2][1]
a[2] a[2210]71[06] a2[210]91[81] a2[220]12[02] a2[220]32[23]
每个元素a[i]由包含4个元素 的一维数组组成
0 a[0][0] 1 a[0][1] 2 a[0][2]
3 a[0][3] 4 a[1][0] 5 a[1][1] 6 a[1][2] 7 a[1][3] 8 a[2][0]
将它与第二个数交换—第二趟选择排序 (3)重复上述过程,共经过n-1趟排序后,排序结束
例 用简k单选k 择法对10个k数排序
例 i=1 初始: [ 4193 38 65 97 76 1439 27 ]
j jj jj j
k
k
i=2 一趟: 13 [3287 65 97 76 49 3287 ]
j j j jj 二趟: 13 27 [65 97 76 49 38 ]
a[01]1[0] a[02]2[1] a[30]4[2] a[41]0[0] a[510][1] a[a0[]0[2]1[]1]a[a0[]0[3]2[]2]a[a1[]14[]0[]0]a[a1[]15[]1[]1]a[a1[]10[]2[]2]

《C语言第五章》PPT课件

《C语言第五章》PPT课件
1。
3
循环的嵌套
定义:
一个循环体中又包含一个完整
的循环构造,称为循环的嵌套。
说明:
while 循环、do… while循
环和 for循环都可以进展嵌套,而且
可以相互嵌套。
1 4
几种合法的嵌套构造:
while ( ) {… while ( ) {…} }
while ( ) {… do {…} while ( ); … }
1 2
三种循环的比较(续):
while和do …while循环只在while后面指定循 环条件,且在循环体中应包含使循环趋于完毕的 语句;for循环可以在表达式3中包含使循环趋 于完毕的操作,甚至可以将循环体中的操作全部 放到表达式3中,功能更强。
while 和for循环是先判断表达式,后执行语句 ;do …while循环是先执行语句后判断表达式
do {…
do{…} while ( ); } while ( );
for ( ; ; ) {…
while ( ) {…} … }
for ( ; ; ) {…
for ( ; ; ) {…} }
do {…
for(; ;) {…} … } while ( );
使用循环嵌套时注意:
➢ 要保证嵌套的每一层循环在逻辑上都是完整的, 防止嵌套穿插使用。
3 先判断表达式,后执
表 达式
=0
0
语句 (循 环体)
图6_1
100
【例6.1】求 n 。 n 1
sum =0 i= 1

i< = 1 0 0

sum sum +i i i+ 1
输 出 结 果 sum

C语言第五章课件


scanf(“%d”,&x);
if(x<0) y=-1; else if(x==0) y=0; else y=1; printf(“y=%d\n”,y); }


/* 魔数的另一种解法 */ main() { int magic=123, guess;
clrscr(); scanf("%d", &guess); if(guess==magic){ printf("** Right **\n"); printf("%d is the magic number\n", magic); } else if(guess>magic) printf( " ** Wrong ** Too High \n"); else printf("** Wrong ** Too Low\n");
条件运算
是一种在两个表达式的值中选择一个的操作。
格式: e1 ? e2 :e3 条件表达式 含义: 若表达式e1为真(非零),则此条件表达式的值为e2的值, e1为 假, 则表达式取e3的值. 条件运算符 "? :" 要三个操作数, 三元(目)运算符.
If (a>b) max=a;
Else max=b;
5.3
if语句
一、if语句的一般形式 if(表达式) 语句 else 语句
语句项可为单独语句,也可为复合语句(必须加花括号),else从句可 选。 执行顺序: 表达式取真值(除零以外的任何值),执行if语句序列, 否则 执行else语句序列(没有else,则向下执行)。
If语句形式之一:
if (表达式) 语句;
个 相 等 Else b b 4ac x1 2a 实根: if b^2-4ac=0 -b/(2a)

C语言第五章讲义


5.1 C程序中语句的分类
C语言程序的执行部分是由语句组成的。程序的功能也 语言程序的执行部分是由语句组成的。 是由执行语句实现的。 语言中的语句可以分为以下5 是由执行语句实现的。C语言中的语句可以分为以下5类: 表达式语句 由表达式加上分号“ 组成。其一般形式为:表达式; 由表达式加上分号“;”组成。其一般形式为:表达式; 函数调用语句 a = 10 赋值表达式 由函数名、实际参数加上分号“ 组成。 由函数名、实际参数加上分号“;”组成。其一般形 a = 10; 赋值语句 式为:函数名(实际参数表) 式为:函数名(实际参数表); k++ 表达式 表达式语句 空语句 k++; printf ("C Program") 函数调用; 函数调用; 只有分号“ 组成的语句称为空语句。 只有分号“;”组成的语句称为空语句。空语句是什么 printf (“C Program”); 函数调用语句 也不执行的语句。在程序中空语句可用来作空循环体。 也不执行的语句。在程序中空语句可用来作空循环体。 。 其功能是输出字符串"C Program"。 其功能是输出字符串"C Program" while (getchar( ) != '\n' ) '\ ; 本语句的功能是, 本语句的功能是,只要从键盘输入的字符不是回车则 重新输入。这里的循环体为空语句 空语句。 重新输入。这里的循环体为空语句。
1 结果为 结果为0
例 5 > 2 > 7 > 8在C中是 8在 允许的, 允许的,值为 0
第 五 章 选 择 结 构 程 序 设 计
例 应避免对实数作相等或不等的判断 应避免对实数 实数作相等或不等的判断 如 1.0/3.0*3.0==1.0 结果为 0

C语言完整函数教程PPT课件

uC标准库提供了丰富的函数集,能够完成常用的数学 计算、字符串操作、输入/输出等有用操作,程序员可 以直接使用、从而减少工作量;
12
5.1 子程序设计 5.2 函数
5.2.1 函数 5.2.2 函数的定义 5.2.3 函数的调用 5.2.4 函数原型 5.3 头文件 5.4 函数应用举例 5.5 变量作用域 5.6 变量的存储类别 5.7 内部函数和外部函数
printf("%d\t",i);
【程序演示】
16
5.2.2 函数的定义
/*函数功能:判断n是否是闰年 参数: year :要判断的年份 返回值:若是闰年,返回1,否则返回0*/
int isLeapYear(int year) {
if ( (year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0) return 1;
else return 0;
}
17
5.2.2 函数的定义
常见的程序设计错误: (1)把同一种类型的参数声明为类似于形式
float x,y,而不是float x,float y; (2)在函数内部把函数参数再次定义成局部变
量是一种语法错误;如: int sum(int x, int y) {
int x, y;//错误! return (x+y); }
18
5.2.2 函数的定义
(3)不能在一个C函数的内部定义另一个函数;
main()
{

int sum(int x,int y)
{ return(x+y);
不允许!
}

}
19
5.2.2 函数的定义

C语言讲义第五章


间接访问──通过另一变量访问该变量的值 通过另一变量访问该变量的值
C语言规定:在程序中可以定义一种特殊的变量(称 为指针变量),用来存放其它变量的地址。
CHAPTER 5:Poige5-1
A pointer is a variable that contains the address of a variable
CHAPTER 5:Pointers
and Arrays
Page5-6
Variable’s pointer vs. Pointer variable
Variable’s pointer is the variable’s address; Pointer variable points to the variable;
applied to : variables and array elements; not to : expression, constants, register variables v=*p; /* get the value which p point to*/
*
Indirection operator (dereferencing operator) (指针运算符或间接访问运算符) 指针运算符或间接访问运算符) Same precedence, associate right to left.
dp++
CHAPTER 5:Pointers
and Arrays
Page5-11
Reference of pointer variable p_num=&num;
&*p_num *&num (*p_num)++
&num num num++
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例sz3.c
7.2 二维数组的定义和引用
7.2.1二维数组的定义 二维数组的定义
二维数组定义的一般形式为
Page 135
类型说明符
数组名[常量表达式][常量表达式 数组名[常量表达式][常量表达式]; 常量表达式];
例如: 例如: 定义a为 × 的数组, 为 × 定义 为3×4(3行4列)的数组,b为5×10(5 行 列 的数组 的数组。 行10列)的数组。如下: 列 的数组 如下: float a[3][4],b[5][10]; , ;
1.
7.1.2一维数组元素的引用 一维数组元素的引用
Page 132
存取数组元素的方式是: 存取数组元素的方式是 在写数组名的同时后边加 上一个方括号,括号内放置一个整数值。 上一个方括号,括号内放置一个整数值。该整数 下标。 下标不能超出数组定义的范围.) 值称为下标 下标不能超出数组定义的范围 值称为下标。(下标不能超出数组定义的范围
例sz2.c
数组排序
冒泡排序法 选择排序法
冒泡排序法
【算法的思想】 假设要求数据按由小到大顺序排列,则依次 将a(0)~a(n)中每对相邻元素进行比较,如 果a(i)>a(i+1)则将两个元素中的内容互相 交换,把较大的数字移动到右边.较小的数移动 到左边. a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] 32 8 17 45 52 68 11 20
二维数组的行和列的下标都是从0 二维数组的行和列的下标都是从0开始索引
7.2.2二维数组元素的引用 二维数组元素的引用
二维数组元素的引用形式为: 二维数组元素的引用形式为:
Page 136
下标][下标 数组名 [下标 下标 下标 下标]
例: a[3-1][2*2- 表示引用第3行第4 a[2][3] 或 a[3-1][2*2-1] 表示引用第3行第4列元素 b[1][2]=2*a[0][2] - 4*a[1][1] ; 数组a 数组a 0 1 2 0 4 3 10 1 3 12 2 2 6 7 4 3 1 5 9
C语言程序设计
第七章 数组
什么是数组? 什么是数组
C语言中变量只能保存单一的数据。而使 语言中变量只能保存单一的数据。 语言中变量只能保存单一的数据 用数组,程序员则可以来存储一系列数据。 用数组,程序员则可以来存储一系列数据。 数组是有序数据的集合, 数组是有序数据的集合,数组的成员被称为 元素,且所有元素都属于同一数据类型。 元素,且所有元素都属于同一数据类型。
二维数组的初始化方法
如果对全部元素都赋初值, 如果对全部元素都赋初值,则定义数组时对 第一维的长度可以不指定, 第一维的长度可以不指定,但第二维的长度 不能省。 不能省。 例如: 例如: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 等价于: 等价于: int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12};
二维数组的初始化方法
3.
也可以对各行中的部分元素赋初值 例如: 例如
{3},{2,2},{4, int a[3][4]={ {3},{2,2},{4,4,4} };
上述代码效果如下,其余数组元素值则自动为0 上述代码效果如下,其余数组元素值则自动为 数组a 数组a 0 1 2 0 3 2 4 1 0 2 4 2 0 0 4 3 0 0 0
可以把二维数组看作是一种特殊的一维数组: 可以把二维数组看作是一种特殊的一维数组:它的 元素又是一个一维数组。 元素又是一个一维数组。
例如: 例如: int a[3][4]
数组a 数组a 0 1 2 0 a[0][0] a[1][0] a[2][0] 1 a[0][1] a[1][1] a[2][1] 2 a[0][2] a[1][2] a[2][2] 3 a[0][3] a[1][3] a[2][3]
a[0] 10
a[1] 21
a[2] 32
a[3] 43
a[4] 54
对数组元素初始化的实现方法: 对数组元素初始化的实现方法:
3.
3.
4.
如果括号内给出的初始值个数少于数组个数, 如果括号内给出的初始值个数少于数组个数,则剩余的数 组元素初始化值为0: 组元素初始化值为 例如: 个元素值为0。 例如 int a[10]={0,1,2,3,4}; 后5个元素值为 。 个元素值为 若要将所有数组元素初始化为0,可以参考如下代码: 若要将所有数组元素初始化为 ,可以参考如下代码 int b[5]={0,0,0,0,0}; 或 int b[5]={0}; [ ] [ ] 在对全部数组元素赋初值时,由于数据的个数已经确定, 在对全部数组元素赋初值时,由于数据的个数已经确定, 因此可以不指定数组长度。 因此可以不指定数组长度。 int c[5]={1,2,3,4,5}; [ ] , , , , []={1,2,3,4,5}; 可以写成 int c[] [] , , , ,
Page 132
在声明数组时给予其初始值称为数组初始化, 在声明数组时给予其初始值称为数组初始化,数组初始化 有如下几种方式: 有如下几种方式:
1.
在定义数组时对数组元素赋以初值。 在定义数组时对数组元素赋以初值。 int a[5]={10,21,32,43,54};
将数组元素的初值依次放在一对花括弧内,数值 将数组元素的初值依次放在一对花括弧内 数值 用逗号进行分隔。 用逗号进行分隔。
7.2.3二维数组的初始化 二维数组的初始化
Page 137
分行给二维数组赋初值,每行的初值用括号分组 分行给二维数组赋初值 每行的初值用括号分组. 每行的初值用括号分组 例如: 例如: int a[3][4]= { {1,2,3,4} , {5,6,7,8} , {9,10,11,12} };
a[0][0] 1 a[1][0] 5 a[2][0] 9 a[0][1] 2 a[1][1] 6 a[2][1] 10 a[0][2] 3 a[1][2] 7 a[2][2] 11 a[0][3] 4 a[1][3] 8 a[2][3] 12
例题1:用数组存储数据 例题 用数组存储数据
编写程序代码,将键盘上输入的 个整数保存到数组中 编写程序代码 将键盘上输入的10个整数保存到数组中 将键盘上输入的 个整数保存到数组中.
例sz1.c
找出上面例题里输入的10个数字中最大数和最小数 找出上面例题里输入的 个数字中最大数和最小数. 个数字中最大数和最小数
7.1.1一维数组的定义 一维数组的定义
一维数组的定义格式为: 一维数组的定义格式为:
Page 131
数组名[常量表达式 常量表达式]; 类型说明符 数组名 常量表达式
例如: 例如:
int
a[10] ;
定义了一个整型数组,数组名为 此数组有 定义了一个整型数组 数组名为a,此数组有 个元素 数组名为 此数组有10个元素
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
使用循环语句处理数组元素
例7.1
为数组成员 赋值并输出 数组所有成 员的数值
Page 132
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
7.1.3一维数组的初始化 一维数组ቤተ መጻሕፍቲ ባይዱ初始化
数组名[下标 数组名 下标] 下标
例如: 例如
a[0] a[1] a[2] a[3] ….
int a[10]; 作用是定义数组,a[10] 作用是定义数组 声明了数组的名字和成 员的个数
a[1]代表引用数 代表引用数 组第二个成员
引用数组元素时 下标也可以是整型常量、 下标也可以是整型常量 引用数组元素时,下标也可以是整型常量、变 量或整型表达式。 量或整型表达式。
二维数组运用:求矩阵对角线值和 二维数组运用 求矩阵对角线值和
1 2 3 4 2 3 4 1 3 4 1 2 4 1 2 3
7.2.4程序举例 程序举例7.5 程序举例
的矩阵, 有3×4的矩阵,编程序找出的最大值,以及 × 的矩阵 编程序找出的最大值, 其所在元素的行号和列号。 其所在元素的行号和列号。
常见错误
在使用数组元素时, 在使用数组元素时,应该注意下标值应在已定义的数组大 小的范围内。 小的范围内。 例如: 例如: int a[3][4]; /* 定义 为3×4的数组 */ 定义a为 × 的数组 ┆ a[3][4]=3;
!!错误 错误:a[3][4] 错误 超过了数组的 定义范围
【原因】 原因】 数组的下标是 开始编号. 由0开始编号 开始编号
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] 32 8 17 45 52 68 11 20
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] 32 8 17 45 52 68 11 20
冒泡排序算法的原理
第1次:依次将a(0)~a(n)中每对相邻元素进行比较, 使两数中的小数上冒、大数下沉,当所有元素比较 结束时,数组a的最大数到了a(n); 第2次:依次将a(0)~a(n-1)中每对相邻元素进行 比较,使两数中的小数上冒、大数下沉,此次结束 时数组a的次大数到a(n-1); 第i次:依次将a(0)~a(n-i+1)中每对相邻元素进 行比较,使两数中的小数上冒、大数下沉,第i次结 束时数组a的第i大的数到a(n-i+1) 第n-1次:依次将a(0)~a(2)中两个元素进行比较, 使两数中的小数上冒、大数下沉,于是此次结束时 当前最大数即数组a的第n-1大的数“沉底”到了 a(1),a(0)则存放数组的最小数;
二维数组的初始化方法
2.
可以将所有数据写在一个花括号内, 可以将所有数据写在一个花括号内,按数组排列的 顺序对各元素赋初值。 顺序对各元素赋初值。 例如: 例如
相关文档
最新文档