《C语言程序设计》第6章 函数

合集下载

C语言程序设计 第六章 函数 试题及答案

C语言程序设计 第六章 函数 试题及答案
A)实参可以是常量、变量或表达式
B)形参可以是常量、变量或表达式
C)实参可以是任意类型
D)实参应与其对应的形参类型一致
参考答案:B
6.8以下正确的说法是。
A)定义函数时,形参的类型说明可以放在函数体内
B)return后面的值不能为表达式
C)如果函数的类型与返回值类型不一致,以函数类型为准
D)如果形参与实参的类型不一致,以实参类型为准
A)float型B)int型C)long型D)double型
参考答案:B
6.12 C语言规定,函数返回值的类型是由所决定。
A)return语句中的表达式类型
B)调用该函数时的主调函数类型
C)调用该函数是系统临时指定
D)在定义该函数时所指定的函数类型
参考答案:D
*6.13下面函数调用语句含有实参的个数为。
if(m!=-1) n=m;
}
printf("\nn=%d",n);
}
【1】A)k*10 B)k%10 C)k/10 D)k*10%10
【2】A)a2*10 B)a2 C)a2/10 D)a2%10
参考答案:【1】C【2】A
6.18以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'A','B','C');则符合程序段运行结果的选项是。
A-->C A-->C B-->C B-->C
A-->B A-->B A-->C A-->C
参考答案:C
6.19若用数组名作为函数调用的实参,传递给形参的是。
A)数组的首地址B)数组第一个元素的值
C)数组中全部元素的值D)数组元素的个数

《C语言程序设计》基本知识点

《C语言程序设计》基本知识点

《C语言程序设计》基本知识点第一章C语言基本知识1.C源程序的框架尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。

2.C语言源程序的书写规则:(1)C源程序是由一个主函数和若干个其它函数组成的。

(2)函数名后必须有小括号,函数体放在大括号内。

(3)C程序必须用小写字母书写。

(4)每句的末尾加分号。

(5)可以一行多句。

(6)可以一句多行。

(7)可以在程序的任何位置加注释。

3.语句种类语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。

(1)流程控制语句流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。

其中后两种结构要用特定的流程控制语句实现。

(2)表达式语句表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。

表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。

最常见的表达式语句是赋值语句。

(3)函数调用语句函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。

(4)空语句空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。

(5)复合语句复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。

注意复合语句中最后一个语句末尾的分号不能少。

复合语句右大括号后面没有分号。

4.运算符用来表示数据各种操作的符号称为运算符。

运算符实际上代表了一种类型数据的运算规则。

不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。

C语言第6章习题解答

C语言第6章习题解答

第6章函数和模块设计【习题6-1】更正下面函数中的错误。

(1)返回求x和y平方和的函数。

(2)返回求x和y为直角边的斜边的函数。

sum_of_sq(x,y) hypot(double x,double y){ {double x,y; h=sqrt(x*x+y*y);return(x*x+y*y); return(h);} }程序如下:/*c6_1(1).c*/ /*c6_1(2).c*/(1) (2)double sum_of_sq(double x,double y) double hypot(double x,double y) { {return(x*x+y*y); double h;} h=sqrt(x*x+y*y);return(h);}【习题6-2】说明下面函数的功能。

(1)itoa(int n,char s[ ])(2)int htod(char hex [ ]){ { int i,dec=0;static int i=0,j=0; for(i=0;hex[i]!='\0';i++)int c; { if(hex[i]>='0'&&hex[i]<='9') if(n!=0) dec=dec*16+hex[i]-'0';{ if(hex[i]>='A'&&hex[i]<='F') j++; dec=dec*16+hex[i]-'A'+10;c=n%10+'0'; if(hex[i]>='a'&&hex[i]<='f') itoa(n/10,s); dec=dec*16+hex[i]-'a'+10;s[i++]=c; }} return(dec);else }{ (3)void stod(int n)if(j==0) s[j++]='0'; { int i;s[j]='\0'; if(n<0){ putchar('-');n=-n;} i=j=0; if((i=n/10)!=0) stod(i);} putchar(n%10+'0');} }功能:(1)(略)(2)(略)【习题6-3】编写已知三角形三边求面积的函数,对于给定的3个量(正值),按两边之和大于第三边的规定,判别其能否构成三角形,若能构成三角形,输出对应的三角形面积。

大学C语言程序设计 第六章

大学C语言程序设计 第六章

2.函数表达式: 2.函数表达式: 函数表达式
功能:将函数作为表达式的一部分。 功能:将函数作为表达式的一部分。 如: c=2*max(a,b); 要点:要求函数带回一个确定的值,以参加表达式的运算。 要点:要求函数带回一个确定的值,以参加表达式的运算。
3.一个函数作为另一个函数的参数: 3.一个函数作为另一个函数的参数: 一个函数作为另一个函数的参数
若不需要函数带回任何值,可使用: 若不需要函数带回任何值,可使用:
void printstar(){ …} } void print_message(){…} print_message(){ }
例exp6_5:函数返回值的类型与其定义的 exp6_5:函数返回值的类型与其定义的 类型不符的情况。 类型不符的情况。
一函数的定义重点二函数的调用重点1函数的一般调用2函数的嵌套调用3函数的递归调用三数组作为函数的参数难点四局部变量与全局变量难点五变量的存储类别难点六内部函数与外部函数1概述2函数定义的方法重点3函数的参数难点4函数的返回值难点1c程序的基本结构回顾2什么是函数
第六章
[教学要求] 教学要求]


1.理解函数的功能。 理解函数的功能。 2.掌握函数定义的一般形式(重点)。 掌握函数定义的一般形式(重点)。 掌握函数的形参与实参的对应关系、 3.掌握函数的形参与实参的对应关系、参数传递方法及函数返回值 的概念(难点) 的概念(难点) 。 掌握函数调用的基本方法(重点) 4.掌握函数调用的基本方法(重点) 。 掌握函数嵌套调用的一般过程(重点) 5.掌握函数嵌套调用的一般过程(重点) 。 了解函数递归调用的几种形式。 6.了解函数递归调用的几种形式。 掌握数组名作为函数的参数的一些特点(难点) 7.掌握数组名作为函数的参数的一些特点(难点) 。 8.掌握局部变量与全局变量的概念及它们的使用特点(难点) 。 掌握局部变量与全局变量的概念及它们的使用特点(难点) 掌握动态存储变量与静态存储变量的含义,会正确识别和使用。 9.掌握动态存储变量与静态存储变量的含义,会正确识别和使用。 10.了解内部函数与外部函数的含义。 10.了解内部函数与外部函数的含义。

c语言程序设计第6章PPT课件

c语言程序设计第6章PPT课件

End Sub
第20页/共49页
6.2 函数过程的定义与调用
• 【例6-6】 编写计算阶乘的函数过程,当用户单击窗体时,利用下列近似公式计算 (直到最后一项小于10-7为止)。
Private Sub Form_Click() 调用函数Fact的程序代码如下:
Dim n!
Private Function Fact(x!)
c > a + b Then MsgBox "输入的三条边
不能构成一个三角形!" Else Call area(a, b, c, w) txtMj.Text = Str(w) End If
End Sub
第11页/共49页
6.1 子过程的定义与调用
• 2. 把过程名作为一个语句来用 语法: 过程名 [实参1[,实参2……]] 它与Call语句的不同点是:去掉了Call关键字和实参列表的括号。 如上例中可以改成:area a,b,c,w
(3)在函数体内,函数名可以当变量使用,函数
第14页/共49页
6.2 函数过程的定义与调用
• (4)如果函数体内没有给函数名赋值,则返回对应类型的缺省值, 数值函数返回0,字符串函数返回空字符串,变体型函数返回Empty。
• (5)As类型:是指函数返回值的类型,若省略,则函数返回变体类 型值(Variant)。
• 6.3.2 变量的作用域 • 1. 局部变量 在过程内部(如Command1_Click)使用Dim或者Static关键字来声明的变量,只在声明它们的 过程中才能被访问或改变该变量的值,别的过程不可访问。所以可以在不同的过程中声明相同名字的 局部变量而互不影响。
第26页/共49页
6.3 变量、过程的作用域

《C语言与程序设计》实验06---函数

《C语言与程序设计》实验06---函数

实验六函数一、实验目的1. 熟练掌握函数的定义、函数的类型和返回值。

2. 熟练掌握形式参数与实际参数、参数值的传递。

3. 掌握函数的嵌套调用与递归调用。

4.学会使用指向函数的指针变量。

5.了解指向指针的指针的概念及带参数的main函数。

6. 掌握局部变量和全局变量。

7. 掌握变量的存储类型。

8. 了解内部函数和外部函数。

二、实验学时:8课时三、预习知识1.标准库函数标准库函数是C系统提供的,这些库函数定义了一些基本的、常用的功能,用户可以使用这些库函数,但是在使用库函数之前需要用预编译命令# include将该库函数所在的头文件包含进来。

2.自定义函数定义函数一般有两种形式形式1:存储类型类型符函数名(类型符形参1,类型符形参2 ,… ) { 说明语句执行语句}形式2:存储类型类型符函数名(形参1,形参2 ,……)形参类型说明{ 说明语句执行语句}说明:①形参表中即使没有参数,函数名后的一对圆括号也不能省略。

②函数名前的类型符是用来说明函数返回值的数据类型(也作为函数的数据类型) 。

当函数值为整型时,类型符可以省略。

③当函数只完成某一特定操作不需要返回值时,可用类型标识符 void 说明,将函数定义成空类型。

④C 规定:不允许在一个函数内部再定义另外一个函数,即函数不允许嵌套定义。

⑤函数的存储类型:函数的存储类型有 extern 和 static 两种。

extern 型的函数除了可以被本程序中其它函数调用外,还可以被其它文件中的函数调用,这种函数称为外部函数,如果定义函数时省略 extern ,则隐含为外部函数。

static 型的函数只能被本源程序文件中的函数调用,称为内部函数(静态函数)。

3.函数的参数(1)在定义函数时函数名后面括号中的变量称为形参(形式参数),如果有两个以上形参,形参之间以逗号分隔。

形参是函数的内部变量,只在函数内部才有意义。

在未出现函数调用时,形参不占内存。

对每个形参必须指明其名字和数据类型。

C语言程序设计教案第6章21-24

C语言程序设计教案第6章21-24
选择排序以纸牌为例选择冒泡排序的执行过程,构造数据存储方式,通过动画与流程图展示算法设计思路,最后编程实现算法设计。指出两种排序的不同之处。
【问题】两种排序算法哪一种排序效率更高,高在什么地方?
6.2嵌套与递归设计与应用(0.5学时)
教学内容
(1)函数的嵌套。
(2)函数的递归设计与应用。
讲解思路
(1)函数的嵌套
二维数组作为函数参数:用实例来说明数组传递数据的重要作用。
【实践】编写程序实现(1)中的例题。
5.4模块化设计中程序代码的访问和应用实例(1学时)
教学内容
(1)模块化设计中程序代码的访问。
(2)应用实例。
讲解思路
(1)模块化设计中程序代码的访问举例说明用指针可以访问程序代码。
(2)应用实例。
计算器增加一个连续相加的功能。
(3)教师程序编写:让学生观摩程序的编写、运行及产生结果的过程,与知识点一一对应,加深理解。
(4)学生用手机C语言模拟器编写程序:题目与例题类似,但小有变化,让学生在设计中的错误。
(5)问答:就一些知识点的变化与学生进行问答互动。
(6)就(4)和(5)中同学们的表现给出部分平时分,为了鼓励同学们的参与积极性,答对者加2-3分。
(3)掌握模块间批量数据传递的方法,提高综合应用程序设计的能力。
重点:简单的排序算法、嵌套与递归设计与应用、模块间的批量数据传递。
难点:递归调用、学生成绩管理综合用例。
教学方法及手段
(1)课件:根据本节课程设计的内容及计划安,逐步展现知识点。
(2)板书:针对学生在学习和练习过程中出现的问题,进行补充讲解。调节课堂节奏,给学生思考的时间。
模块化设计中程序代码的访问
应用实例

C语言程序设计实验六函数答案《西北民大电气学院》

C语言程序设计实验六函数答案《西北民大电气学院》

实验六函数一,实验目的:1,掌握定义函数的方法.2,掌握函数实参与形参的对应关系,以及"值传递"的方式.3,掌握函数的嵌套调用和递归调用的方法.4,掌握全局变量和局部变量动态变量,静态变量的概念和使用方法.二,实验准备:1,复习函数调用的基本理论知识.2,复习函数的嵌套调用和递归调用的方法.3,复习全局变量,局部变量;静态变量,动态变量;外部变量等概念和具体使用. 4,源程序.三,实验步骤及内容:1,运行程序并回答问题(1)程序main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n")}void print_message(){ printf("Good Friend! \n");}void play(n)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}}问题:运行后出现什么错误为什么应如何修改请上机调试.修改:main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n");(缺少分号)}void print_message(){ printf("Good Friend! \n");}play(n)(原先void的与声明类型不同)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}getch();}运行结果(2)以下程序用于计算1+2+3+4+5.main(){ int i,sum;for(i=1;i<=5;++i)sum=add(i);printf("sum=%d\n",sum);getch();}add (a)int a;{static int s=0;s=s+a;return(s);}运行结果:问题:此程序能否得到正确结果为什么请在不增加语句的条件下,修改程序并上机调试.(3)程序int x=567,y=890;main(){ printf("x=%d,y=%d\n",x,y);}运行结果:问题:运行程序后出现什么错误为什么如何修改答:定义位置出错,y的定义在主函数之后了,将y的定义改在和x一样的位置处。

C语言程序设计:第6章函数课件教案

C语言程序设计:第6章函数课件教案

C语⾔程序设计:第6章函数课件教案C语⾔程序设计课件教案第六章函数教学⽬的掌握函数的定义、函数的声明、函数的调⽤、函数的设计原则,能够灵活的去定义和调⽤函数。

教学要求1.掌握函数的定义、声明、调⽤掌握常量的概念与使⽤2.熟练掌握函数的设计原则3.熟练掌握函数形参的异常判断、函数返回值的使⽤重点和难点1.函数定义和使⽤2.形参的异常判断、函数返回值的使⽤教学⽀撑环境与教学资源:1.笔记本电脑2.VC20103.投影仪教学⽅法讲授法、练习法、讨论法授课课时6课时教学过程⼀、课程引⼊什么是模块化?模块化有哪些特点?我们C语⾔中是否可以实现模块化编程?函数是完成⼀个个特定任务的语句集合,它能完成你所想要的某种特定任务,当你要⽤时,只需要调⽤它即可,在后续的修改或是维护过程中,只需要针对这⼀个进⾏修改即可。

作⽤1:减少程序的代码量作⽤2:代码复⽤作⽤3:使程序具有良好的结构⼆、函数的定义函数的定义:包括两个部分,分别是“函数头”和“函数体”。

返回值数据类型函数名(数据类型形参1,数据类型形参2,....)//函数头{//函数体(可以有多条语句)}[注意1]:函数的返回值和参数可以是任意类型,包括空类型!!当函数⽆返回值或⽆形参列表时,建议⽤void指明[注意2]:函数名是⼀种标识符,必须符合标识符的命名规则!单词⾸字母不⼤写,从第⼆个单词起⾸字母⼤写。

[注意3]:函数的参数可以没有,也可以有多个参数(本章最后讲解)【思考】如果源⽂件只有如上说是的代码可以运⾏吗?同学们⾃⼰尝试⼀下![注意4]:⼀个项⽬中必须要有⼀个主函数,没有主函数,程序找不到执⾏的⼊⼝,代码⽆法运⾏。

[注意5]:函数头要有头注释(功能,参数,返回值),函数定义不可以嵌套。

【思考】现在在上⾯代码的基础上添加好主函数,试试可以运⾏吗?[注意6]:函数如果不被调⽤,就不会执⾏。

三、函数的调⽤语法 : 函数名(实际参数1,实参2,...)#includevoid printStar(void){printf("****");return ;}int main(void){printStar();//调⽤函数printStarreturn 0;}[注意1]:如果是A函数调⽤B函数,则A函数叫主调函数,B叫被调⽤函数在这个代码⽰例中,main函数就可以称为主调函数,prinfStar函数就可以称为被调函数。

《C语言程序设计》 课后习题答案 高等教育出版社

《C语言程序设计》 课后习题答案 高等教育出版社

《C语言程序设计》课后习题答案高等教育出版社《C语言程序设计》课后习题答案高等教育出版社第一章:C语言概述1. C语言的特点C语言是一种以处理底层任务和系统编程为目标的高级编程语言。

其特点包括语法简洁、执行效率高、可移植性强等。

第二章:C语言基本数据类型1. C语言中的基本数据类型C语言中的基本数据类型包括整型、字符型、浮点型等。

整型可以进一步细分为有符号整型和无符号整型。

第三章:C语言运算符1. C语言中的运算符C语言中常见的运算符包括算术运算符、赋值运算符、关系运算符、逻辑运算符等。

这些运算符用于执行各种数学和逻辑操作。

第四章:C语言控制语句1. C语言中的条件语句C语言提供了if语句和switch语句来实现条件判断。

if语句用于执行基于布尔表达式的条件分支,而switch语句用于根据不同的值执行不同的代码块。

第五章:C语言函数1. C语言中的函数定义和调用函数是C语言中的基本模块,用于封装可重用的代码。

函数定义包括函数返回类型、函数名、参数列表和函数体等部分。

第六章:C语言数组1. C语言中的数组定义和使用数组是一组相同类型的数据元素的集合。

C语言中可以使用数组来存储和操作大量数据。

第七章:C语言指针1. C语言中的指针概念指针是一种变量,它存储了内存地址。

通过指针,可以直接访问和修改对应内存地址中的数据。

第八章:C语言字符串1. C语言中的字符串操作字符串是由一系列字符组成的数据类型。

C语言通过字符数组来表示和操作字符串。

第九章:C语言结构体1. C语言中的结构体定义和使用结构体是一种自定义的复合数据类型,它可以包含多个不同类型的成员变量。

第十章:C语言文件操作1. C语言中的文件读写操作文件操作是一种重要的数据输入和输出方式。

C语言提供了一系列函数来实现文件的读写操作。

总结:通过解答以上习题,我们可以更好地掌握C语言的各个方面,提升我们的编程能力和解决问题的能力。

希望本文对读者有所帮助。

C语言教案:第6章 函数

C语言教案:第6章  函数
说明:
1、在主调函数中说明被调函数的类型。 2、几种情况除外: (1)被调函数的返回值是int或char型时 (2)被调函数的定义出现在主调函数之前时
2013-8-6 20
如:
如:
long f()
{ …… }
float a();
main() {………… a(); ………....} float a() {…………}
§6.4函数调用 一、函数调用形式
函数名(实际参数表)
二、函数调用方式 1、作为语句调用 max(a,b); 调用无返回值函数
2、作为表达式调用 c=2*max(a,b);
调用有返回值函数 3、函数参数 m=max(a,max(b,c));
2013-8-6 18
三、对被调函数的说明
例:调用函数求n!。
2、数组元素作函数参数
例: 用数组元素作实参,输出1 ~ 5的平方。
2013-8-6
main() {int a[5],i; for(i=0;i<5,i++) { a[i]=i+1; sq(a[i]);} } sq(int n) {printf("%d\n",n*n); }
10
3、数组名作参数 注意:实参和形参的类型都必须是数组
15
例3: 将一组学生成绩从高分到低分排序。
#difine STUDENT_NUM 10 main() { int score[11],i; void sort(); 主函数: printf("输入学生的成绩:\n"); for(i=1;i<=STUDENT_NUM;i++) scnaf("%d",&score[i]); sort(score,STUDENT_NUM); printf(“从高到低的排列顺序为:\n"); for(i=1;i<=STUDENT_NUM;i++) printf("%d",score[i]); 2013-8-6 16 }

苏小红c语言程序设计课后答案

苏小红c语言程序设计课后答案

苏小红c语言程序设计课后答案苏小红的《C语言程序设计》是一本广泛使用的教材,它以清晰的结构和丰富的示例,帮助学生掌握C语言的基础知识和编程技巧。

课后答案对于学生来说是一个重要的学习资源,可以帮助他们检查自己的学习成果,加深对知识点的理解。

以下是一些可能的课后答案示例,用于帮助学生复习和理解C语言程序设计的相关概念。

第一章:C语言概述1. C语言的发展历史:C语言由Dennis Ritchie在20世纪70年代初期开发,最初用于UNIX操作系统的编写。

2. C语言的特点:C语言是一种结构化语言,具有高度的灵活性和强大的功能,能够进行底层系统编程。

第二章:C语言基础1. 数据类型:C语言提供了多种数据类型,包括整型(int)、浮点型(float和double)、字符型(char)等。

2. 变量声明:变量在使用前必须声明,声明时需要指定数据类型和变量名。

第三章:运算符和表达式1. 算术运算符:包括加(+)、减(-)、乘(*)、除(/)等。

2. 赋值运算符:如`=`,`+=`,`-=`等,用于给变量赋值或进行运算后赋值。

第四章:控制结构1. 条件语句:如`if`,`else if`,`else`,用于根据不同的条件执行不同的代码块。

2. 循环语句:包括`for`循环、`while`循环和`do-while`循环,用于重复执行代码块。

第五章:数组1. 一维数组:存储相同类型的元素,可以通过下标访问数组元素。

2. 多维数组:如二维数组,可以看作是数组的数组。

第六章:函数1. 函数定义:使用`return`类型和函数名来定义函数。

2. 函数调用:通过函数名和必要的参数来调用函数。

第七章:指针1. 指针变量:存储另一个变量的内存地址。

2. 指针运算:包括地址运算和指针的增减。

第八章:结构体和联合体1. 结构体:可以包含不同类型的数据成员。

2. 联合体:所有成员共享相同的内存位置。

第九章:预处理指令1. 宏定义:使用`#define`来定义常量或代码片段。

C语言程序设计教程 第6章

C语言程序设计教程 第6章
2017/8/21 11
模块设计的原则
模块独立
规模适当
层次分明
2017/8/21
功能专一
12
独立性原则表现在模块完成独立的功能 , 和其它模块间的关系简单 , 各模块可以单独调 试。修改某一模块 , 不会造成整个程序的混乱。
每个模块有特定功能
每个模块完成一个相对独立的特定子功能。在对任务逐步 分解时,要注意对问题的综合。例如, 一些模块的相似的 子任务,可以把它们综合起来考虑,找出它们的共性,把它 们做成一个完成特定任务的单独模块。
返回值
另外请注意这样的判断,如写成‘ 最好只使用局部变量,这样将方便调试。 如果不需返回则可 调用函数时输入参数的格式要与之相同 return 0; A‟<capital<„Z‟是不行 注意不要与已有库函数重名 的 2017/8/21
24
“函数”的主要知识点
函数的定义 函数的参数和返回值 函数的调用 嵌套和递归 变量的作用域
2017/8/21
18
例6.2 设计算法:找出a,b两数中的较大者,并输出
分析: 这个问题分三个步骤: • 输入两个数; • 找出其中的大数; • 输出大数。
2017/8/21
19
开始
输入a,b
0 a<b 非0 交换a,b 输出a
结束
2017/8/21
图6.3 找出a,b两数中的较大者算法流程图
2017/8/21
34
函数返回值
函数返回值通过return语句获得 函数返回值的类型就是函数的类型 return y; 将变量y的值返回给调用者 return y+3; 将表达式的值返回给调用者
2017/8/21 35
return 的数据类型与函数的类型矛盾时,自动 将数据转换成函数的类型

C语言程序设计 第6章

C语言程序设计 第6章

#include <stdio.h> #include <stdlib.h> main( ) { int a[10]; /*定义数组*/ int k,j; float ave,s; k=0;s=0.0; for(j=0;j<10;j++) /*用数组存放10个随机整数*/ a[j]=rand()%50; printf("数组中的值:"); for(j=0;j<10;j++) /*输出10个随机整数*/ printf("%6d",a[j]); printf("\n"); for(j=0;j<10;j++) { if(a[j]%2==0) /*如果数组元素的值为偶数*/ {s+=a[j];k++;} /*累加及偶数个数计数*/ } if(k!=0) {ave=s/k; printf("偶数的个数:%d\n偶数的平均植:%f\n",k,ave);} }
(2)定义一个二维数组a[N][5],数组每行存放一名 学生的数据,每行前4列存放学生4门单科成绩,第5列 存放学生的总分。 (3)输入N个学生的单科成绩,存入二维数组a中。 (4)通过变量sum累加计算每位学生的总分,然后 赋值给每行的最后一个元素。 (5)输出数组第5列上的值,即为每个学生的总分。
for(i=0;i<N;i++) { sum=0; for(j=0;j<4;j++) /*计算当前学生的总分*/ sum+=a[i][j]; a[i][4]=sum; } for(i=0;i<N;i++) /*输出每个学生的总分*/ printf("第%d个学生的总分为:%d\n",i+1,a[i][4]); }

C语言程序设计课件第06章数组、指针与字符串.ppt

C语言程序设计课件第06章数组、指针与字符串.ppt
pa+i)就是a[i]. –a[i], *(pa+i), *(a+i), pa[i]都是等效的。 –不能写 a++,因为a是数组首地址(是常量)。
17
指针数组
指 数组的元素是指针类型 针 例:Point *pa[2];
由pa[0],pa[1]两个指针组成
*i_pointer 3i
2000
9
指针变量的初始化
指 语法形式 存储类型 数据类型 *指针名=初始地址; 例:int a , *pa=&a;
针 注意事项
➢用变量地址作为初值时,该变量必须在指针初始化 之前已说明过,且变量类型应与指针类型一致。
➢可以用一个已赋初值的指针去初始化另一个指针变 量。
组 ➢ 数组下标从零开始。 ➢ 下标必须是整形表达式。 ➢ 数组元素可以在定义时直接给出初始值列表。 ➢ 数组元素作函数参数同简单变量作函数参数。 ➢ 数组名作函数参数传递的是地址值。 ➢ 二维数组在内存中按行存放。
4
对象数组
数 声明:
类名 数组名[元素个数];
组 访问方法:
数组名[下标].成员名
与!=的关系运算。

– 指向不同数据类型的指针,以及指针与一
般整数变量之间的关系运算是无意义的。
– 指针可以和零之间进行等于或不等于的关
系运算。例如:p==0或p!=0
16
指向数组元素的指针
指 声明与赋值
例:int a[10], *pa;
针 pa=&a[0]; 或 pa=a;
通过指针引用数组元素
C++语言程序设计
第六章 数组、指针与字符串
本章主要内容
数组 指针 动态存储分配 深拷贝与浅拷贝 字符串

C语言程序设计知识点—第6章 数组

C语言程序设计知识点—第6章 数组
[练习]以下能正确定义一维数组的选项是( ) A.int a[5]={0,1,2,3,4,5}; B.char a[]={0,1,2,3,4,5} C.char a={„A‟,‟B‟,‟C‟}; D.int a[5]=”0123”; 答案:B
[练习]以下叙述中错误的是( ) A.对于 double 类型数组,不可以直接用数组名对数组进行整体输入或输出 B.数组名代表的是数组所占存储区的首地址,其值不可改变 C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出”下标越界”
[练习]以下程序的输出结果是( )
main()
{
int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;
for (i=0;i<3;i++)
s+=a[i][j]+a[i][3-i-1];
printf(“%d\n”,s);
}
答案:30
[练习]有以下程序:
#include <stdio.h>
puts 函数完全可以由 printf 函数取代。 当需要按一定格式输出时,通常使用 printf
~ 10 ~
C 语言程序设计知识点
主讲教师:杨剑
函数。 字符串示例
#include <stdio.h> void main() {
char line[30]; int i,count = 0; printf("\n 请输入一行字符:\n "); gets(line); i=0; while(line[i] != '\0') { if(line[i] == ' ') count++; i++;

《C语言程序设计(第五版)》习题答案

《C语言程序设计(第五版)》习题答案

《C语⾔程序设计(第五版)》习题答案各章习题参考答案第1章习题参考答案1. 简述C程序的结构特点。

答:(1) ⼀个C语⾔源程序由⼀个或多个源⽂件组成。

每个源⽂件由⼀个或多个函数构成,其中有且仅有⼀个主函数(main函数)。

(2) ⼀个函数由函数⾸部(即函数的第⼀⾏)和函数体(即函数⾸部下⾯的⼤括号内的部分)组成。

函数⾸部包括函数类型、函数名和放在圆括号内的若⼲个参数。

函数体由声明部分和执⾏部分组成。

(3) C程序书写格式⾃由,⼀⾏内可以写多条语句,⼀个语句也可以分写在多⾏中,每个语句必须以分号结尾。

(4)程序的注释内容放在“/*”和“*/之”间,在‘/’和‘*’之间不允许有空格;注释部分允许出现在程序中的任何位置处。

2. 分析例1.3程序的结构。

答:下⾯是例1.3的程序,它的结构是:有且只有⼀个主函数main以及若⼲个其它函数,还有⼀个被主函数调⽤的sumab函数。

函数有⾸部,包括类型和名称,⾸部下的⼤括号中有变量定义、输⼊、计算和输出等语句。

#includeint sumab (int x, int y); /*函数声明*/int main () /*主函数*/{ int a,b,sum; /*定义变量*/printf("请输⼊变量a与b的值:"); /*提⽰信息*/scanf ("%d %d", &a, &b); /*输⼊变量a和b的值*/sum=sumab(a,b); /*调⽤sumab函数*/printf("a与b的和等于%d", sum);/*输出sum的值*/return 0;}int sumab (int x, int y) /*定义sumab函数,并定义形参x、y */{ int z;z=x+y;return z;}3. 分别编写完成如下任务的程序,然后上机编译、连接并运⾏。

(1) 输出两⾏字符,第1⾏是“The computer is our good friends!”,第2⾏是“We learnC language.”。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【例6-3】函数调用举例,通过函数求xn,在主函数中输入x及 n,并调用该函数,输出结果。
/* example 6-3 函数调用举例 */ #include <stdio.h> float GetPow(float,int); /* 函数原型声明 */ void main(void) { float x,y; int n; printf("Please input x,n:"); scanf("%f,%d",&x,&n); /*输入x,n*/ y = GetPow(x,n); /* 给出实参列表,调用函数 */ printf(‚x^n=%f\n‛,y); /* 将函数的返回值赋给y */ } float GetPow(float x,int n) /* 函数定义,名称:GetPow */ { float z; int i; z = 1; for(i=1; i<=n;i++) /* 循环累乘 */ z*=x; return z; /* 返回累乘积 */ }
⑵传地址方式 形参定义为指针,实参为变量的地址,被调函数通过地址可以 修改地址对应的变量。 #include <stdio.h> 用 函 void swap ( int * , int * ); 数 a 4 void main (void ) 2000H 实 { 现 b 6 2400H int a , b ; 两 scanf ( “%d , %d ” , &a , &b ) ; 个 变 if (a<b) swap ( &a , &b ) ; printf ( “\n %d , %d \n ” , a,b ) ; 量 、 } x 2000H void swap ( int *x , int *y ) 值 { 的 y 2400H 交 int t ; 换 t=*x ; *x=*y ; *y=t ; } 参数变量是否可以实现交换?
专题:函数间的数据传递
函数在调用的过程中,调用函数和被调函数存在数据的相互传 递。数据的传递包括两个方面: ⑴将值传递给被调函数; ⑵将被调函数的结果返回给调用函数。 向被调函数传递值。
调用函数
被调函数据传递方式
⑴通过函数参数传值或传地址; ⑵通过返回值传递结果; ⑶通过全局变量传递参数或结果。
关于返回值的几点说明: ⑴函数可以通过一个return语句返回一个值,也可以不返回值, 此时应在定义函数时用void类型加以说明。 ⑵函数中可以出现多个return语句,遇到一个return 语句,则 返回值,且返回调用函数,继续执行。 ⑶返回值的类型应与函数的类型一致,如不一致,以函数类型 为准,先转换为函数类型后,再返回。 ⑷为了确保参数和返回值类型正确,一般须在函数调用前对其 类型和参数的类型加以说明,该说明称之为原型声明。 int imax ( int ,int ) ; 原型声明语句,加; void main (void ) int max(void) { int max ( int x , int y ) ; { int x,y,z { float z; … if (x>=y ) return x ; ( x,y ) ; … z=imax return y ; return z;/* z先转化为整型*/ … } } }
/* example 6-4 通过函数求两个浮点数之和 */ #include <stdio.h> float fAdd(float ,float); /* 函数原型声明 */ void main(void) { float a,b,c; printf("Pleaes input two number a,b:"); scanf("%f,%f",&a,&b); c = fAdd(a,b); /* 调用函数 */ printf("a+b=%f\n",c); } /*-------------------------*/ /* 函数名 fAdd */ /* 参数:x,y,float型 */ /* 返回值:x+y */ /*-------------------------*/ float fAdd(float x,float y) { float z; z = x + y; return z;
第六章 函 数
——结构化程序设计基础
6.1函数的概念
结构化程序设计要求一种自顶向下的设计方法,也就是将复杂 的系统划分为相对独立的,功能较为单一的子系统的组合。 每个子系统称为模块,在C语言中表现为函数。 复杂问题
main()
优点: 函数实现的功能单一 完整,可以独立设计,单 独调试。易于维护,通用 性强。 各模块之间的关系称之为接口。
定 义 函 数
举例:通过函数求 xn 。 #include <stdio.h > double pow(float , int) ; 原型声明。 void main(void) { int i ; 调用函数。 for (i=1; i <=9 ; i++) printf ( “%d , %f \n” , i, pow(2.5 ,i)); } double pow(float x ,int n ) { int i ; double p=1 ; for (i=1 ; i<=n ; i++) p=p*x ; return ( p) ; }
⑴传值方式
通过实参与形参的结合,将数据值传递给形参,形参的改变不 影响实参。 #include <stdio.h> int splus (int , int ) ; a:2 void main (void ) b:3 调 { int a , b , c ; scanf ( “ %d , %d” , &a ,&b) ; 用 函 c= splus ( a , b ) ; a、b实参变量的值。 传递参数 数 printf ( “ a*b= %d \n ” , c ) ; y: 3 } int splus (int x ,int y ) x: 2 被 { int z ; x、y形参。 调 z=x*y ; 函 z: 6 return (z) ; 返回值 数 }
3 a b 2 3 2 3
z X y
⑴先计算实参的值,从右向左向函数传递调赋值给形参。 ⑵转移在函数中运行,执行到一个return语句,将返回表达式 的值。由函数名带回给调用函数。 函数如果没有return语句,由最后一个}返回一个不确定的值!
【例6-4】定义返回两个浮点数之和的函数,在主函数中输入数 据,并调用函数,输出结果。
【例6-5】参数值传递方式说明举例。
/* example 6-5 函数参数值传递实例 */ #include <stdio.h> void ExamFun(int , int); /* 函数原型声明 */ void main(void) { int a,b; printf("请输入两个整数a,b:"); scanf("%d,%d",&a,&b); ExamFun(a,b); /* 以实参a、b值传递方式调用函数 */ printf("函数调用后a的值%d,b的值%d\n",a,b); } void ExamFun(int x, int y) /* 函数定义 */ { int t; t = x; x = y; y = t; /* 形参变量x,y交换 */ printf("x的值%d,y的值%d\n",x,y); }
⒉函数的定义 格式: type 函数名(参数说明表) int max(int x ,int y) { { 内部说明语句 ; 如果函数有返回值,应含 int 功能语句 ; 有return语句。 z ; } z=x>=y? x : y ; 说明: return ( z) ; ⑴函数不能嵌套定义,但可以嵌套引用,包括引用自己。 ⑵函数如果无返回值,type 应说明为空类型void。函数无参 } int max(int x,int y) { 数应定义成void。 void Bell(void) { printf(“\007”); }
6.2 函数的定义和调用
⒈函数的基本结构 (1)函数的名称 #include <stdio.h> void main(void ) (2)函数的类型 { (3)函数的形式参数 主 int a,b,c; 函 scanf ( “%d,%d” , &a, &b) ; (4)函数体 数 c=max( a , b); 引用! printf (“%d” „c) ; } 函数的类型,返回值的类型。
int max(int x ,int y) { 函 int z ; 函数参数说明表。 数 z=x>=y? x : y ; 体 return ( z) ; 定义! } 函数名(用标识符命名), 引用函数的标志,并得到结果。
函数定义的目的
函数定义是要确定如下四点: 名称
函数的类型
函数的参数 函数的功能
【例6-2】通过标准函数及用户定义函数实现求字符串中含有的 实际字符的数量,输出结果。
/* example 6-2 通过函数输出字符串的实际长度 */ #include <stdio.h> #include <string.h> int GetStringLength(char *p); /*用户函数原型声明*/ void main(void) { char pszStr[80]; int iStrLen; gets(pszStr); /*调用字符输入函数输入字符串*/ iStrLen = strlen(pszStr); /*调用标准库函数求字符串长度*/ printf("The string length is %d\n",iStrLen); gets(pszStr); iStrLen = GetStringLength(pszStr);/*调用用户定义函数求字符 串长度*/ printf("The string length is %d\n",iStrLen); }
相关文档
最新文档