C++大学基础教程第四章
C语言程序设计基础讲解PPT第4章(第一讲)
2019/1/8
【例4.5】选择法排序(续)
for (i=0; i<N; i++) 输入a[i] for (j=0; j<N-1; j++) for (i=j+1; i<N; i++) a[j]>a[i] T F a[j]与a[i]交换 输出a[0]~a[N-1] 图4.3 选择法排序
19
2019/1/8
#define N 5 main( ) { int a[N]; 程序运行情况如下: int i,j,t; 96 78 65 86 40 for (i=0; i<N; i++) The sorted numbers: scanf("%d",&a[i]); 40 65 78 86 96 printf("\n"); for (j=0; j<N-1; j++) /*确定基准位置 */ for(i=j+1; i<N; i++) if (a[j]>a[i]) { t=a[j];a[j]=a[i];a[i]=t; } printf("The sorted numbers: \n"); … }
20
2019/1/8
1
程序设计基础 I
第4章
数 组
青海大学 计算机系
第4章 数组
本章重点介绍 : 4.1 一维数组 4.2 二维数组 4.3 字符数组与字符串
2
2019/1/8
第4章 数组
3
一个人N门课的成绩怎样存储和处理? 一个班N门课的成绩怎样存储和处理?...... 这些数据的特点:具有相同的数据类型。 为了方便地使用这些数据,C语言提供了一 种构造数据类型:数组。 例如:存储学生成绩用实型数组 score[5] 其中:score是数组名。该数组可以存放5个成绩, 分别用下标变量表示: score[0],score[1],…score[4]。 下标变量也称为数组元素。
C语言大学教程 第四章 C程序控制
7{
8 9
int sum = 0; int number; for ( number = 2 ; number <= 100; number +=2) {
10
11
第4章 C程序控制
4.6 应用for循环语句的例子 图4.5中程序:求2到100所有偶数之和
第4章 C程序控制
4.2 循环的基本原理
循环:是指在循环继续条件为真时,计算机重复执
行一组指令。
计数控制的循环 :确定性循环
控制变量记录循环次数 标记控制的循环 :不确定性循环 每次循环要输入数据,其个数事先未知 输入标记值表示数据输入结束
第4章 C程序控制
4.3 计数控制的循环 实现计数控制循环的步骤
第4章 C程序控制
4.4 for循环语句 图4.2中用for循环“打印1到10数字”
12 13 14 15
for ( counter = 1 ; counter <= 10; counter++) { printf ( “%d\n”, counter ); } /* end for */
}
printf ( “%d\n”, j );
第4章 C程序控制
4.5 for循环语句 : 注意事项 3 如果循环条件被初始化为假,那么循环体将得不到 执行,例:
for ( j = 0; j >= 1; j -- ) { }
printf ( “%d\n”, j );
4 循环控制变量不必出现在循环体中
return 0; 16 } /* end function main */
大学C语言基础自学课件 第4章
例 scanf(“%3d%*4d%f”,&k,&f); – 例 例 – scanf(“%2d 例 scanf( scanf( “%4d%2d%2d “%3c%2c • %*3d•%2d”,&a,&b); ”,&c1,&c2); ”,&yy,&mm,&dd); 输入 12345678765.43 输入 12 • 345 • 67 – – 输入 输入 19991015 abcde printf("k=%d,%f\n",k,f); 1234567 – printf("%c,%c\n",c1,c2);
7
第四章 顺序程序设计 – 格式输出函数
VC6.0编译器
格式:printf(“格式控制串”,输出表) 功能:按自右向左的顺序,依次计算“输出列表”中各表达式 #include <stdio.h> 的值,再按“格式串”规定的格式将自左向右的顺序表达式的 void main() 值输出到显示器。 { int i=3,j=4; 运行结果: – 输出表:要输出的数据(可以没有,多个时以“ ,”分隔) printf("%d,%d\n",j,j=i); 3,3 – 格式控制串:包含三种信息 printf("%d,%d\n",i,j++); 3,3 • 格式说明: %[修饰符]格式字符,用于指定输出格式 printf("%d,%d\n",i=j,j); 4,4 • 普通字符: 原样输出 printf("%d,%d,%d\n",i,j); 4,4,******* • 转义字符:控制字符,换行 (\n)、退格(\b)、回车(\r) printf("%d\n",i=j,j+1); 4 }
C语言教程第4章1课件
第4章 顺序程序设计
5.输入形式 (1)scanf("%d%d%d",&a,&b,&c); 输入:3 4 5 或 3 4 5 或 3(按Tab键)4(按Tab键)5 或空格、回车、Tab键的组合。
(2)scanf("%3d%2d%3d",&a,&b,&c); 运行时若输入: 123456789,则a、b、c的值分别为 123、45.678。
①%f
123.458000
②%12f
□□123.458000
③%-12f 123.458000□□
④%8f
123.458000
第4章 顺序程序设计
⑤%8.2f ⑥%-8.2f ⑦%.2f
□□123.46 123.46□□ 123.46
四舍五入
第4章 顺序程序设计
在输出float与double时, 注意有效位(7位、16位) main() {float x=111111.111,y=222222.222;
①%e
1.234580e+002
②%13.4e ③%-13.4e ④%.4e
□□1.2346e+002 1.2346e+002□□ 1.2346e+002
四舍五入
⑤%E
1.234580E+002
第4章 顺序程序设计
7、g格式 自动选f或e格式(选择输出时占宽度较小的一
种)输出实型数, 且不输出无意义的零。以输出 实型数f=123.468为例。 printf(“%f,%e,%g”,f,f,f); 123.468000,1.234680e+002,123.468
C大学基础教程第四章-2011
错误的数组定义语句
void VoidArray[10]; //void不可以做数组类型 int a=9; float floatArray[a]; //数组的长度不可以是变量 char charArray[1.5+1.5]; //3.0不是整数 char str[ ]; //没有指定数组长度
2019/2/3 北京科技大学计算机系 -12-12-
一维数组的初始化
初始化:在定义数组时给数组元素赋初值。 在定义数组时,对全部数组元素赋初值 例如:int a[10]={0,1,2,3,4,5,6,7,8,9};
此时可以省略数组长度,
例如: int a[]={0,1,2,3,4,5,6,7,8,9}; 可以只给一部分元素赋初值。其他元素自动赋值为0 例如:int a[10]={0,1,2,3,4};
2019/2/3 北京科技大学计算机系 -9-
数组的下标
② [ ]是下标运算符, 引用数组元素时, 根据数组的首地址 和下标数,计算出 该元素的实际地址, 取出该地址的内容 进行操作。
如引用 a[2]: (1)计算 2000+2*4=2008 (2)取出2008的内容 2000H 2004H 2008H 200CH 2010H 91 34 67 72 84
2019/2/3
C++大学基础教程
第4章 数组
北京科技大学 计算机系
数组基本概念
例如:记录某班学生的成绩。 3名 120名 float a, b,c; float scoresCPlus [120] ;
需要构造合适的数据类型。 这些数据的特点:具有相同的数据类型。 C++提供了数组:表示相同类型的数据集合;
C从入门到精通第4章教学PPT
4.2.3 浮点型
浮点数也称为实型数。共有两种表示形式:
小数表示法 实型常量分为整数部分和小数部分 如:2.12 指数表示法 也称科学记数法,指数部分以E或e开始,而且必须
是整数。 如:1.2e20,-3.4e-2
4.3 类型转化
所谓类型转化就是将一种数据类型转化为另外一种数据类 型。
自动转化:字符型---->短整型---->整型---->单精度浮 点型---->双精度浮点型
十六进制 0
1
2
3
4
5
6
7
二进制 1000 1001 1010 1011 1100 1101 1110 1111
十六进制 8
9
A
B
C
D
E
F
4.2 数据类型
➢ 4.2.1 整型 ➢ 4.2.2 字符型 ➢ 4.2.3 浮点型
4.2.1 整型
整型是计算机中最常用同时也是最简单的数据类型。 (1)整型的表示范围 (2)整型的输入和输出
reinterpret_cast 是特意用于底层的强制转型
4.3 类型转化
【范例4-3】 C++中的类型转化 功能:说明类型转化的意义和用法。
4.4 声明
4.4.1 声明的一般语法 4.4.2 类型名称 4.4.3 对象的生存周期 4.4.4 声明符 4.4.5 初始化
4.4.1 声明的一般语法
4.1.1 二进制
除2取余法 例如将十进制数29 转化为二进制的步骤如下: ➢ (1) 29÷2=14 //余数为1 ➢ (2) 14÷2= 7 //余数为0 ➢ (3) 7÷2= 3 //余数为1 ➢ (4) 3÷2= 1 //余数为1 ➢ (5) 1÷2= 0 //余数为1 ➢ 倒着将余数相连即为二进制——(11101)2
大二c语言四五章知识点总结
大二c语言四五章知识点总结C语言是一门广泛应用于计算机编程领域的编程语言,作为计算机科学专业学生,掌握C语言的基本知识是非常重要的。
在大二学习中,我们通常会学习C语言的四五章知识点,本文将对这些知识点进行总结。
一、数组和指针1. 数组数组是C语言中一种存储相同类型数据元素的方式,它能够提供连续的内存空间,以便于对数据的操作和管理。
可以通过数组名和索引来访问数组中的元素。
2. 指针指针是C语言中非常重要的概念,它保存一个变量的内存地址。
通过指针,我们可以直接访问和修改该内存地址上的数据。
指针与数组有着紧密的联系,指针可以用来表示数组的首地址。
二、函数和递归1. 函数函数是C语言中一种封装了一组语句的代码块,通过函数可以实现对一系列操作的封装和重复利用。
函数有输入参数和返回值,可以用来实现各种功能。
2. 递归递归是指函数调用自身的过程,通过递归,我们可以简化某些问题的解决方法。
递归函数必须包含一个递归终止条件,否则就会陷入无限递归。
三、结构体和共用体1. 结构体结构体用于将不同类型的数据组合在一起,形成一个新的数据类型。
通过结构体,我们可以实现对不同数据的组织和管理,提高程序的可读性和可维护性。
2. 共用体共用体类似于结构体,不同的是共用体中的成员共享同一块内存空间。
这意味着共用体的各个成员可以共同使用这块内存空间,节省了内存的使用。
四、文件操作1. 文件的打开与关闭在C语言中,我们可以通过文件指针来操作文件。
打开文件使用fopen函数,关闭文件使用fclose函数。
打开文件时需要指定文件名和打开模式,如读取模式、写入模式等。
2. 文件的读写操作通过文件指针,我们可以实现对文件的读写操作。
例如使用fscanf函数从文件中读取数据,使用fprintf函数向文件中写入数据。
总结:本文主要总结了大二C语言四五章的知识点,包括数组和指针、函数和递归、结构体和共用体以及文件操作等内容。
这些知识点是C语言编程中的基础,掌握它们对于学习和理解后续的知识有着重要的作用。
高等教育C第4章课件.ppt
9
冒泡排序法示意图
10
冒泡排序法程序
#include <iostream>
using namespace std;
int main()
{ int i, j, tmp;
int list[10];
cout << "请输入待排序的整数数列:";
2、数组
1)具有相同数据类型的变量集合; 2)每个变量名相同,通过下标表达位置; 3)每个变量称为数组元素; 4)下标的个数:数组的维数
1
二、一维数组
1、定义格式: 类型名 数组名[长度]
例如: int a[10]; 表示一维数组名为a,共有10个元素
2、说明
(1) 数组名命名规则和变量名相同 (2) 方括号中的长度为常量表达式 (3) 在内存中按下标递增的顺序连续存储各元素的值。 (4)下标从0开始, 10个元素分别是a[0]~a[9]
cout << c[i][j] << "\t";
}
cout << endl;
// 每输出完成一行中所有元素后换行
}
return 0;
}
21
4.2 字符数组
一、字符串
1、用双引号括起来的字符序列; 2、结束标志:’\0’ 3、字符串长度:有效字符的个数
例如,”abc”的长度为3 4、用字符型数组存放字符串时,在有效字符后自动
27
2、连接 strcat()
#include <iostream> #include <cstring> using namespace std; void main() { char str1[20],str2[20]; cin>>str1; cin>>str2; strcat(str1,str2); cout<<str1<<endl; }
第4章C入门学习教程
6
数组
2.一维数组的初始化
• 如果给出“数组长度”,则初始值的个数应与“数 组长度”相等,否则出错。例如:
int[] mya = new int[2] {1,2};
//正确
int[] mya = new int[2] {1,2,3}; //错误
int[] mya = new int[2] {1}; //错误
• 数组元素没有名称,只能通过索引(或称为下标)来访问。 数组索引从0开始计数,具有n个元素的数组索引范围是0~n-1。
• 数组能够存储整型、字符串等类型的数据,但是不论数组存 储了多少个数据,其中的数据必须是同一种类型。
3
数组
1.一维数组的声明
•
C#中的数组实际上是一个对象,可以使用new运
算符来创建,一维数组声明的一般格式如下:
度]{数组元素初始化列表};
• 例如:
string[ ] arrLanguages=new string[3]{ "C",
"C++", "C#" };
int[] numbers = new int[5] {1, 2, 3, 4, 5};
5
数组
2.一维数组的初始化
•
如果给出初始值部分,各元素取相应的初值,
•
数组类型[ ] 数组名 = new 数组类型[数组长
度];
•
例如,声明一个具有10个整型元素的一维数组
num1:
•
int[] num1 = new int[10];
4
数组
2.一维数组的初始化
•
C#中也允许在定义数组时对数组元素进行初始
化,数组初始化的形式如下:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
13
4.2 函数定义及使用
• 函数定义 • 函数原型 • return语句 • 函数使用的三种方式
2013-7-11
14
4.2.1.函数的定义
•函数定义的语法形式
函数类型 函数名(形式参数表) { 函数体(变量声明和语句) return 表达式; }
2013-7-11 15
1.函数的定义
• 包括接口和函数体
2013-7-11
自定义函数
9
4.2.2.数学库函数
C++语言提供的库函数中有一些是专门完成特 定的数学运算的,称为数学库函数。 • 实现常见的数学计算 例如: 求绝对值、平方根等。 • 调用数学函数: 函数名(参数1,…,参数n) 例如: cout<<sqrt(900.0);
2013-7-11 10
2013-7-11
21
// PromptAndRead(): prompt and extract next integer
PromptAndRead()
int PromptAndRead() { cout << "Enter number (integer): "; int Response; cin >> Response;
返回值语句 函数体
2013-7-11
17
函数名
• 函数名是这个独立代码段(函数体)的外部标 识符 • 函数定义之后,即可通过函数名调用函数(函 数体代码段)。 例: cout << CircleArea(MyRadius) << endl; • 函数名的构成可以是任何有效标识符 (一般多以反映函数功能的单词组合命名, 2013-7-11 18 以增强程序的可读性)
2013-7-11 33
// maximum函数定义
// 函数的形式参数x,y ,z int maximum(int x, int y, int z) { int max; max = x>=y?x:y; max = max>=z?max:z; return max; }
201013-7-11 20
Sum()
// Sum(): compute sum of integers in a ... b int Sum(int a, int b) { int Total = 0; for (int i = a; i <= b; ++i) { Total += i; } return Total; }
2013-7-11
26
函数是由函数名、函数类型、形参表
和函数体四部分组成的,使用时通过
函数名和参数表调用函数.
2013-7-11
27
例4.1
编写一个函数cube,计算整数的立方。调 用函数cube计算从1到10相邻整数的立 方差。
2013-7-11
28
//计算整数的立方 #include <iostream> using namespace std; int cube( int y ); // 函数原型声明
• 引用函数之前,要先指定函数的接口形式
– 函数原型 – 函数定义
• 函数原型声明格式: 函数类型 函数名(形式参数表);
例: int Max(int a, int b);
2013-7-11 35
函数原型
• 函数原型声明使编译器获得关于函数名称、 函数类型、函数形参个数、形参类型和形 参顺序的信息。 • 函数调用时,编译器根据函数原型声明验 证函数调用正确与否。
#include <iostream> #include <cmath> using namespace std;
调用函数 或主调函数
int main() { cout << "Enter Quadratic coefficients: "; double a, b, c; 被调函数 cin >> a >> b >> c; if ( (a != 0) && (b*b - 4*a*c > 0) ) 库函数 { double radical = sqrt(b*b - 4*a*c); double root1 = (-b + radical) / (2*a); double root2 = (-b - radical) / (2*a); cout << "Roots: " << root1 << " " << root2; } else { cout << "Does not have two real roots"; } return 0; 2013-7-11 8 }
Sum()
// Sum(): compute sum of integers in a ... b int Sum(int a, int b) { int Total = 0; for (int i = a; i <= b; ++i) { Total += i; } return Total; }
4.2.2.数学库函数
• 库中多数函数返回double类型结果。 • 使用时需在程序中包含math.h头文件,在新 的C++标准库中被称为cmath。 • 函数参数可取常量、变量或表达式。
例: 如果c=13.0、d=3.0和f=4.0,则下列语句: cout<<sqrt (c+d*f);
5.0 13.0+3.0*4.0=25.0的平方根,即
#include <iostream> using namespace std; int maximum(int x, int y, int z ); // 函数原型声明 void main() { int a, b, c; cout << "Enter three numbers: "; cin >> a >> b >> c; //调用maximum函数,a,b,c为实际参数 cout << "Maximum is: " << maximum( a, b, c ) << endl; //函数调用 }
last=nowcb; } cout << endl; }
2013-7-11
30
//函数定义 int cube( int y ) { return y*y*y;
}
2013-7-11
31
例4.2
在三个整数中确定最大值,使用自定义函 数maximum完成。
2013-7-11
32
// 在三个整数中找出最大值
return Response;
}
2013-7-11 22
函数返回值
• 当需要函数向主调函数返回一个值时,使用 return语句返回给主调函数,称为返回值。
• 由return语句返回的值的类型必须与函数定 义时指定的函数返回值类型一致,与主调函 数的值的类型也一致。 • 如果不需要向主调函数返回值,函数可以定 义成无类型的(void),函数结束时也不必用 return语句。
2013-7-11
36
函数原型
• 库函数的声明在相应的库的头文件中,使用 库函数时要包含相应的头文件。 例: #include <cmath> 调用数学库函数: sqrt(…) sin(…) abs(…) ……
2013-7-11
fstream File stream processing assert C-based library for assertion processing iomanip Formatted input/output (I/O) requests ctype C-based library for character manipulations math C-based library for trigonometric 37 and logarithmic functions
• 技巧:要熟悉C++标准库 提供的类和函数集合。不 要事事从头做起,要尽可 能利用C++标准库提供的 函数而不是生成新函数, 以便减少程序开发的时间。
6
2013-7-11
4.1 函数概述
• 调用函数 • 函数调用 • 被调函数 如main()函数
(函数包括自定义函数和库函数)
2013-7-11 7
2013-7-11 23
Sum()
// Sum(): compute sum of integers in a ... b int Sum(int a, int b) { int Total = 0; for (int i = a; i <= b; ++i) { Total += i; } return Total; }
#include <iostream> using namespace std; float CircleArea(float r); // main(): manage circle computation int main() { cout << "Enter radius: "; float MyRadius; 调用时已定义 cin >> MyRadius; float Area = CircleArea(MyRadius); cout << "Circle has area " << Area; return 0; } // CircleArea(): compute area of radius r circle float CircleArea(float r) { const float Pi = 3.1415; return Pi * r * r; }