2011年计算机等级考试二级C语言实验指导:函数

合集下载

2011年计算机等级二级C语言章节习题及答案(13)

2011年计算机等级二级C语言章节习题及答案(13)

2011年计算机等级二级C语言章节习题及答案(13)2011年计算机等级二级C语言章节习题及答案(13)第13章文件一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。

)13.1 fseek函数的正确调用形式是A)fseek(文件指针,起始点,位移量)B)fseek(文件指针,位移量,起始点)C)fseek(位移量,起始点,文件指针)D)fseek(起始点,位移量,文件指针)正确答案: B13.2 若fp是指向某文件的指针,且已读到文件末尾,则函数feof (f p)的返回值是A)EOFB)-1C)1D)NULL正确答案: C13.3 fscanf函数的正确调用形式是A)fscanf(fp,格式字符串,输出表列);B)fscanf(格式字符串,输出表列,fp);C)fscanf(格式字符串,文件指针,输出表列);D)fscanf(文件指针,格式字符串,输入表列);正确答案: D13.4 下列关于C语言数据文件的叙述中正确的是A)文件由ASCII码字符序列组成,C语言只能读写文本文件B)文件由二进制数据序列组成,C语言只能读写二进制文件C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件正确答案: D13.5 函数fseek(pf, OL,SEEK_END)中的SEEK_END代表的起始点是A)文件开始B)文件末尾C)文件当前位置D)以上都不对正确答案: B13.6 C语言中,能识别处理的文件为A)文本文件和数据块文件B)文本文件和二进制文件C)流文件和文本文件D)数据文件和二进制文件正确答案: B13.7 若调用fputc函数输出字符成功,则其返回值是A)EOFB)1C)0D)输出的字符正确答案: D13.8 已知函数的调用形式:fread(buf,size,count,fp),参数buf 的含义是A)一个整型变量,代表要读入的数据项总数B)一个文件指针,指向要读的文件C)一个指针,指向要读入数据的存放地址D)一个存储区,存放要读的数据项正确答案: C13.9 当顺利执行了文件关闭操作时,fclose函数的返回值是A)-1B)TRUEC)0D)1正确答案: C13.10 如果需要打开一个已经存在的非空文件“Demo”进行修改下面正确的选项是A)fp=fopen("Demo","r");B)fp=fopen("Demo","ab+");C)fp=fopen("Demo","w+");D)fp=fopen("Demo","r+");正确答案: D13.11 若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是A)fopen("A:\user\abc.txt","r")B)fopen("A:\\user\\abc.txt","rt+")C)fopen("A:\user\abc.txt","rb")D)fopen("A:\user\abc.txt","w")正确答案: B13.12 fwrite函数的一般调用形式是A)fwrite(buffer,count,size,fp);B)fwrite(fp,size,count,buffer);C)fwrite(fp,count,size,buffer);D)fwrite(buffer,size,count,fp);正确答案: D13.13 C语言中,文件组成的基本单位为A)记录B)数据行C)数据块D)字符序列正确答案: D13.14 C 语言中,系统的标准输入文件是指A)键盘B)显示器C)软盘D)硬盘正确答案: A13.15 有以下程序#includemain(){ FILE *fp; int i=20,j=30,k,n;fp=fopen("d1.dat","w");fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n); printf("%d %d\n",k,n);fclose(fp);}程序运行后的输出结果是A)20 30B)20 50C)30 50D)30 20正确答案: A13.16 阅读以下程序及对程序功能的描述,其中正确的描述是#includemain(){ FILE *in,*out;char ch,infile[10],outfile[10];printf("Enter the infile name:\n");scanf("%s",infile);printf("Enter the outfile name:\n");scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL){ printf("cannot open infile\n");exit(0);}if((out=fopen(outfile,"w"))==NULL){ printf("cannot open outfile\n");exit(0);}while(! feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}A)程序完成将磁盘文件的信息在屏幕上显示的功能B)程序完成将两个磁盘文件合二为一的功能C)程序完成将一个磁盘文件复制到另一个磁盘文件中D)程序完成将两个磁盘文件合并并在屏幕上输出正确答案: C13.17 下面的程序执行后,文件test中的内容是#includevoid fun(char *fname,char *st){ FILE *myf; int i;myf=fopen(fname,"w" );for(i=0;ifclose(myf);}main(){ fun("test","new world"); fun("test","hello,");} A)hello, B)new worldhello,C)new worldD)hello, rld正确答案: A13.18 假定当前盘符下有两个文本文件,如下文件名a1.txt a2.txt内容123# 321#则下面程序段执行后的结果为#include "stdio.h"void fc(FILE *p){ char c;while((c=fgetc(p))!=′#′)putchar(C);}main(){ FILE *fp;fp=fopen("a1.txt","r");fc(fp);fclose(fp);fp=fopen("a2.txt","r");fc(fp);fclose(fp);putchar(′\n′);}A)123321B)123C)321D)以上答案都不正确正确答案: A13.19 阅读下面程序,程序实现的功能是(a123.txt在当前盘符下已经存在)#include "stdio.h"void main(){ FILE *fp;int a[10],*p=a;fp=fopen("a123.txt","w");while(strlen(gets(p))>0 ){ fputs(a,fp);fputs("\n",fp);}fclose(fp);}A)从键盘输入若干行字符,按行号倒序写入文本文件a123.txt 中B)从键盘输入若干行字符,取前2行写入文本文件a123.txt中C)从键盘输入若干行字符,第一行写入文本文件a123.txt中D)从键盘输入若干行字符,依次写入文本文件a123.txt中正确答案: D13.20 阅读下面程序,此程序的功能为#include "stdio.h"main(int argc,char *argv[]){ FILE *p1,*p2;int c;p1=fopen(argv[1],"r");p2=fopen(argv[2],"a");c=fseek(p2,0L,2);while((c=fgetc(p1))!=EOF)fputc(c,p2);fclose(p1);fclose(p2);}A)实现将p1打开的文件中的内容复制到p2打开的文件B)实现将p2打开的文件中的内容复制到p1打开的文件C)实现将p1打开的文件中的内容追加到p2打开的文件内容之后D)实现将p2打开的文件中的内容追加到p1打开的文件内容之后正确答案: C二、填空题(请将每一个空的正确答案写在答题卡相应序号后。

全国计算机二级C语言知识点复习:函数

全国计算机二级C语言知识点复习:函数

全国计算机二级C语言知识点复习:函数全国计算机二级C语言知识点复习:函数【考点1】函数的定义函数:是具有一定功能的一个程序块;是C 语言的基本组成单位。

函数的首部为:函数类型函数名(类型1 形参1,类型2 形参2,……)。

在函数定义中不可以再定义函数,即不能嵌套定义函数。

函数类型默认为int型。

【考点2】库函数调用C语言标准库函数时要包含include命令,include命令行以#开头,后面是“”或<>括起来的后缀为”.h”的头文件。

以#开头的一行称为编译预处理命令行,编译预处理不是C语言语句,不加分号,不占运行时间。

【考点3】函数的返回值函数通过return语句返回一个值,返回的值类型与函数类型一样。

return语句只执行一次,执行完或函数体结束后退出函数。

【考点4】函数的声明函数要“先定义后调用”,或“先声明再调用后定义”。

函数的声明一定要有函数名、函数返回值类型、函数参数类型,但不一定要有形参的'名称。

【考点5】函数的调用程序从上往下执行,当碰到函数名后,把值传给调用函数,当程序得到了返回值或调用函数结束,再顺序往下执行。

【考点6】函数的参数及值传递形式参数简称形参,是定义函数时函数名后面括号中的参数。

实在参数简称实参,是调用函数时函数名后面括号中的参数。

实参和形参分别占据不同的存储单元。

实参向形参单向传递数值。

“传值”与“传址”的区别:传数值的话,形参的变化不会改变实参的变化。

传地址的话,形参的变化就有可能改变实参所对应的量。

(考试的重点)函数的参数,返回数值(示意图)。

【考点7】函数的递归调用函数直接或间接地调用自己称为函数的递归调用。

递归调用必须有一个明确的结束递归的条件。

在做递归题时可把递归的步骤一步步写下来,不要弄颠倒了。

【考点8】要求掌握的库函数sqrt()算术平方根函数,fabs()绝对值函数,sin()正弦函数,sin(3.14159/180*30);,pow()幂函数,23是由pow(2,3)表示的。

计算机二级c语言函数

计算机二级c语言函数


29
函数的递归调用

在调用一个函数的过程中又出现之间或间接调 用该函数本身,称为递归调用 为了防止无终止的调用本身,应该用if语句或 switch等加以控制,到达某一条件时,用 return语句停止调用
30

递归调用实例



#include <stdio.h> sub(int n) { int a; if(n==1) return 1; a= n+sub(n-1); return(a); }
void main() { int z = fun2(1,2); printf(“%d\n”,z); }
嵌套调用
14




#include <stdio.h> fun2(int x,int y) { fun(int x,int y) { int z=x+y; return z;} int z=x+y+fun(x,y); return z; } void main() { int z = fun2(1,2); printf("%d\n",z); }
24



#include <stdio.h> add() { int x=0; x+=1; printf("%d",x); }

main() { add(); add(); add(); }

1 1 1
25





#include <stdio.h> add() { static int x=0; x+=1; printf("%d",x); }

计算机二级C语言第七章函数.docx

计算机二级C语言第七章函数.docx
(二)带参数的宏定义
带参数的宏定义不是进行简单的字符串替换,还要进行参数替换。其定义的形式为:
5、#define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结 束。
6、可以用#undcf命令终止宏定义的作用域。
7、在进行宏定义时,可以引用已定义的宏名,可以层层置换。
【例7・2】在宏定义中引用已定义的宏名
#include
<stdio.h>
#define
R
3.0
#define
7.2
7. 2.1 C
一、数学函数
数学函数用于数学计算:
#incluHale Waihona Puke e "math.h"
二、字符函数和字符串函数
字符函数和字符串函数用于将字符按其ASCII码进行分类, 调用字符函数:
#include ''ctype.h"
调用字符串函数时,要求在源文件屮包含:
#include "string.h"
结构化程序设计的基本思想是“自顶向下、逐步求精”,即将一个教大的程序按其功能分成 若干个模块,每个模块具有单一的功能。
7. 1.2 C
一个较大的程序一般应分为若干个程序模块,每一个模块用來实现一个特定的功能。所有的 高级语言屮都有子程序这个概念,用子程序实现模块的功能。在c语言屮,子程序的作用是rh函 数完成的。一个c程序可由一个主函数和若干个函数构成。由主函数调用其他函数,其他函数也 可以互相调用。同一个函数可以被一个或多个函数调用任意多次。
三、输入输出函数
输入输出两数用于完成输入输出功能:
#include“stdio.h^
7. 2.

2011年计算机二级C语言编写程序题及答案解析精选1

2011年计算机二级C语言编写程序题及答案解析精选1

2011年计算机二级C语言编写程序题及答案解析精选【4.1】已知银行整存整取存款不同期限的月息利率分别为:0.315%期限一年0.330%期限二年月息利率=0.345%期限三年0.375%期限五年0.420%期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。

【4.2】输入年份year和月month,求该月有多少天。

判断是否为闰年,可用如下C语言表达式:year%4==0&&year0!=0||year@0==0。

若表达式成立(即表达式值为1),则year 为闰年;否则,表达式不成立(即值为0),year为平年。

【4.3】编写一个简单计算器程序,输入格式为:data1op data2。

其中data1和data2是参加运算的两个数,op为运算符,它的取值只能是+、-、*、/。

【4.4】输入n值,输出如图所示矩形。

【4.5】输入n值,输出如图所示平行四边形。

【4.6】输入n值,输出如图所示高为n的等腰三角形。

【4.7】输入n值,输出如图所示高为n的等腰三角形。

【4.8】输入n值,输出如图所示高和上底均为n的等腰梯形。

【4.9】输入n值,输出如图所示高和上底均为n的等腰空心梯形。

【4.10】输入n值,输出如图所示边长为n的空心正六边型。

【4.11】输入n值,输出如图所示图形。

【4.12】输入n值,输出如图所示图形。

【4.13】输入n值,输出如图所示图形。

【4.14】输入n值,输出如图所示图形。

【4.15】输入n值,输出如图所示图形。

【4.16】输入n值,输出如图所示图形。

(例为n=6时)【4.17】编写程序,输出如图所示sin(x)函数0到2π的图形。

【4.18】编写程序,在屏幕上输出一个由*号围成的空心圆。

【4.19】编写程序,在屏幕上绘制如图余弦曲线和直线。

若屏幕的横向为x轴,纵向为y 轴,在屏幕上显示0~360度的cos(x)曲线与直线x=f(y)=45*(y-1)+31的迭加图形。

计算机二级第四章函数

计算机二级第四章函数
运行情况如下: 1.5, 2.5↙ max is 2
函数调用的一般形式 函数调用的一般形式为: 函数名(实参表) 如果实参表列包含多个实参,则各参数间用逗号隔开。实参与形参的个数应相等,类型应匹配。实参与形参按顺序对应,一一传递数据。 如果是调用无参函数,则“实参表”可以没有,但括弧不能省略。
先举一个函数调用的简单例子1:
void printstar() /*定义printstar函数*/ { printf("****************\n"); } void print_message() /*定义print_message函数*/ { printf("How do you do!\n"); }
单击此处可添加副标题
# include <stdio.h> void main() { int max(float ,float ); 函数原型声明 float a,b; int c; scanf("%f,%f,",&a,&b); c=max(a,b); printf(“max is %d\n",c); } int max(float x,float y) { float z; /* z为实型变量 */ z=x>y?x∶y; return(z); }
在被定义的函数中,必须指定形参的类型(见例2 程序中的 “c=max(a,b);” )。
实参与形参的类型应相同或赋值兼容。例2中实 参和形参都是整型。如果实参为整型而形参x为实型,或者相反,则按不同类型数值的赋值规则进行转换。 例如实参值a为3.5,而形参x为整型,则将实数3.5转换成整数3, 然后送到形参x。字符型与整型可以互相通用。
int max(int x,int y) {int z; z=x>y?x∶y; return(z); }

计算机等级考试二级C语言上机操作指导.docx

计算机等级考试二级C语言上机操作指导.docx

程序设计是实践性很强的过程,任何稈序最终都必须在计算机上运行,以检验程序的匸确少否。

因此在学习程序设计中,-•定要重视上机实践环节,通过上机可以加深理解C语言的有关概念,以巩固理论知识,另一方面也可以培养程序调试的能力与技巧。

一.C语言程序的上机步骤按照C语言语法规则而编写的C程序称为源程序。

源程序由字母、数字及其它符号等构成,在计算机内部用相应的ASCII码表示,并保存在扩展名为C”的文件中。

源程序是无法肓接被计算机运行的,因为计算机的CPU只能执行二进制的机器指令。

这就需要把ASCII码的源程序先翻译成机器指令,然后计算机的CPU才能运行翻译好的程序。

源程序翻译过程由两个步骤实现:编译少连接。

首先对源程序进行编译处理,即把每一条语句丿IJ若丁条机器指令来实现,以牛成市机器指令纽成的口标程序。

但口标程序还不能马上交计算机肓接运行,因为在源程序中,输入、输出以及常用函数运算并不是用户白己编写的,而宜接调用系统函数库中的库函数。

因此,必须把“库函数"的处理过程连接到经编译生成的冃标程序中,生成可执行程序,并经机器指令的地址重定位,便可由计算机运行,最终得到结果。

C语言程序的调试、运行步骤可以用图A・1表示:开始语法错误连接佬误运行错误棵序调试图A-l C语言程序的调试、运行步骤图A・1中,虚线表示当某一步骤出现错误时的修改路线。

运行时,无论是出现编译错谋、连接错课,述是运行结果不对(源程序屮有语法错课或逻辑错课),都需要修改源程序, 并对它重新编译、连接和运行,直至将程序调试正确为止。

除了较简单的情况,一般的程序很难一次就能做到完全止确。

在上机过程中,根据出错现象找出错误并改止称为程序调试。

我们要在学习程序设计过程屮,逐步培养调试程序目标程序的能力,它不可能靠几旬话讲清楚,要靠H己在上机屮不断摸索总结,它可以说是一种经验积累。

程序中的错误大致可分为三类:2程序编译时检查出來的语法错谋;2连接时出现的错误;2程序执行过程中的错误。

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

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

第6章 函数 章
6.1 函数的定义和调用 6.1.2 函数调用 一个函数一旦被定义,就可以在程序的其他函数中使用它, 一个函数一旦被定义,就可以在程序的其他函数中使用它, 这个过程称为函数调用。 这个过程称为函数调用。 3.说明 .
(1)在定义函数中指定的形参变量,在未出现函数调用时,它们并不 )在定义函数中指定的形参变量,在未出现函数调用时, 占内存中的存储单元; 占内存中的存储单元;只有发生函数调用时被调用函数中的形参才被 分配内存单元。调用结束后,形参所占用的内存单元也同时被释放。 分配内存单元。调用结束后,形参所占用的内存单元也同时被释放。 (2)实参可以是常量、变量或表达式,但必须有确定的值。在调用时 )实参可以是常量、变量或表达式,但必须有确定的值。 将实参的值赋给形参变量。 将实参的值赋给形参变量。 (3)实参与形参的类型应一致。只有字符型和整型可以互相通用。 )实参与形参的类型应一致。只有字符型和整型可以互相通用。 (4)实参变量对形参变量的数据传递是“值传递”,即单向传递,只 )实参变量对形参变量的数据传递是“值传递” 即单向传递, 由实参传给形参,而不能由形参传回来给实参。在内存中, 由实参传给形参,而不能由形参传回来给实参。在内存中,实参变量 与形参变量是不同的单元,即使同名,也是不同的单元。 与形参变量是不同的单元,即使同名,也是不同的单元。形参的值如 果发生改变,并不会改变主调函数的实参值。 果发生改变,并不会改变主调函数的实参值。
第6章 函数 章
6.1 函数的定义和调用 6.1.1 函数定义 说明:函数定义包括函数首部和函数体两部分。 说明:函数定义包括函数首部和函数体两部分。 (1)函数首部:函数定义的第一行。 )函数首部:函数定义的第一行。 括起来的部分, (2)函数体:函数说明之后的花括号“{ }”括起来的部分, )函数体:函数说明之后的花括号“ 括起来的部分 包括说明部分和执行部分。 包括说明部分和执行部分。 1)声明部分:用来对函数中使用的变量和函数作说明。 )声明部分:用来对函数中使用的变量和函数作说明。 2)执行部分:由基本语句组成,函数的功能由函数体内的 )执行部分:由基本语句组成, 各个语句的执行来实现。 各个语句的执行来实现。

二级C各章考点

二级C各章考点

二级C各章考点函数:考点1:库函数1.库函数的概念(1)#include命令行注意:是C语言的预处理命令,所以不用加;2.函数定义的语法函数类型函数名( 数据类型参数[,数据类型参数2……] ){ 说明语句部分;可执行语句部分;}(1)在同一程序中,函数名必须唯一,形式参数名只要在同一函数中唯一即可,与其他函数中的变量可以同名。

(2)不能在函数的内部再定义函数,函数定义不可嵌套(3)可以省略函数类型,则默认为int型(4)函数必须先定义(或说明)后调用。

如果未先定义,则必须在前面进行函数原型声明(5)若函数没有返回值,则必须把函数定义成void类型。

3.函数的返回值return 表达式;(1)return语句中表达式的值就是所求的函数值,此表达式值的类型必须与函数首部所说明的类型一致。

若类型不一致,则以函数值的类型为准,由系统自动进行转换。

(2)return语句中也可以没有表达式,但此时必须将函数定义为void类型。

Return语句的作用只是使返回到调用函数,并没有确定的函数值。

(3)函数内可以没有return语句,但此时也必须定义函数为void类型,程序的流程执行到函数末尾“}”后返回调用函数,也没有确定的函数值带回。

应用:函数的返回值经常考查考点2:函数的调用1.函数的两种调用形式函数名(实参表);(1)调用函数可用两种方式:可以作为表达式(有返回值);可以作为一条独立的语句(无返回值)(2)实参的个数、类型必须与形参一一对应应用:实参和形参2.调用函数时的语法要求(4个)(1)调用函数时,函数名必须与所调用的函数名字完全一致(2)实参的个数、类型必须与形参的个数类型一致。

(3)函数必须先定义后调用(4)函数可以直接或间接地调用自己,称为递归调用3.函数的说明(1)函数说明的形式【格式一】类型名函数名(参数类型1,参数类型2,…);int sum(int,int);【格式二】类型名函数名(参数类型1 参数名1,参数类型2 参数名2,…);int sum(int a,int b);(2)函数说明的位置当在所有函数的外部,被调用之前说明函数时,在对函数进行说明的语句后面所有位置上都可以对该函数进行调用。

计算机二级C语言第七章函数

计算机二级C语言第七章函数
正确答案:B 【解析】形式参数简称形参,就是在定义函数时给出的参数,它可以是任意合法的数据类型;实际参数简称实参,是在调 用函数时传递给函数的确定的数据,它的类型应该与对应的形参类型一致,可以是常量、变量或表达式,选项A、C、D 正确;选项B中,常量、表达式不能作为右值,所以形参不能是常量、表达式,错误;本题答案为B。
C.int fun(int a[], int *, int);
D.int fun(int [], int *, int);
正确答案:A 【解析】C语言中,函数声明的函数名、返回值类型和参数列表必须与函数定义相同,其中参数列表中可以省略参 数名。题意中,fun()函数返回整型,三个参数分别是:整型指针、整型指针、整型,选项A中,第一个参数应该是 整型指针类型,第二个参数也应该是指针类型,错误;其他选项都正确,本题答案为A。
函数说明的一般形式如下: 类型名 函数名(参数类型1,参数类型2,……) 如: double sum( double, double );
也可采用下面的形式: 类型名 函数名(参数类型1 参数名1,参数类型2 参数名2,……) 如: double sum( double p, double q );
正确答案:A 【解析】数学库中定义了函数的名称、参数个数与类型、返回值类型与具体的函数体,A选项正确。编译预处理时, 预处理程序将查找指定的被包含文件,并将其复制到#include命令出现的位置上,B、C选项错误。不引用 math.h文件,文件编译时,编译器无法识别没有被定义的sin函数,D选项错误。
关于C语言函数说明的位置,以下叙述正确的是( ) A.在函数说明之后对该函数进行调用,编译时不会出现错误信息 B.函数说明可以出现在源程序的任意位置,在程序的所有位置对该函数的调用,编译时都不会出现错误信息 C.函数说明只能出现在源程序的开头位置,否则编译时会出现错误信息 D.函数说明只是为了美观和编译时检查参数类型是否一致,可以写也可以不写

C语言程序设计实验五:函数(5篇范例)

C语言程序设计实验五:函数(5篇范例)

C语言程序设计实验五:函数(5篇范例)第一篇:C语言程序设计实验五:函数C语言程序设计实验五:函数1、定义函数返回两个数中较大的数,在主函数中通过调用该函数求三个数中较大的数并输出,编写主函数调用该函数。

说明:(1)请大家按学号来坐,便于考勤和管理。

(2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ、上网或打游戏。

(3)直接把C语言代码粘贴到相应的实验题目下方,上交实验报告时只交word文档。

(4)文档名称:班级+学号后2位+姓名+实验编号,例如12通1班12张山实验五.doc。

第二篇:C语言程序设计实验七:函数、数组、指针C语言程序设计实验七:函数、数组、指针1、程序运行后,用户任意输入一个字符串,求出字符串长度,然后输出字符串内容及个数。

不能使用strlen函数。

求字符串长度函数的函数原型必须如下:int MyStrLenPt(char *str)若输入:nihao123!则输出:nihao123!:9 chars2、编写一个对一维数组进行排序的程序。

要求:写两个函数,一个主函数,一个sort函数。

在主函数中完成数组的输入和输出,通过调用sort函数对数组进行排序。

sort函数的原型为:voidsort(int*p, intn);说明:(1)请大家按学号来坐,便于考勤和管理。

(2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ、上网或打游戏。

(3)直接把C语言代码粘贴到相应的实验题目下方,上交实验报告时只交word文档。

(4)文档名称:班级+学号后2位+姓名+实验编号,例如11电1班12张山实验七.doc。

第三篇:C语言程序设计—函数—实验报告实验报告专业软件工程班级X班学号_ XXXXXXXXXXX_姓名实验日期:201X年X月X日报告退发(订正、重做)课程C程序设计实验实验名称函数一、实验目的① 熟练掌握C程序中函数的定义;② 掌握函数的调用,函数参数的传递;③ 熟练掌握函数的嵌套调用和递归调用;二、实验环境(描述实验的软件、硬件环境)① 软件环境:windows xp/win7等操作系统,Microsoft Visual C++ 6.0编译器;② 硬件环境:PC机一台三、实验内容、步骤和结果分析题目一:编写一个用来判断质数(素数)的函数。

二级c语言常用库函数(1)

二级c语言常用库函数(1)

⼆级c语⾔常⽤库函数(1)C语⾔常⽤库函数1 字符处理ctype.h2 数学函数math.h3 输⼊输出stdio.h4 实⽤⼯具程序stdlib.h5 字符串处理string.h程序应包含在math.h函数类型函数形式功能类型数学函数abs(int i) 求整数的绝对值int fabs(double x) 返回浮点数的绝对值doublefloor(double x) 向下舍⼊double fmod(double x, double y) 计算x对y的模, 即x/y的余数doubleexp(double x)指数函数double log(double x) 对数函数ln(x) double log10(double x) 对数函数log doublelabs(long n) 取长整型绝对值long modf(double value, double *iptr) 把数分为指数和尾数double pow(double x, double y) 指数函数(x的y次⽅) double sqrt(double x) 计算平⽅根doublesin(double x) 正弦函数doubleasin(double x) 反正弦函数doublesinh(double x) 双曲正弦函数doublecos(double x); 余弦函数doubleacos(double x) 反余弦函数doublecosh(double x) 双曲余弦函数doubletan(double x) 正切函数doubleatan(double x) 反正切函数doubletanh(double x) 双曲正切函数double数学函数abs(int i) 求整数的绝对值int fabs(double x) 返回浮点数的绝对值doublefloor(double x) 向下舍⼊double fmod(double x, double y) 计算x对y的模, 即x/y的余数double exp(double x) 指数函数doublelog(double x) 对数函数ln(x) double log10(double x) 对数函数log doublelabs(long n) 取长整型绝对值long modf(double value, double *iptr) 把数分为指数和尾数double pow(double x, double y) 指数函数(x的y次⽅) double sqrt(double x) 计算平⽅根doublesin(double x) 正弦函数doubleasin(double x) 反正弦函数doublesinh(double x) 双曲正弦函数doublecos(double x); 余弦函数doubleacos(double x) 反余弦函数doublecosh(double x) 双曲余弦函数doubletan(double x) 正切函数doubleatan(double x) 反正切函数doubletanh(double x) 双曲正切函数double 程序应包含在ctype.h函数类型函数形式功能类型字符函数isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回⾮0值,否则返回0intisalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9')返回⾮0值,否则返回0intisascii(int ch) 若ch是字符(ASCII码中的0-127)返回⾮0值,否则返回intiscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F)返回⾮0值,否则返回0intisdigit(int ch) 若ch是数字('0'-'9')返回⾮0值,否则返回0intisgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回⾮0值,否则返回0intislower(int ch) 若ch是⼩写字母('a'-'z')返回⾮0值,否则返回0intisprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回⾮0值,否则返回0intispunct(int ch) 若ch是标点字符(0x00-0x1F)返回⾮0值,否则返回0intisspace(int ch)若ch是空格(' '),⽔平制表符('\t'),回车符('\r'),⾛纸换⾏('\f'),垂直制表符('\v'),换⾏符('\n'),返回⾮0值,否则返回0intisupper(int ch) 若ch是⼤写字母('A'-'Z')返回⾮0值,否则返回0 intisxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回⾮0值,否则返回0inttolower(int ch) 若ch是⼤写字母('A'-'Z')返回相应的⼩写字母('a'-'z')inttoupper(int ch) 若ch是⼩写字母('a'-'z')返回相应的⼤写字母('A'-'Z')int程序应包含在string.h函数类型函数形式功能类型字符串函数strcat(char *dest,const char *src) 将字符串src添加到dest末尾charstrchr(const char *s,int c) 检索并返回字符c在字符串s中第⼀次出现的位置charstrcmp(const char *s1,const char *s2) ⽐较字符串s1与s2的⼤⼩,并返回s1-s2int stpcpy(char *dest,const char *src) 将字符串src复制到dest char strdup(const char *s) 将字符串s复制到最近建⽴的单元char strlen(const char *s) 返回字符串s的长度int strlwr(char *s) 将字符串s中的⼤写字母全部转换成⼩写字母,并返回转换后的字符串charstrrev(char *s) 将字符串s中的字符全部颠倒顺序重新排列,并返回排列后的字符串charstrset(char *s,int ch) 将⼀个字符串s中的所有字符置于⼀个给定的字符chcharstrspn(const char *s1,const char *s2) 扫描字符串s1,并返回在s1和s2中均有的字符个数charstrstr(const char *s1,const char *s2) 描字符串s2,并返回第⼀次出现s1的位置charstrtok(char *s1,const char *s2) 检索字符串s1,该字符串s1是由字符串s2中定义的定界符所分隔charstrupr(char *s) 将字符串s中的⼩写字母全部转换成⼤写字母,并返回转换后的字符串char程序应包含在stdio.h函数类型函数形式功能类型输⼊输出函数getch()从控制台(键盘)读⼀个字符,不显⽰在屏幕上int putch()向控制台(键盘)写⼀个字符intgetchar() 从控制台(键盘)读⼀个字int符,显⽰在屏幕上putchar()向控制台(键盘)写⼀个字符intgetchar()从控制台(键盘)读⼀个字int符,显⽰在屏幕上int getc(FILE *stream) 从流stream中读⼀个字符,并返回这个字符putc(int ch,FILE *stream) 向流stream写⼊⼀个字符intchint getw(FILE *stream) 从流stream读⼊⼀个整数,错误返回EOFputw(int w,FILE *stream) 向流stream写⼊⼀个整数intFILE * fclose(handle) 关闭handle所表⽰的⽂件处理int fgetc(FILE *stream) 从流stream处读⼀个字符,并返回这个字符fputc(int ch,FILE *stream) 将字符ch写⼊流stream中intc har *fgets(char *string,int n,FILE *stream) 流stream中读n个字符存⼊string中FILE * fopen(char *filename,char *type) 打开⼀个⽂件filename,打开⽅式为type,并返回这个⽂件指针,type可为以下字符串加上后缀fputs(char *string,FILE *stream) 将字符串string写⼊流intstream中int fread(void *ptr,int size,int nitems,FILE *stream) 从流stream中读⼊nitems 个长度为size的字符串存⼊ptr中fwrite(void *ptr,int size,int nitems,FILE *stream) 向流stream中写⼊nitems int个长度为size的字符串,字符串在ptr中int fscanf(FILE *stream,char *format[,argument,…])以格式化形式从流stream 中读⼊⼀个字符串fprintf(FILE *stream,char *format[,argument,…])以格式化形式将⼀个字符int串写给指定的流streamint scanf(char *format[,argument…]) 从控制台读⼊⼀个字符串,分别对各个参数进⾏赋值,使⽤BIOS进⾏输出printf(char *format[,argument,…]) 发送格式化字符串输出给int控制台(显⽰器),使⽤BIOS进⾏输出。

计算机二级C语言程序设计考点:函数

计算机二级C语言程序设计考点:函数

计算机二级C语言程序设计考点:函数c语言提供了丰富的库函数,包括常用数学函数、对字符和字符串处理函数、输入输出处理函数等。

下面是小编为大家带来的关于函数的知识,欢迎阅读。

1库函数的正确调用1.c语言提供了丰富的库函数,包括常用数学函数、对字符和字符串处理函数、输入输出处理函数等。

在调用库函数时要注意以下几点:(1)调用c语言标准库函数时必须在源程序中用include命令,include命令的格式是:#include″头文件名″include命令必须以#号开头,系统提供的头文件名都以.h作为后缀,头文件名用一对双引号″″或一对尖括号〈〉括起来。

(2)标准库函数的调用形式:函数名(参数表)2.在c语言中库函数的调用可以以两种形式出现:出现在表达式中;作为*的语句完成某种*作。

2函数的定义方法1.c语言函数的一般形式为:函数返回值的类型名函数名(类型名形参1,类型名形参2,…){说明部分语句部分}定义的第一行是函数的首部,{}中的是函数体。

2.在老的c语言版本中,函数的首部用以下形式:函数返回值的类型名函数名(形参1,形参2…)形参类型说明;新的ansi标准c兼容这种形式的函数首部说明。

3.函数名和形参名是由用户命名的标识符。

在同一程序中,函数名必须唯一。

形式参数名只要在同一函数中唯一即可,可以与函数中的变量同名。

4.c语言规定不能在一个函数内部再定义函数。

5.若在函数的首部省略了函数返回值的类型名,把函数的首部写成:函数名(类型名形参1,类型名形参2,…)则c默认函数返回值的类型为int类型。

6.当没有形参时,函数名后面的一对圆括号不能省略。

3函数的类型和返回值1.函数的类型由函数定义中的函数返回值的类型名确定,函数的类型可以是任何简单类型,如整型、字符型、指针型、双精度型等,它指出了函数返回值的具体类型。

当函数返回的是整型值时,可以省略函数类型名。

当函数只完成特定的*作而没有或不需要返回值时,可用类型名void(空类型)。

计算机二级C语言_第7章函数全解

计算机二级C语言_第7章函数全解

开发方法: 自上向下,逐步分解,分而治之
C是模块化程序设计语言规则
必须有且只能有一个名为main的主函数 C程序的执行总是从main函数开始, 在main中结束。 函数不能嵌套定义,可以嵌套调用
函数的基本概念
( ( 3 4 ) )主函数可以调用任意子函数,而 C 程序的执行从 main() 函数开始。 ( 1 project —— 工程:是由一个或 ( 2) ) C 语言程序源文件由 函数 组成 没有 子函数不能调用主函数。 main( ) 函数的程序,不能执行。 多个 C 程序源文件组成。一个源程序是 函数的概念是C语言结构程序设计思想 调用其他函数后流程回到 子函数的地位是平等的,相互独立, main 函数, 由一个或多个函数组成。 的体现。主函数:包括一个且仅有一个— 在 相互无从属关系,可以相互调用。 main 函数结束整个程序运行。 一个源程序是一个编译单位,即以源 — main() 。其他函数:可以有,也可以没 main 子函数可以直接或间接地自己调用自 函数是系统定义的。 程序为单位进行编译,而不是以函数为 有,可以有一个,也可以有多个。 己,即递归调用。 单位进行编译。其扩展名为 .h或 .c。
编译错误!
程序举例2
下面add函数的功能是求两个参数的和, 并将和值返回调用函数。函数中的错误 是: void add(float a, float b) void add(float a, float b) { float c; c=a+b; return c; float add(float a, float b) }
(2)函数的现代定义方式
类型 函数名 (形参说明表列)
{ 说明部分 语句 } 传统定义举例 将形参说明包含到形参列表中,即在 现代定义举例 列出形参的同时,说明形参类型。 int add(x, y) int add(int x, int y) 形参列表: int x, y; {…… 类型 参数1,类型 参数 {……} }2,… ,类型 参数n

计算机二级C语言 第七章 函数

计算机二级C语言 第七章  函数

第七章函数【本章要求】1、C语言程序中函数的基本概念2、函数定义和声明的方法3、函数调用方法,尤其是类型匹配问题4、值传递方式下,函数形式参数和实际参数的变化5、函数返回值类型的一致性问题6、函数嵌套调用和递归调用的过程7、局部变量、全局变量、静态变量的作用域和生存期7.1 模块化程序设计和C语言程序组成7.1.1模块化程序设计将重复使用的程序,设计成能够完成一定功能的可供其他程序使用(调用)的相对独立的功能模块。

它独立存在,但可以被多次调用,调用的程序称为主程序。

高级语言程序设计中的基本方法,即自顶向下、逐步细化和模块化。

使用独立模块化的优点有:1、消除重复的程序行;2、使程序容易阅读;3、使程序开发过程简化;4、可以在其他程序中重用;5、使C语言得到扩充。

独立模块由顺序、选择、循环这3种基本结构所组成。

由于模块是通过执行一组语句来完成一个特定的操作过程,因此模块又称为“过程”,执行一个过程就是调用一个子程序或函数模块。

结构化程序设计的基本思想是“自顶向下、逐步求精”,即将一个教大的程序按其功能分成若干个模块,每个模块具有单一的功能。

7.1.2 C语言程序的组成一个较大的程序一般应分为若干个程序模块,每一个模块用来实现一个特定的功能。

所有的高级语言中都有子程序这个概念,用子程序实现模块的功能。

在C语言中,子程序的作用是由函数完成的。

一个C程序可由一个主函数和若干个函数构成。

由主函数调用其他函数,其他函数也可以互相调用。

同一个函数可以被一个或多个函数调用任意多次。

【说明】1、一个C程序有且只有一个主函数main 。

2、C程序的执行从main函数开始,调用其他函数后流程回到main函数,在main函数中结束整个程序的运行。

- 70 -第七章函数3、一个C程序由一个或多个源程序文件组成。

这样可以分别编写、分别编译,提高调度效率。

一个源文件可以为多个C程序公用。

4、一个源程序文件由—个或多个函数组成。

计算机二级C语言第7章 函数

计算机二级C语言第7章 函数

7.5.1 函数声明的形式
函数的“定义”是指对函数功能的确立,包括指定函数名、函数值类 型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。
函数“声明”是指利用它在程序的编译阶段对调用函数的合法性进行 全面检查,它把函数的名字、函数类型以及形参的类型、个数和顺序 通知编译系统,以便在调用该函数时系统按此声明进行对照检查。例 如,函数名是否正确、实参与形参的类型和个体是否一致等。函数的 “声明”是一条语句。 在C语言中,除了主函数main外,对于用户定义的函数要遵循“先定 义,后使用”的规则。凡是未在调用前定义返回类型的函数,C编译 程序都默认函数的返回值为int类型。对于返回值为其他类型的函数, 若把函数的定义放在调用之后,应该在调用之前对函数进行声明。 函数声明的一般形式如下:
7.5.2 函数声明的位置
对被调用函数的声明有两种方式:外部声明和内部声明。在调用函数 内对被调函数所作的声明称为内部声明,也称为局部声明;在函数外 进行的函数声明称为外部声明,如果声明在程序最前端,外部声明又 称为全局声明。 【说明】 ①如果将被调函数的定义放在主调函数前,那么这个被调函数不需要 声明。 ②内部声明过的函数只能在声明它的调用函数内调用。外部声明过的 函数,从声明处到本程序文件结束都可以被调用。 ③内部声明应放在调用函数的数据描述部分,外部声明可以出现在程 序中任何函数外。
();
7.4.2 函数的嵌套调用
C语言不能嵌套定义函数,但可以嵌套调用函数。函数的嵌套调用就 是在被调用的函数中又调用另一个函数,一个简单的嵌套调用过程见 图7-1。
图7-1表示的是两层嵌套(连同main函数共3层函数),其执行过程如 下所述: ①执行main函数的开头部分。 ②遇调用a函数的语句,程序转去执行a函数。 ③执行a函数的开头部分。 ④遇调用b函数的语句,程序转去执行b函数。

计算机二级C语言讲义-函数

计算机二级C语言讲义-函数

点拨:没有retum对数值进行返回,实参不会受到形参的影响!!!
点拨:retum在函数运行时只执行一个,后一个在for语句循环完了再执行!!!倘若在两个retum间加上个else的话,for语句每循环一次,就会返回一次,整除环节将出现错误。

点拨:第二个程序只输出最后个字母,因为它是在while执行完后输出的。

当条件有确定范围是,用for语句,当条件无范围时,常用while语句。

点拨:空参数的一个函数!函数目的:计数,记得要有返回!!!
点拨:充分重视表达式中,小括号的运用对语句表达的影响!!!注意:主函数中,执行x+y时:x=5、y=8、然后z=8。

点拨:i、i+1被赋予a、b。

点拨:易错选6,搞忘了:没有返回值啦!!!另外,这是个整型函数。

内函数的c和主函数的c不是一回事儿……
点拨:第一次,f(0)带入函数,0给n进行函数运行,不符合条件而没有执行。

S的值通过f(i)返回给a!!!
点拨:执行第二遍do语句时,num=2!!!
点拨:结果是9.0不是9哦!!!
点拨:取余3的值而不是除以3的商。

点拨:能被一个整除,跳出;都不能被整除,赋值1。

计算机等级考试二级C语言配套课件第07章 函数

计算机等级考试二级C语言配套课件第07章 函数

s=a+b;
return s
} 2021/7/23
8
2、函数返回值
在函数调用过程中,有时被调函数要向调用函数带回一个值,
这个被带回主函数的值称为函数的返回值。在c语言中,要实
现这样的操作,要用到retuen语句 return语句的表示形式如下:
return 表达式; 或 return(表达式);
注意:1、函数返回值的类型要与函数首部说明类型保持一致,如 果不一致,则以函数首部说明为准,系统进行类型的自动转化。
}
2021/7/23 6.3 函数的调用
15
二. 函数声明
◆调用用户自定义函数时,一般调用函数和被调用函数应在同 一个文件中,在调用函数中对被调用函数返回值的类型、函数 名称、函数形式参数的类型进行说明,这种说明称为函数声明。
■函数声明的一般形式如下:
类型名 函数名(类型1 形参1,类型2 形参2,…,类型n 形参n)
z=x+y;x=x*x;y=y*y; printf(“(3)x=%d y=%d z=%d\n “,x,y,z); }
b24ac
2021/7/23 6.3 函数的调用
19
通过函数调用,将实参的值传递给形参.
xyz
函数main
xyz
函数try
实参与形参数据传递 函数调用时,系统对参数的处理步骤为: (1)计算各实参的值,将实参的一个副本给形参,然后执行函数体。 (2)当函数执行完返回时,形参将自动销毁。
函数名(实际参数列表) A、作为表达式的一部分 y=add(3.0,4.0)+2;
B、做为对立的一条语句 函数名(实参列表);
2021/7/23 6.3 函数的调用

全国计算机二级考试辅导:C语言之函数(2)

全国计算机二级考试辅导:C语言之函数(2)

函数的值是指函数被调⽤之后,执⾏函数体中的程序段所取得的并返回给主调函数的值。

如调⽤正弦函数取得正弦值,调⽤例5.1的max函数取得的数等。

对函数的值(或称函数返回值)有以下⼀些说明:1. 函数的值只能通过return语句返回主调函数。

return 语句的⼀般形式为:return 表达式;或者为:return (表达式);该语句的功能是计算表达式的值,并返回给主调函数。

在函数中允许有多个return语句,但每次调⽤只能有⼀个return 语句被执⾏,因此只能返回⼀个函数值。

2. 函数值的类型和函数定义中函数的类型应保持⼀致。

如果两者不⼀致,则以函数类型为准,⾃动进⾏类型转换。

3. 如函数值为整型,在函数定义时可以省去类型说明。

4. 不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。

如例5.3中函数s并不向主函数返函数值,因此可定义为:void s(int n){ ……} ⼀旦函数被定义为空类型后,就不能在主调函数中使⽤被调函数的函数值了。

例如,在定义s为空类型后,在主函数中写下述语句 sum=s(n); 就是错误的。

为了使程序有良好的可读性并减少出错,凡不要求返回值的函数都应定义为空类型。

函数说明在主调函数中调⽤某函数之前应对该被调函数进⾏说明,这与使⽤变量之前要先进⾏变量说明是⼀样的。

在主调函数中对被调函数作说明的⽬的是使编译系统知道被调函数返回值的类型,以便在主调函数中按此种类型对返回值作相应的处理。

对被调函数的说明也有两种格式,⼀种为传统格式,其⼀般格式为:类型说明符被调函数名();这种格式只给出函数返回值的类型,被调函数名及⼀个空括号。

这种格式由于在括号中没有任何参数信息,因此不便于编译系统进⾏错误检查,易于发⽣错误。

另⼀种为现代格式,其⼀般形式为:类型说明符被调函数名(类型形参,类型形参…);或为:类型说明符被调函数名(类型,类型…); 现代格式的括号内给出了形参的类型和形参名,或只给出形参类型。

全国计算机等级考试实用应试教程二级C语言函数

全国计算机等级考试实用应试教程二级C语言函数

2.数据传递的形式 (1)C语言中,调用函数和被调函数之间的
数据可以通过三种方式进行传递:
① 实际参数和形式参数之间进行数据传递。
② 通过return语句把函数值返回调用函数。 ③ 通过全局变量。
(2)参数值的传递
主调函数在调用函数时,需要把相应的实际 参数传给相应的形式参数,实际参数的个 数和类型要和形式参数的个数和类型一致。
2.无返回值的函数调用形式
无返回值的函数调用只能作为一条语句,其 调用形式如下:
函数名(实际参数列表);(注意,这里的分号 必不可少)
如:max(a,b,c);
3.函数调用执行过程 其实在执行函数调用时,系统要完成一系列复杂的过程: 首先为被调函数的所有形式参数分配内存,再计算实际参 数的值,再一一对应地赋给相应的形式参数(对于无参函 数,不做该项工作);然后进入函数体,为函数说明部分 定义的变量分配存储空间,再依次执行函数体中的可执行 语句;当执行到“return(表达式)”语句时,计算返回值(如 果是无返回值的函数,不做该项工作),收回本函数中定 义的变量所占用的存储空间(对于static类型的变量,其空 间不收回),返回主调函数继续执行。
① 实参的个数与类型应与形参一致,否则将会出现编译错误。
② 实参可以是常量、变量、数组元素和表达式,但如果在被 调函数中有取形参地址或给形参赋值的语句,则对应的实 参必须是变量和数组元素。
③ 定义函数时定义的形参并不占用实际的存储单元,只有在 被调用时才由系统给它分配存储单元,在调用结束后,形 参所占用的存储单元被回收。
(1)return语句中表达式的值就是所求的函数 值,且其类型必须与函数首部所说明的类型一 致。若类型不一致,则由系统自动转换为函数 值的类型。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2011年计算机等级考试二级C语言实验指导:函数实验八函数【目的与要求】1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。

2.了解主调函数和被调函数之间的参数传递方式。

【上机内容】【一般示例】【例1】写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。

源程序如下:mian(){int number;printf(“请输入一个正整数:\n”);scanf(“%d”,&number);if (prime(number))printf(“\n %d是素数.”,number);elseprintf(“\n %d不是素数.”,number);}int prime(number) /*此函数用于判别素数*/int number;{int flag=1,n;for(n=2;n if (number%n==0)flag=0;return(flag);}判断素数的算法,我们在以前学习循环的时候已经学过了,在这里只是把这个算法用函数的形式表示出来。

这里我们要注意函数的定义、声明的方法和格式。

【例2】写一函数,是给定的一个二位数组(4×4)转置,即行列互换。

源程序如下:/*矩阵的转置*/#define N 4int array[N][N];convert(array)int array[4][4];{int i,j,t;for (i=0;i<n;i++)for (j=i+1;j<n;j++){t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t;}}main(){int i,j;printf(“输入数组元素:\n”);for (i=0;i<n;i++)for (j=0;j<n;j++)scanf(“%d”,&array[i][j]);printf(“\n数组是:\n”);for (i=0;i<n;i++){for (j=0;j<n;j++)printf(“]”,array[i][j]);printf(“\n”);}conver(array);printf(“转置数组是:\n”);for (i=0;i<n;i++){for (j=0;j<n;j++)printf(“]”,array[i][j]);printf(“\n”);}}本例题用数组作为函数参数,大家要注意数组作为函数参数时的用法。

【典型示例】【例1】写两个函数,分别求两个正数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。

两个正数由键盘输入。

源程序如下:#include "stdio.h"hcf(u,v)int u,v;{int a,b,t,r;if(u>v){t=u; u=v; v=t;}a=u; b=v;while((r=b%a)!=0){b=a; a=r;}return(a);}lcd(u,v,h)int u,v,h;{return(u*v/h);}main(){int u,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("H.C.F=%d\n",h);l=lcd(u,v,h);printf("L.C.D=%d\n",l);}这是一个十分典型的算法,同学们一定要认真分析、学习。

</n;j++) </n;i++)</n;j++)</n;i++)</n;j++)</n;i++)</n;j++)</n;i++)【例2】写一函数,用“起泡法”对输入的10个字符按由小到大顺序排序。

源程序如下:/*起泡法排序*/#define N 10char str[N];main(){int i,flag;for (flag=1; flag = =1;){printf(“\n输入字符串,长度为10:\n”);scanf(“%s”,&str);if (strlen(str)>N)printf(“超过长度,请重输!”);elseflag = 0;}sort(str);printf(“\n排序结果:”):for (i=0;i<n;i++)printf(“%c”,str[i]);}sort(str)char str[N];{int i,j;char t;for (j=1;j<n;j++)for (i=0;(i<n-j)&&(str[i]!=’\0’);i++)if (str[i]>str[i+1]){t=str[i]; str[i]=str[i+1]; str[i+1]=t;}}【例3】用牛顿迭代法求根。

方程为ax3+bx2+cx+d=0,系数a、b、c、d由主函数输入。

求x在1附近的一个实根。

求出根后,由主函数输出。

源程序如下:/*牛顿迭代法解方程*/#include “math.h”float solut(a,b,c,d)float a,b,c,d;{float x=1,x0,f,f1;do{x0=x;f=((a*x0+b)*x0+c)*x0+d;f1=(3*a*x0+2*b)*x0+c;x=x0-f/f1;}while(fabs(x-x0)>=1e-5);return(x);}main(){float a,b,c,d;printf(“\n输入方程的系数a,b,c,d\n”);scanf(“%f,%f,%f,%f”,&a,&b,&c,&d);printf(“\n方程是:%5.2fx^3+%5.2fx^2+%5.2fx+%5.2f=0”,a,b,c,d);printf(“\nX=.7f\n”,solut(a,b,c,d));}在此题目中,方程的系数是未知的,这是与以前我们用牛顿迭代法的时候不同的地方。

但原理、算法是相同的,这里我们用函数来求方程的根。

也就是把牛顿迭代法用函数的形式表现出来。

【作业】1.上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。

main(){int x,y;printf("%d\n",sum(x+y));int sum(a,b);{int a,b;return(a+b);}}2.定义一个函数,功能是计算n个学生的成绩中,高于平均成绩的人数,并作为函数值。

用主函数来调用它,统计50个学生成绩中,高于平均成绩的有多少人?3.编写一个对n个数据从大到小的排序C函数,再编写一个计算最后得分的C函数,计算方法是:去除一个最高分,去除一个最低分,其余的平均分为参赛选手的最后得分。

并在主函数中调用它们对有n个评委评分,m个选手参赛的最后得分,从大到小排序输出。

4.编写一个计算n!的函数,用主函数调用它,使之输出7阶杨辉三角形:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 1杨辉三角形是二项展开式(a+b)n的系数,共有n+1项,n=0,1,…。

杨辉三角形在数学上具有重要的意义,在高中阶段已学过,系数是按照公式:am= ,其中am是展开式中的第m项系数。

5.编写一个程序,包括主函数和如下子函数。

(1) 输入10个无序的整数;(2) 用起泡方法从大到小排序;(3) 要求输入一个整数,用折半查找法找出该数,若存在,在主函数中输出其所处的位置,否则,插入适当位置。

分析:input函数完成10个整数的录入。

sort函数完成起泡法排序,search函数完成输入数的查找。

</n-j)&&(str[i]!=’\0’);i++)</n;j++)</n;i++)2011年计算机等级考试二级C语言实验指导:文件实验九文件【目的与要求】1.掌握文件和文件指针的概念以及文件的定义方法。

2.了解文件打开和关闭的概念和方法。

3.掌握有关文件的函数。

【上机内容】【一般示例】【例1】对data.dat文件写入100条记录。

#includemain(){FILE *fp;int i;float x;fp=fopen("date.dat","w");for(i=1;i<=100;i++){scanf("%f",&x);fprintf(fp,"%f\n",x);}fclose(fp);}【例2】设有一文件cj.dat存放了50个人的成绩(英语、计算机、数学),存放格式为:每人一行,成绩间由逗号分隔。

计算三门课平均成绩,统计个人平均成绩大于或等于90分的学生人数。

#includemain(){FILE *fp;int num;float x , y , z , s1 , s2 , s3 ;fp=fopen ("cj.dat","r");{fscanf (fp,"%f,%f,%f",&x,&y,&z);s1=s1+x;s2=s2+y;s3=s3+z;if((x+y+z)/3>=90)num=num+1;}printf("分数高于90的人数为:%.2d",num);fclose(fp);}【例3】统计上题cj.dat文件中每个学生的总成绩,并将原有数据和计算出的总分数存放在磁盘文件“stud”中。

#include "stdio.h"main(){FILE *fp1,*fp2;float x,y,z;fp1=fopen("cj.dat","r");fp2=fopen("stud","w");while(!feof(fp1)){fscanf (fp1,"%f,%f,%f",&x,&y,&z);printf("%f,%f,%f,%f\n",x,y,z,x+y+z);fprintf(fp2,"%f,%f,%f,%f\n",x,y,z,x+y+z);}fclose(fp1);fclose(fp2);}【作业】1. 有 5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。

2. 将上题“stud”文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一个新文件“stu_sort”中。

相关文档
最新文档