第七章C程序设计

合集下载

C语言程序设计第四版_谭浩强7章

C语言程序设计第四版_谭浩强7章

➢函数的功能
return z; }
函数体
函数首部,不是语 句,行尾无分号
精选课件ppt
函数的返回值,类 型与首部定义一致14
函数的定义
关于函数类型的说明
无返回值的函数类型为void; 有返回值的函数,其类型根据返回值 类型决定;省略类型时默认为int(建议 不要省略)
精选课件ppt
15
函数的调用
int main( )
{ int max(int a[ ],int n);
int x[6],i;
for(i=0;i<=5;i++)
scanf("%d",&x[i]);
printf("max=%d",max(x,6));
return 0;
}
实参为数组名
精选课件ppt
int max(int a[ ],int n) { int m,i; m=a[0]; for (i=1;i<n;i++)
float fac; fac=1; for(i=1;i<=n;i++)
fac=fac*i; return fac;
printf("c="); scanf("%d",&c);
}
sum=factorial(a)+factorial(b)+factorial(c);
printf("%d!+%d!+%d!=%.0f",a,b,c,sum);
函数1 函数2 函数3
函数1 函数2
精选课件ppt
34
变量作用域——局部变量和全局变量

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语言程序设计pdf

c语言程序设计pdf

c语言程序设计pdf《C语言程序设计》是一本介绍和教授C语言的编程技能和知识的教材,具有广泛的应用和普及性。

本书可以帮助读者从零开始学习C语言,并逐渐提高编程能力。

以下是《C语言程序设计》这本书的内容概述。

第一章:简介本章为读者介绍了C语言的历史、特点和发展趋势,以及如何搭建和配置C语言的开发环境。

第二章:基本语法本章详细介绍了C语言的基本语法,包括变量声明、数据类型、运算符、条件语句、循环语句等。

第三章:数组和字符串本章详细介绍了C语言中的数组和字符串的相关知识,包括数组的声明、初始化、访问和操作,以及字符串的声明、初始化和处理等。

第四章:函数本章介绍了C语言中的函数的概念和使用方法,包括函数的声明、定义、调用和参数传递等。

第五章:指针本章详细介绍了C语言中的指针的使用方法,包括指针变量的声明、初始化、访问和操作等。

第六章:结构体和共用体本章介绍了C语言中的结构体和共用体的概念和应用,包括结构体和共用体的声明、定义、访问和操作等。

第七章:文件处理本章介绍了C语言中的文件处理的方法和技巧,包括文件的打开、读取、写入和关闭等。

第八章:动态内存分配本章介绍了C语言中的动态内存分配的方法和技巧,包括动态内存的分配、使用和释放等。

第九章:常用库函数本章介绍了C语言中常用的库函数,包括字符串处理函数、数学函数、时间日期函数等。

第十章:综合练习本章提供了一些综合的编程练习题,供读者巩固和应用所学的C语言知识。

《C语言程序设计》这本书是一本很好的C语言教材,对于初学者来说非常适合。

通过学习这本书,读者可以初步掌握C 语言的编程技能,并能够实现一些简单的程序设计。

对于想要深入学习C语言的人来说,这本书也是一个很好的起点。

总之,无论是初学者还是进阶者,都可以从《C语言程序设计》这本书中获得很多有用的知识和技能。

c程序设计(谭浩强)第七章习题答案

c程序设计(谭浩强)第七章习题答案
{
int i;
float ave=0;
for(i=0;i<10;i++)
ave=ave+a[i][n]/10;
return ave;
}
void max(float a[][5]) //最高分的学生和课程
{
int i,j,row,colum;
float max=a[0][0];
for(i=0;i<10;i++)
# include <stdio.h>
# include<math.h>
# include<string.h>
/*int yue(int a,int b) //求最大公约数
{
int i,min;
min=a>b?b:a;
for(i=min;i>0;i--)
{
if(a%i==0&&b%i==0)
{
return i;
if((mid%2)!=1) //因职工号序号为奇数,故强制把序号转为奇数
mid-=1;
if(strcmp(b,a[mid])>0) //不能写b>a[mid]
{min=mid+2;}
else if(strcmp(b,a[mid])<0) //不能写b<a[mid]
{max=mid-2;}
else
{printf("职工姓名为:%s\n",a[mid-1]);break;}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%-2d",b[i][j]);

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()
四、 形式参数和实际参数

c程序设计教程谭浩强第三版

c程序设计教程谭浩强第三版

c程序设计教程谭浩强第三版C程序设计教程是谭浩强教授编写的一本广受欢迎的C语言学习教材。

第三版在前两版的基础上做了进一步的修订和完善,更加适合初学者和中级学习者使用。

本教程涵盖了C语言的基础知识、语法规则、程序设计技巧以及一些高级主题。

以下是对这本教程的详细内容概述。

第一章:C语言概述本章介绍了C语言的发展历程、特点和应用领域,让读者对C语言有一个整体的认识。

同时,也介绍了C语言程序的基本结构和编译、链接过程。

第二章:数据类型、运算符和表达式这一章详细讲述了C语言中的基本数据类型,包括整型、浮点型、字符型等,以及它们在内存中的存储方式。

此外,还介绍了各种运算符的用法和优先级,以及如何构建表达式。

第三章:控制语句控制语句是程序设计中非常重要的部分,本章讲解了条件语句(if、switch)、循环语句(for、while、do-while)以及跳转语句(break、continue、goto)的用法和应用场景。

第四章:数组数组是C语言中一种基本的数据结构,用于存储具有相同类型的多个数据项。

本章介绍了一维数组和二维数组的声明、初始化和访问方法。

第五章:指针指针是C语言的核心概念之一,本章深入讲解了指针的基本概念、指针与数组的关系、指针的运算以及指针在函数中的应用。

第六章:函数函数是程序模块化的基础,本章介绍了函数的定义、声明、调用以及参数传递机制。

同时,也讨论了递归函数和内联函数的概念。

第七章:预处理指令预处理指令是C语言编译过程中的指令,用于在编译前对源代码进行处理。

本章介绍了宏定义、文件包含、条件编译等预处理指令的用法。

第八章:结构体和联合体结构体和联合体是C语言中用于创建复杂数据类型的工具。

本章讲解了它们的声明、初始化以及在程序中的应用。

第九章:位运算位运算是直接对数据的二进制位进行操作的运算。

本章介绍了位运算符的用法和一些常见的位运算技巧。

第十章:文件操作文件操作是程序与外部数据交互的重要方式。

c程序设计第二版谭浩强课后答案

c程序设计第二版谭浩强课后答案

c程序设计第二版谭浩强课后答案C程序设计第二版是谭浩强教授编写的一本广泛使用的计算机程序设计教材,它以C语言为基础,深入浅出地介绍了程序设计的基本概念、语法规则和编程技巧。

这本书的课后习题对于加深理解C语言的知识点非常有帮助。

以下是部分课后习题的答案,供参考:第一章程序设计和C语言概述1. 问题一:简述程序设计的基本步骤。

- 答案:程序设计的基本步骤包括需求分析、设计、编码、测试和维护。

2. 问题二:C语言的主要特点是什么?- 答案:C语言的主要特点包括简洁高效、结构化、可移植性、丰富的运算符、灵活的数据类型和内存管理能力。

第二章 C语言程序的结构1. 问题一:C语言程序的基本结构是什么?- 答案:C语言程序的基本结构包括预处理指令、函数定义和主函数。

2. 问题二:什么是函数?C语言中函数的定义规则是什么?- 答案:函数是一段具有特定功能的代码块,可以被重复调用。

C 语言中函数的定义规则包括返回类型、函数名和参数列表。

第三章数据类型、运算符和表达式1. 问题一:C语言中的基本数据类型有哪些?- 答案:C语言中的基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)。

2. 问题二:算术运算符有哪些?它们的优先级是怎样的?- 答案:算术运算符包括加(+)、减(-)、乘(*)、除(/)和模(%)。

它们的优先级从高到低依次是乘除、模、加减。

第四章控制语句1. 问题一:C语言中的条件语句有哪些?- 答案:C语言中的条件语句包括if语句、if...else语句和switch语句。

2. 问题二:循环语句有哪些?它们的基本结构是什么?- 答案:C语言中的循环语句包括while循环、do...while循环和for循环。

它们的基本结构是初始化、条件判断和迭代。

第五章数组1. 问题一:什么是数组?数组的声明方式有哪些?- 答案:数组是相同数据类型元素的集合。

数组的声明方式包括在函数内部声明和全局声明。

C语言程序设计_课件_第七章(适于清华谭浩强版)

C语言程序设计_课件_第七章(适于清华谭浩强版)

注意:
(1) return(表达式); 和return 表达式;都 是正确的。 (2) 带返回值的函数只能返回一个值。 (3) 在函数定义时,允许使用多个return语句, 但是应尽量在末尾使用一个return语句。 (4) return语句中的表达式与函数的返回值类 型不匹配时,以函数定义时的返回类型为准。

问题的提出 函数基础 函数的定义 函数说明 函数调用 参数传递 程序举例 递归调用 变量的存储类别
7.1 问题的提出
例6.20它可以解决的问题有: ①输入若干个学生的姓名、某课程的期中 和期末成绩,并计算每个学生的总评成绩; ②计算总评成绩的分数段情况; ③输出所有学生的姓名、期中、期末和总 评成绩; ④查询某个学生的总评成绩。
函数调用时需要传递数据。调用函数要将 实参的值传送给被调用函数的形参。 若函数定义首部是 double power(double x,int n) /*函数定义 */ 调 用 形 式 是 可 以 是 power(y,m) , 也 可 以 是 power(3.0,5)。 其中,x和n是形式参数,y和m是实际参数,3.0 和可以是一个变量 名,因为变量名也构成一个表达式,形式参数只 能是变量名。当实际参数是变量名时,它与形参 的名称既可以相同,也可以不同,只是要注意, 在函数定义内部应该使用形参的名称。 (2) 实际参数与形式参数的参数个数、数据类型 和顺序都应该一致,如果数据类型不一致,系统 将按照自动转换规则进行转换。
7.3 函数的定义
7.3.1 函数的定义形式 在C语言中函数定义的形式有两种。
第一种:
函数返回值的数据类型说明 函数名称(带有类型说明的参数表)
{
函数内部数据说明; 语句;
}
第二种:

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

C语言程序设计教程 第七章 课后习题参考答案
printf("原数组为:\n");
for(i=0;i<N;i++)
{
printf("%4d",a[i]);
}
bubble_sort(a,N);
printf("\n");
}
void bubble_sort(int a[],int n)
{
int i,j,tmp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
for(i=0;i<n;i++)
{
printf("%-4d",a[i]);
}
}
P1985对称矩阵
#include<stdio.h>
void print(int a[][3],int rows,int cols);
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;
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++)
m++;

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

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

C语言程序设计教程第7章《C语言程序设计教程》第7章是关于数组和指针的内容。

本章从数组的定义、初始化、访问等基础知识开始讲解,然后介绍了二维数组、多维数组和字符数组,并通过具体的示例代码进行讲解。

此外,本章还讲解了指针的概念和用法,包括指针的定义、指针的运算、指针与数组的关系等内容。

首先,本章介绍了数组的定义和初始化的方法。

数组是由相同类型的数据元素组成的有序集合,使用方括号来定义数组的长度。

数组可以通过下标来访问和修改元素的值。

此外,本章还介绍了数组初始化的方法,包括静态初始化和动态初始化。

然后,本章详细讲解了二维数组和多维数组的概念和使用方法。

二维数组可以看作是由多个一维数组组成的,可以通过两个下标来访问和修改元素的值。

多维数组与二维数组类似,只是多维数组可以有更高维度的数组。

本章通过示例代码演示了如何定义和使用二维数组和多维数组。

接下来,本章介绍了字符数组的概念和使用方法。

字符数组是由字符组成的一维数组,可以用于存储和处理字符串。

本章通过示例代码演示了如何定义、初始化和使用字符数组,包括字符串的输入、输出和处理。

最后,本章详细讲解了指针的概念和用法。

指针是一种特殊的变量,可以存储变量的地址。

本章介绍了指针的定义和初始化的方法,以及指针的运算,包括指针的加法、减法和比较操作。

本章还讲解了指针与数组的关系,包括指针与一维数组的关系、二维数组的关系和字符数组的关系。

本章通过示例代码演示了指针的使用方法,包括指针与数组的遍历、指针与字符串的处理等。

总之,第7章《数组和指针》是《C语言程序设计教程》中比较重要和基础的章节。

通过学习本章的内容,读者可以了解数组和指针的概念和用法,掌握数组和指针的定义、初始化、访问等基本操作,以及掌握二维数组、多维数组和字符数组的使用方法。

通过本章的学习,读者可以更好地理解和运用C语言的数组和指针特性,提高自己的编程技能。

《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语言程序设计教程》(第三版)李凤霞 主编——第七章习题答案

《C语言程序设计教程》(第三版)李凤霞 主编——第七章习题答案

习题七一、单项选择题1、以下程序的输出结果是()。

main(){int i,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i; /*a: 0 1 2 3 4 5 6 7 8 9 */for(i=0;i<3;i++)p[i]=a[i*(i+1)]; /*p:0 2 6 */for(i=0;i<3;i++)k+=p[i]*2; /* k=5+4+12=21 */printf(“%d\n”,k);}A)20 B)21 C)22 D)232、以下正确的数组定义语句是()。

A)int y[1][4]={1,2,3,4,5}; B)float x[3][ ]={{1},{2},{3}}; C)long s[2][3]={{1},{1,2},{1,2,3}}; D)double t[ ][3]={0};3、以下程序段的输出结果是()。

main(){int m[3][3]={{1},{2},{3}}; m 1 0 0 n 1 2 3int n[3][3]={1,2,3}; 2 0 0 0 0 0printf(“%d\n”,m[1][0]+n[0][0]); 3 0 0 0 0 0printf(“%d\n”,m[0][1]+n[1][0]);}A)0 B)2 C)3 D)10 3 0 24、以下程序的输出结果是()。

main(){int i,x[3][3]={1,2,3,4,5,6,7,8,9}; 1 2 3for(i=0;i<3;i++)printf(“%d,”x[i][2-i]); 4 5 6} 7 8 9A)1,5,9 B)1,4,7 C)3,5,7 D)3,6,95、对以下程序从第一列开始输入数据:2473↙,程序的输出结果是()。

#include “stdio.h”main(){char c;while((c=getchar())!=’\n’){switch (c-‘2’){case 0:case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+3);default:putchar(c+2);}}}A)668977 B}668966 C}66778777 D)66887666、不能正确为字符数组输入数据的是( )。

C语言程序设计第七章 利用数组处理数据

C语言程序设计第七章 利用数组处理数据
整理课件
一维数组的存储: 计算机中用连续的内存单元存放各个元素。 如:int a[5];其内存存储为:
保存数组所需内存量与数组元素的基本类型和数组大小有关。 总字节数=sizeof(基本类型)*数组元素个数 如上例:= sizeof(int)*5 第i个元素的地址=第1个元素的地址+i*sizeof(基本类型)
类型说明符 数组名[常量表达式]={值,值……值}; 其中在{ }中的各数据值即为各元素的初值,各值之间用逗号 间隔。 例如:
int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0;a[1]=1...a[9]=9;
整理课件
C语言对数组的初始化赋值还有以下几点规定:
有 5个元素。但是其下标从0开始计算。因此5个元素分别为
a[0],a[1],a[2],a[3],a[4]。
不能在方括号中用变量来表示元素的个数, 但是可以是符
号常数或常量表达式。
例如:
#define FD 5
main( )
{ int a[3+2],b[7+FD];
……
}是合法的。
但是下述说明方式是错误的。
for (i=0; i<=9;i++) a[i]=i;
for(i=9;i>=0; i--) printf("%d ",a[i]);
printf("\n"); return 0; }
使a[0]~a[9]的值为0~9 先输出a[9],最后输出a[0]
整理课件
一维数组的初始化
数组初始化赋值是指在数组定义时给数组元素赋予初值。 初始化赋值的一般形式为:
for(i=0;i<1;i++) if (a[i]>a[i+1]) { ……}

C语言程序设计(第三版)谭浩强习题与答案 第七章

C语言程序设计(第三版)谭浩强习题与答案   第七章
printf("\n");}
7.6打印出以下杨辉三角形(要求打印出10行)。
1
11
121
1331
14641
15101051


main()
{ static int m,n,k,b[15][15];
b[0][1]=1;
for(m=1;m<15;m++)
{for(n=1;n<=m;n++)
{ b[m][n]=b[m-1][n-1]+b[m-1][n];
for(i=0;i<10;i++)
printf("%5d",a[i]);
}

main()
{static int a[10],i,j,k,t;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=1;i<=10-j;j++)
if (a[i]>a[i+1])
{ i=i-1;
j=j+1;
if((i<1)&&(j>n))
{ i=i+2;
j=j-1;
}
else
{ Байду номын сангаасf(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{ i=i+2;
j=j-1;
a[i][j]=k;

C++程序设计教程修订版_第07章_数组

C++程序设计教程修订版_第07章_数组

2、访问数组元素
•数组中特定的元素通过下标访问。 •为整个数组赋值时,必须一个一个元素逐个访问。
int main() { int iArray[10]; iArray[0] = 1; iArray[1] = 1; iArray[2] = 2; //........ iArray[9] = 55;
}
在定义时也可以只对部分元素赋初值而省略第一维的长度,但 应分行赋初值。如 0 0 3 0 int a[ ][4]={{0,0,3},{ },{0,10}}; 0 0 0 0 0 10 0 0
5、二维数组
作为参数传递一个二维数组给函数,其意义也为内存地址:
//********************* //** ch7_7.cpp ** //********************* #include <iostream.h> int maximum(int[ ][4],int,int); void main() { int sg[3][4]={{68,77,73,86}, {87,96,78,89}, {90,70,81,86}}; int maximum(int grade[][4],int pupils,int tests) { int max=0; for(int i=0; i<pupils; i++) for(int j=0; j<tests; j++) if(grade[i][j]>max) max=grade[i][j];
– int a[500]; – memset(a,0,500*sizeof(int));
• 数组名称 a 代表整个数组的起始(第一个元素)的地址
4、向函数传递参数
• 传给自定义函数

高树芳C语言程序设计--第七章

高树芳C语言程序设计--第七章
[解决方案] 一行需要两个函数。一个函数显 示星号左面的空格,一个函数显示星号。
程序代码
11
7.2函数的定义、声明和调用
相关知识:
1.有参、无返回值函数的定义 2.有参、无返回值函数的调用 3.有参、无返回值函数的声明
12
7.2函数的定义、声明和调用
案例7-4 求组合数
[案例任务]
键盘输入m和n两个整数, 计算并显示下面的组合数, C 要求运用函数编程。
n m m! n! (m-n)!
[解决方案] 定义一个求阶乘的函数。它有一个 形参,而且有返回值。
程序代码
13
7.2函数的定义、声明和调用
[课堂训练7-2]
修改案例7-3的主函数,使之显示一个与案例7-3 形状相似的倒三角“*”号图案(要求显示4行)。
14
7.2函数的定义、声明和调用
相关知识: 1.有参、有返回值函数的定义 2.有参、有返回值函数的调用 3.无参、有返回值函数的调用
15
7.2函数的定义、声明和调用
案例7-5
显示100~200间的素数
[案例任务]
参照案例5-9判断素数程序,将其改造成一个函数如 prime,其功能是对给定的整数x,判断它是否是素数,如 是则返回1,不是则返回0。然后利用下面给出的主函数 调用函数prime ,显示100至200之间的全部素数。
[解决方案] 设计一个函数用于判断一个整数是
案例7-2 用函数实现简易菜单 [案例任务]
对案例5-3进行简化和改造。要求循环显示菜单并等 待用户选择,然后显示用户选择了第几项功能,如选 择0则结束程序。要求用函数实现菜单的显示内容。
[解决方案]定义无形参、无返回值的函数显示菜单。
程序代码
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

无锡润智图书有限公司制作
【问题4】在C语言中,函数返回值的类型最 终取决于_______。 A)函数定义时的函数首部所说明的函数类型 B) return语句中表达式值的类型 C)调用函数时主调函数所传递的实参类型 D)函数定义时形参的类型 【思路分析】函数的返回值类型最终取决于定义函数时所 定义的函数的类型。 答案:A
无锡润智图书有限公司制作
【问题2】设cl,c2均是字符型变量,则以下不正确的 函数调用为_______。 A) scanf("cl=%c c2=%c",&c1,&c2); B) cl= getchar(); C) putchar(c2); D) putchar(cl,c2);
【思路分析】A、B、C、D均为C语言提供的标准库函数,调 用时必须严格按照其定义的规则,putchar函数只能输出一个 字符,故D不正确。 答案:D
答案:C
无锡润智图书有限公司制作
【问题8】以下函数用以求x的y次方,请填空。 doulole fun (double x,int y) { int i; double z=1.O; for(i=1;i________;i++) z=________; return z; } 【思路分析】求x的y次方的实质算法就是把y个x进行连 乘。z的初值为1,在for循环体中z=z*x执行y次,就完 成了算法。因此,在第一个填空处应填< =y,在第二个 填空处则应填z*x(或x*z)。总结:完成连乘或累加的 算法,很重要的部分是需要有能力按指定的规律确定计 算各连乘(或累加)项的表达式,并确定结束连乘或累 加的条件。
无锡润智图书有限公司制作
【问题5】以下正确的函数定义形式是_______。 A) double fun(int x,int y); B) double fun(int x;int y) C) double fun(int x,int y) D) double fun(int x,y) 【思路分析】在函数中对形参的说明,要求对每个形参都必须 说明类型,各参数之间有“,”隔开,函数定义后应无“; ”。 答案:C
答案:<=y z*x
无锡润智图书有限公司制作
【问题9】下列给定程序中,函数fun()的功能是进行数字字符转换。若 形参ch中是数字字符’0‟~„9‟,则将’0‟转换成’9‟,’1‟转换成’8‟,’2‟ 转换成’7‟,…,’9‟转换成'0';若是其他字符则保持不变,并将转换后的结 果作为函数值返回。 #include < stdio.h > ______ fun (char ch) { if (ch> ='0' &&________) return '9' - (ch-___________); return ch ; } main ( ) { char cl, c2 ; printf ( "\nThe result :\n" ) ; cl ='2'; c2 = fun(cl); printf ( "cl = % cc2 = % c\n", cl, c2 ) ; cl = '8'; c2 = fun (cl) ; printf( "cl =% cc2 =% c\n", cl, c2 ) ; cl=‟a';c2 = fun(cl) ; printf ( "cl = % cc2 = % c\n", cl, c2 ) ; }
无锡润智图书有限公司制作
(二)巩固练习 1.以下对C语言函数的描述中,正确的是( A )。 A.C程序由一个或一个以上的函数组成 B.C函数既可以嵌套定义又可以递归调用 C.C函数必须有返回值,否则不能使用函数 D.C程序中调用关系的所有函数必须放在同一个程序文件中 2.以下函数值的类型是( A )。 fun(float x) { float y; y=3*x-4; return y; } A.int B.不确定 C.void D. float
无锡润智图书有限公司制作
【问题10】以下程序用以求阶乘的累加和,请阅读程序并填空。 S =O!+1!+2!+…+n! #include < stdio.h > long f (int n) { int i; long s; s=_______; for(i=1;i<=n;i++) s=_______; return s; } main ( ) { long s; int k, n; scanf(“%d”,&n); s=_______; for(k=0;k<=n;k++) s=s+________; printf ( "% ld\n",s) ; } 无锡润智图书有限公司制作
无锡润智图书有限公司制作
二、课堂探析
(一)问题探析
(二)巩固练习
无锡润智图书有限公司制作
第一节
库函数与自定义函数
课堂探析
无锡润智图书有限公司制作
(一)问题探析 【问题1】若有代数式 n x e x 其中e仅代表自然对 数的底数,不是变量),则以下能够正确表示该代 数 式的C语言表达式是_______。 A) sqrt(abs(n^x+e^x)) B) sqrt(fabs(pow(n,x)+ pow(x,e))) C) sqrt( fabs (pow( n,x)+ exp(x))) D) sqrt(fabs(pow(x,n)+ exp(x))) 【思路分析】exp()函数的功能是返回以自然数e为底的幂; pow(n,x)函数是计算nx”;fabs()函数功能是返回函数参 数的绝对值;sqrt()用于返回函数参数的平方根。选项A中 的n^x不是有效的C语言表达式;选项B中pow(x,e)显然 也不正确;选项D中的pow(x,n)存在错误。 答案:C
无锡润智图书有限公司制作
【问题7】以下函数: fff(float x) { printf(“%d\n”,x*x); } 的类型是( )。 A.与参数x的类型相同 B.void类型 C.int类型 D.无法确定
【思路分析】在函数的首部(第一行),函数名(在此是fff) 的前面应当是一个类型名,此类型名规定了函数返回值的类 型; 此类型名可以省略,这时C默认函数返回值的类型为 int,因此本题的答案应当是C。应当记住:当定义函数时, 函数名前缺类型名时,函数返回值的类型应为int。
答案:
1.B
2.D
无锡润智图书有限公司制作
6.编写判断素数的函数。
【思路分析】:对于给定的数 number,把 number 除以从 2 到 number-1 的每个正 整数,如果都除不尽,则 number 是素数.所 以,函数的参数是一个,即 number。函数的 返回值是1(是素数),或 0(不是素数)。
无锡润智图书有限公司制作
【思路分析】函数定义时,类型标识符指 明了本函数的类型,函数的类型实际上是 函数返回值的类型 , 所以此处应该填入 char。 通过if条件语句判断字符串中字符 是否是数字字符,即大于等于字符’0‟, 同 时小于等于字符’9„。 retum语句完成函 数 返回操作,要实现字符转换, 完整语句为 return'9‟-( ch -'0‟);。 答案:(l)char (2)ch<='9' (3) '0'
C语言
无锡润智图书有限公司
无锡润智图书有限公司制作
第七章
一、考试要求
理解 标准库函数的调用,函数的 定义,声明和调用, 模块之间的参数传递,传值 与传址的区别,数组元素和 数组传递的区别.
函数
掌握 模块化编程的方法 模块化后参数的传递,变量的作 用域,生存期,全局变量,局部变 量,自动型变量,静态变量的区别
无锡润智图书有限公司制作
5.函数gongyu的作用是求整数的num1和num2的最 大公约数,并返回该值,请选择填空。 gongyu(int num1,int num2) { int temp,a,b; if (num1 (1) num2) {temp=num1;num1=num2;num2=temp;} a=num1;b=num2; while( (2) ) ; {temp=a%b;a=b;b=temp;} return a; } 1. A.! = B.< C.> D.= = 2. A.a=0 B.a! =0 C.b=0 D.b! =0
【思路分析】本题要求进行累加计算,但每一个累加项是 一个阶乘值,阶乘值由0 1、l!、2!、3!依次变化到n!。函数 f()用于求阶乘值n!(n为形参),由于阶乘的值很大,因此 定义函数为long类型。求阶乘的值存于变量s中,因此s的 初值应为1,第一个空处填1。连乘的算法可用表达式 S=S*l(i从1变化到n),因此第二个空处应填s*i。累加运 算是在主函数中完成的,累加的值放在主函数的s变量中, 因此s的初值应为0,在第三个空处填0。累加放在for循环 中,循环控制变量k的值确定了n的值,调用一次f()函数可 求出一个阶乘的值,所以在第四个空处应填f(k)(k从0变化 到n)。总结:在进行累加及连乘时,存放乘积或累加和的 变量必须赋初值;求阶乘(即连乘)时,存放乘积的变量 其初值不能是0. 答案: 1 s* i 0 f(k)
无锡润智图书有பைடு நூலகம்公司制作
【问题6】以下程序的输出结果是( )。 #include < stdio.h > main ( ) { int i=2,p=f(2,3); printf ( "% d\n" p) ; } int f (int a,int b) { int c; if (a >b) c =1; else if (a = =b) c =0; else c = -1; return (c) ; } A.-1 B. 0 C. 1 D. 2
相关文档
最新文档