C++第七章

合集下载

《c语言函数》PPT课件

《c语言函数》PPT课件
其它函数: 可以互相调用函数、自调用函数,不能调用main()。
精选课件ppt
4
2、使用参数 入口参数: 主调函数向被调函数传递的数据------实参、形参。
出口参数: 被调函数向主调函数传递的数据------返回值。
精选课件ppt
5
§7.2 函数的定义 问题: 1、被调函数如何使用主调函数中的数据。 2、假设被调函数有办法使用主调函数中的数据,如何保证 被调函数和主调函数中数据类型的一致。
在函数中允许有多个return语句,但每次调用只能有一个 return 语句被执行, 因此只能返回一个函数值。
精选课件ppt
15
2、函数值(回传值)的类型与被调用函数的类型说明
函数调用语句 被调函数类型 回传值类型
在定义函数时,需要指定函数的类型:
例如:
int max(x,y);
doubel a(c1,c2); 等等
1、被调函数为库函数 对库函数的调用不需要再作说明, 但必须把该函数的头
文件用include命令包含在源文件前部。
精选课件ppt
23
2、用户自定义的函数 一般应该在主调函数中对被调函数的返回值的类型做说明。 对被调函数的说明也有两种格式,
一种为传统格式,其一般格式为: 类型说明符 被调函数名();
9
调用结束:形参临时单元被释放,形参数据失效,实参数 据不变。这就是所谓的单值传递。
函数的形参和实参具有以下特点:
(1)、形参变量只有在被调用时才分配内存单元,在调用 结束时, 即刻释放所分配的内存单元。因此,形参只有在 函数内部有效。 函数调用结束返回主调函数后则不能再使 用该形参变量。
精选课件ppt
}
精选课件ppt

第七章 输入与输出

第七章 输入与输出

0值,否者返回0
int
islower(int c);
• 测试字符是否为小写英文字母,若是,则返回非 0值,否者返回0
2.
字符类函数
int
isalnum(int c);
• 测试字符C是否为英文字母或数字,若是字母或者
数字,返回非0值,否则,返回0
2.
字符类函数
字符类函数需要在文件头包含文件
isalpha(int c);
• 测试字符是否为英文字母,若是字母,则返回非
0值,否则,返回0
int
isdigit(int c);
• 测试字符是否为阿拉伯数字,若是数字,则返回 非0值,否者,返回0
2.
字符类函数
int
isupper(int c);
• 测试字符是否为大写英文字母,若是,则返回非
程序设计基础(C语言)
Email: C语言交流群

掌握标准输入与输出函数
掌握格式化输入与输出函数
了解数学函数
了解随机数发生器
在前六章中,我们查看数据结果是通过printf()函
数来实现的,这个函数的具体格式是怎样的?
其次,我们获取输入是通过scanf()或者gets()来实
现的,这两个函数的调用方法有何区别?
return 0; }
int
tolower(int c)
• 把字符转换成小写字母,非字母字符不做处理
int
toupper(int c)
• 把字符转换成大写字母,非字母字符不做处理
int
isdigit(char ch);
• 判断字符是否为数字
3.
char *gets(char *buffer)

C语言程序设计教程 第七章 课后习题参考答案

C语言程序设计教程 第七章 课后习题参考答案
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
for(i=0;i<M;iபைடு நூலகம்+)
{
for(j=0;j<N;j++)
{
if(i==j)
m+=a[i][j];
}
}
printf("主对角线元素之和为:%d\n",m);
批注本地保存成功开通会员云端永久保存去开通
P198 3求主、副对角线元素之和
#include<stdio.h>
#define M 4
#define N 4
int main()
{
int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int i,j,m=0,n=0;
{
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
printf("\n");
printf("排序后的数组为:\n");
for(i=0;i<N;i++)
{
printf("%4d",a[i]);
}
}
P76 3成绩
#include<stdio.h>
void input(int cla[50][3],int n);

C程序设计(第四版)第7章结构体与共用体

C程序设计(第四版)第7章结构体与共用体

7.1.1
结构体类型的定义
结构体在说明和使用之前,必须先由用 户自己定义。结构体定义的一般形式如下: struct 结构体名 { 成员类型说明符 成员项1; 成员类型说明符 成员项2; …… 成员类型说明符 成员项n; };
其中: 1、struct是C语言中定义结构体的关键字。 2、成员类型说明符是说明每个成员项的数 据类型,可以是基本数据类型,也可以是数组 类型,还可以是另一个已定义的结构体类型。 3、成员名可以和程序中的变量名相同,两 者不代表同一对象。 4、要注意,在结构体定义中的右括号后应 该有分号。
7.1.6
指向结构体的指针
一个结构体类型的数据在内存中都占据一定 的存储空间,我们可以定义一个指针来指向该 结构体类型的数据,该指针变量称为指向结构 体的指针,简称之为结构体指针。我们可以通 过结构体指针来访问结构体类型的数据,如结 构体变量、结构体数组。指向结构体的指针变 量说明形式如下: struct 结构体类型名 *结构体指针变量名;
main() { struct student stu1; struct student *p; p=&stu1; stu1.num=50201001; gets(); stu1.score=89.5;
printf(“No:%ld\nName:%s\nScore:%4.1f\n”,stu1 .num,,stu1.score); printf(“No:%ld\nName:%s\nScore:%4.1f\n”,(*p). num,(*p).name,(*p).score);
3、结构体数组应用举例 【例7-2】现有三个候选人(每个候选人的ID 号分别是1、2、3),选举人投票进行选举, 编写程序统计出每个候选人的得票结果。 程序如下: #define NUM 30 #include <stdio.h> struct elector { int id; char name[20]; int count;

☆C语言实验五(第七章一维数组:排序综合题)

☆C语言实验五(第七章一维数组:排序综合题)

【2008春上机编程题_C07】【解题思路】:在理解上述要求基础上,只用一个主函数完成:找出Fibonacci 数列的前40个数,存放在一维数组m[40](声明长整型变量long)中,然后找出其中所有素数,存放在一维数组n[40]中(提示:n数组要求对素数总数以k计数),再选用一种排序法对一维数b进行降序排列,最后按长整型量以“%9ld”形式、一行五个数据将满足条件的数据输出到屏幕:【提示】:排序方法有“简单起泡法”;“双向起泡法”;“选择法”;所以要求学生在调试上述程序基础上按班组选取排序方法,编写本次作业。

(约定:起始Fibonacci数列存放在一维数组m[40]中,挑选出的素数存放在一维数组n[40]中,最后以升序排列的数组n输出,满足素数的个数设定为k)。

(参考教科书P134)(参考上机指导书P54例7.5、2010春完善程序题第15题或软件第七章填空第15题)原理为“下列程序的功能是对n数组n[0]~a[k-1]中存储的k个整数从大到小排序。

排序算法是:第一趟通过比较将k个整数中的最小值放在a[k-1]中,最大值放在a[0]中;第二趟通过比较将k个整数中的次小值放在a[k-2]中,次大值放在a[1]中,………,依次类推,直到待排序序列为递减序列。

”P50例7.2)【软件第七章】选择:1,下列一维数组的声明中,正确的是____(22)_____。

A. int a[];B. int n=10,a[n];C. int a[10+1]={0};D. int a[3]={1,2,3,4};5.以下程序运行后的输出结果是_____(25)___。

main(){ char a[7]="a0\0a0\0";int i,j;i=sizeof(a);j=strlen(a);printf("%d %d",i,j);}A.2 2B.7 2C.7 5D.6 28.以下声明中错误的是_____(27)_____。

C语言 第七章

C语言 第七章

7.4、对被调用函数的声明和函数原型
⒈ 对被调用函数说明的前提条件
必须是已存在的函数,如用户自定义函数或库函数。 2.被调用函数是用户自定义函数的函数说明 主调函数和被调用函数在同一文件中, 在主调函数中说明被调函数类型。
在C语言中,以上的函数说明称为函数原型。 main() 对被调用函数的说明 { float add(float x,float y); float a, b, c; scanf(“ %f, %f”, &a, &b); 作为表达式被调用 c=add(a,b) ; printf(“ sum is %f ”, c ); } /*定义add函数*/ float add (float x,float y) { float z; z=x+y; return (z); }
7.3 调用函数
• 调用函数就是使用函数。 • 调用函数之前,必须首先声明函数。 • 声明函数就是声明:函数名、函数返回 值的类型和参数的类型。 • 例:
int Power(int, int);
一、函数调用的一般形式 有参数函数
函数名(实际参数表)
无参数函数
函数名()
二、函数调用的具体方式
1.函数调用作为一个语句 函数名(实际参数表);
main( ) { int max( int x, int y) ; int a,b,c; scanf (“%d,%d,&a,&b); c=max(a,b); printf(“Max is %d”,c);} int max( int x, int y) { int z; z=x>y? x:y; return(z);} void print_star()
四、 形式参数和实际参数

第七章 指针

第七章  指针
第8 章
指针
华厦职业学院
C语言程序设计
在这一章中将介绍C语言程序的指针,指针是 一内存中的地址,任何一个变量在内存中都有一个 空间,这个空间有一个地址,这个地址就是变量的 指针,通过指针可以实现对内存的直接访问。
华厦职业学院
C语言程序设计
8.1 8.2 8.3 8.4 8.5 8.6 8.7
指针概述 指针与函数参数 指针与数组 数组与函数参数 字符串与指针 指针与二维数组 动态数组
华厦职业学院
C语言程序设计
指针变量的赋值
指针变量是一个可以存储指针值的变量,在32位系 统中它占4个字节,可以把一个变量用&取地址后赋 值给这个指针变量,例如:
int a=1,*p; p=&a; 此时p存储了变量a的地址。注意变量p本身也是一个变量, 它自己也有一个存储单元,这个存储单元显然与变量a的 存储单元是不同的,变量a的存储单元存储的是变量a的值, 而变量p存储单元存储的是变量a单元的地址,如图7-3所 示。
华厦职业学院
C语言程序设计
通过指针访问变量
既然指针变量指向一个变量,因此通过指针变 量也就知道变量的位置,知道位置也就能访问到变 量,可以通过指针变量存取变量的值。
华厦职业学院
C语言程序设计
C中规定通过:
*指针变量 来访问对应变量的值,例如: • int a=1,b,*p; • p=&a; • *p=2; // 设置p指向的变量的值为2,既a=2 • b=*p; // 把p指向的变量的值赋予b,既b=2 在C语言中,系统对“*指针变量”的解释是根据指 针变量的类型计算出对应变量所占字节数,之后把指针变 量所指的连续的几个字节的二进制数据看成是与指针变量 同类型的数据并存取这一include <stdio.h> void fun(int *p,int b) { printf("fun中: p=%p *p=%d &b=%p b=%d\n",p,*p,&b,b); *p=100; b=100; } void main() { int a=1,b=2,*p; p=&a; printf("调用前: p=%p a=%d &b=%p b=%d\n",p,a,&b,b); fun(p,b); printf("调用前: p=%p a=%d &b=%p b=%d\n",p,a,&b,b); }

C语言第7章_指针

C语言第7章_指针

退出
指针运算
算术运算 int *p, a[10]; p = a; p++; /*p的值增加多少?*/ 的值增加多少? 的值增加多少 指针的加减运算是以其指向的 指针的加减运算是以其指向的 类型的字节长度为单位的 类型的字节长度为单位的
6000 6001 6002 6003 6004 6005 6006
swap函数的几种错误形式(3/3) 函数的几种错误形式 3/3)
指针p没有确切地址 指针 没有确切地址 void Swap(int *p1, int *p2) { int *p; /*指针 未初始化*/ /*指针p未初始化*/ 指针p未初始化 *p = *p1; *p1 = *p2; *p2 = *p; }
退出
寻址方式
如何读写内存中的数据? 如何读写内存中的数据? 两种寻址方式 直接(寻址)访问 直接(寻址)
通过变量地址直接存取变量内容
0 ┇ 3 6 9 ┇ 3010 2000 变量 i_pointer 变量 i 变量 j 变量 k 内存用户数据区
通过变量的地址访问变量所在的 2000 存储单元
2002 2004
退出
指针运算
赋值运算 指针在使用前一定要赋值 为指针变量赋的值必须是一个地址 main() { int *p; scanf("%d",p); … }
错! 但TC下不报错 下不报错 VC下报错 下报错
main() { int a,*p=&a; scanf("%d",p); … }
退出
指针与函数
指针既然是数据类型,自然可以做函数参数和返回值 指针既然是数据类型, 的类型 指针做函数参数的经典例子: 指针做函数参数的经典例子:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

18
C++语言程序设计
二维数组举例
#include<iostream.h> Void main() {int array2[2][3]={{11,12,13},{21,22,23}}; for(int i=0;i<2;i++)
某次运行之后 的输出结果:
0X0065FDE0
{cout<<*(array2+i)<<endl; //输出第i行的起始地址 11,12,13
21
C++语言程序设计
指针应用举例
#include<iostream.h> Void main() {int *pt_int; float *pt_float; int pig=7,dog=27; float x=1.2345,y=32.14; Void *general;
Pt_int=&pig;
12
C++语言程序设计
使用数组名和下标
Void main() { int a[10]; int I; for(i=0;i<10;i++) cin>>a[i]; for(i=0;i<10;i++) cout<<endl<<a[i]; }
13
C++语言程序设计
使用数组名和指针运算
Void main() { int a[10]; int I; for(i=0;i<10;i++) cin>>a[i]; for(i=0;i<10;i++) cout<<endl<<*(a+i) }
14
C++语言程序设计
使用指针变量
Void main() { int a[10]; int *p,i; for(i=0;i<10;i++) cin>>a[i]; for(p=a;p<(a+10);p++) cout<<endl<<*p; }
15
C++语言程序设计
指针数组
数组的元素是指针型 例:point *pa[2];
通过指针访问对象成员 对象指针名->成员名
26
C++语言程序设计
对象指针应用举例
Void main() { point A(5,10); point *ptr; ptr=&A; int x; x=ptr->GetX(); cout<<x<<endl; }
27
C++语言程序设计
动态内存分配
动态申请内存操作符new New 类型名T (初值列表) 功能:在程序执行期间,申请用于存放
指针的声明、赋值与使用
#include<iostream.h> Void main() {int *i_point;//声明int型指针i_point int I; i_pointer=&i;//取i的地址赋给i_poiter i=10; cout<<“输出i的值:”<<i<<endl; cout<<“输出指针i_pointer所指向的值:”<<*i_pointer<<endl; } 输出结果: 10 10
Void print(const int *p,int n) { cout<<“{”<<*p; For(int i=1;i<n;i++) Cout<<“.”<<*(p+i); Cout<<“}”<<endl; }
25
C++语言程序设计
指向类类型对象的指针
声明形式: 类名 *对象指针名;
例: point A(5,10); point *ptr; ptr=&A
#include<iostream.h> Const int N=6; Void print(const int *p,int n); Void main() {int array[N]; for(int i=0;i<N;i++) cin>>array[i]; Print(arra序设计
//由pa[0],pa[1]两个指针组成
16
C++语言程序设计
例:利用指针数组输出单位矩阵
#include<iostream.h> Void main() {int line1[ ]={1,0,0};//声明数组,矩阵第一行 int line2[ ]={0,1,0};//声明数组,矩阵第二行 int line3[ ]={0,0,1};//声明数组,矩阵第三行 Int *p_line[3]; //声明整形指针数组 P_line[0]=line1;//初始化指针数组元素 p_line[1]=line2; P_line[2]=line3; }
声明:
内存用户数据区
例:static int I;
static int *i_pointer=&i; 使用:
2000
3(变量i)
例1:i=3;
*i_pointer=3;
i_pointer
*i_pointer
2000(i_point)
2000
3
3
C++语言程序设计
指针变量的初始化
.语法形式
存储类型 数据类型 *指针名=初始地址;
例:int *pa=&a;
.注意事项
1、用变量地址作为初值时,该变量必须在指 针初始化之前已说明过,且变量类型应与
指针类型一致
2、可以用一个已赋初值的指针去初始化另一 个指针变量。
3、不要用一个内部auto型变量去初始化
static型指针
4
C++语言程序设计
指针变量的赋值运算
指针名=地址 .“地址”中存放的数据类型与指针类型必须相符。 .向指针变量赋的值必须是地址常量或变量,不能是普通
*pt_int+=dog;
Cout<<“现在pig的值 是:”<<*pt_int<<“\n”;
General=pt_int;
//指向int型的指针赋值给 void型指针
Pt_float=&x;
y+=5*(*pt_float);
Cout<<“现在y的值 是:”<<y<<“\n”;
General=pt_float;
19
C++语言程序设计
指针与常量——指向常量的指针
不能通过指针来改变所指对象的值,但指针本身可 以改变,可以指向另外的对象。例:
const int n2=5; const int *pn=&n2; *pn=6;//错误 例:const char *name1=“john”;
char s[ ]=“abc”; name1=s;//正确 *name1=‘1’;//错误
20
C++语言程序设计
指针与常量——指针常量
若声明指针常量,则指针本身的值不能被 改变
例: Int n1=3; Const int n2=5; Int *const pn=&n1; Pn=&n2;//错误 *pn=6;//正确 例: char * const name1=“john”;
name1=“abc”;//错误
for(int j=0;j<3;j++)
array2
{cout<<*(*(array2+i)+j)<<“ ”;}
0X0065FDEC
Cout<<endl;
21,22,23
}
}
Array2[0]——array[0][0] array[0][1] array[0][2]
array2
Array2[1]——array[1][0] array[1][1] array[1][2]
30
C++语言程序设计
Void main() {int index,*point1,*point2; Point1=&index; *point1=77; Point2=new int; *point2=173; Cout<<“index的值是:”<<index<<“ ”<<*piont1<<“ ”<<*point2<<“\n”; Delete point2; Point1=new int; Point2=point1; *point1=999; Cout<<“index的值是:”<<index<<“ ”<<*point1<<“ ”<<*point2<<“\n”; Delete point1; Float *float_point1,*float_point2=new float; Float_point1=new float; *float_point2=3.14159; *float_point1=2.4*(*float_point2); Delete float_point2; Delete float_point1;
整数。但可以赋值为整数0,表示空指针。 .指针的类型是它所指向变量的类型,而不是指针本身数
据值的类型,任何一个指针本身的数据值都是 unsigned long int 型。 .允许声明指向void类型的指针。该指针可以被赋予任 何类型对象的地址。 例:void *general;
相关文档
最新文档