程序设计基础——基于C语言(第2版) 课后习题参考答案.doc_第1页
程序设计基础——基于C语言(第2版) 课后习题参考答案.doc_第2页
程序设计基础——基于C语言(第2版) 课后习题参考答案.doc_第3页
程序设计基础——基于C语言(第2版) 课后习题参考答案.doc_第4页
程序设计基础——基于C语言(第2版) 课后习题参考答案.doc_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

习题1参考答案1.1解释以下术语(1)计算机软件:计算机软件是一系列按照特定结构组织的程序、数据(Data)和文档(Document)的集合。(2)计算机程序:用计算机语言所编写的一系列指令的集合。(3)数据:数据是程序加工和处理的对象。(4)算法:算法是一组有穷的规则,它们规定了为解决某一特定问题而采取的一系列运算步骤。 (5)数据结构:数据结构是存在一种或多种特定关系的数据元素的集合,其外在表现为数据的组织形式。(6)数据类型:数据类型是一个值的集合和定义在这个值集上的操作的总称。(7)程序设计:程序设计是给出解决特定问题程序的方法和过程,是软件构造活动中的重要组成部分。1.2 简答题(1)简述内存的组织结构形式? 计算机系统把内存看作是由若干个连续的存储单元(Storage Location)组成的,每个存储单元的大小为一个字节(Byte)。为了能唯一标志每个存储单元,在计算机系统中给每个存储单元指定一个唯一的编号,该编号被称为存储单元的地址(Address),计算机在读写内存时就是按照存储单元的地址进行的。(2)为什么计算机系统是一个通用的计算系统? 在计算机硬件相对固定不变的前提下,计算机的通用性主要表现在通过运行不同的程序来完成不同的计算任务。(3)简述结构化程序设计的基本思想?在程序设计过程中,如果仅仅使用顺序、选择和循环这三种基本控制结构,并且使每个代码块只有一个入口和一个出口,则这样的程序设计方法被称为结构化程序设计(Structured Programming)。(4)简述计算机语言的发展史? 程序设计语言经历了从机器语言、汇编语言、高级语言到超高级语言的发展历程。(5)简述利用计算机进行问题求解的过程?1、理解问题特征2、设想解决方案3、优化解决方案4、描述解决方案5、执行并分析解决方案(6)简述各个程序质量要素的含义?1、正确性(Correctness):正确性是指一个计算机程序的正确程度,即程序在预定的运行环境下能正确完成预期功能的程度。2、鲁棒性(Robustness):鲁棒性也称为健壮性,是指在硬件发生故障、输入数据无效或操作错误等意外情况下,程序能做出响应的程度。3、效率(Efficiency):效率是指为了完成预定的功能,系统需要的计算资源(主要包括计算时间和存储空间)的多少。4、易用性(Usability):易用性又称为可用性,是指在完成预定功能时人机交互的难易程度。易用性高的程序容易被程序用户理解和掌握,使用户操作简单方便。5、可理解性(Understandability):可理解性是指理解程序的难易程度。可理解性高的程序才容易测试和维护。如果程序难以读懂,就会给测试和维护带来巨大的困难。6、可测试性(Testability):可测试性是一个计算机程序能够被测试的容易程度。为了提高程序的可靠性,必须通过测试尽可能多得发现并改正程序中的错误。程序的可测试性直接影响测试的质量和效率。7、可维护性(Maintainability):诊断和改正程序错误以及功能扩充和性能提高的容易程度。程序设计是一个迭代过程,要开发出高质量的程序需要对程序进行多次修改和完善。程序的可维护性决定了上述工作的质量和效率。8、可重用性(Reusability):可重用性是指在其它应用中该程序可以被再次使用的容易程度。如果我们在开发新程序时,能够直接或稍加修改就能利用原有的程序,则会大大提高新程序开发的质量和效率。因此,提高程序的可重用性是提高程序设计质量和效率的根本途径。1.3计算题(1)计算-1的8位原码、反码、补码和Excess_127码。 分别为:10000001B、11111110B、11111111B、01111110B(2)计算机内存中相邻四个字节的值为10111110000000000000000000000000,试问该值表示的实数、有符号数和无符号数各为多少? 分别是:实数0.125、有符号数-1107296256(负数在计算机中用补码表示)无符号数3187671040(3)字符A、a、1的ASCII值是多少,给出将大写字母的ASCII转换成对应小写字母ASCII值得计算公式。A:41H a:61H 1:31H大写转化为小写:大写字母的ASCII值+20H=小写字母的ASCII值1.4为下列问题求解设计算法,并分别用程序流程图、NS盒图和PAD图加以描述。(1)有两个调料盒S1和S2,分别盛有糖和盐,要求将它们互换(即S1盒原来盛糖,现在改盛盐;S2同理)。算法思想:这是一个两个变量交换值的问题,可以设置一个临时变量,首先把S1的值放入临时变量中,然后将S2的值放入S1中,最后将临时变量的值放入S1中即可。程序流程图:N-S盒图:PAD图:(2)依次输入6个整数,要求输出其中最小的数。算法思想:定义一个临时变量用来存放最小的数,首先输入第一个数赋值于临时变量,然后循环输入其余的整数,比较输入的整数和临时变量的大小,如果大于临时变量则继续输入,反之,则给临时变量赋值为次此数。最后临时变量中存放的数输入的数中的最小数,输入临时变量即可。程序流程图:N-S盒图:PAD图:(3)输入3个整数,按从大到小的顺序输出。算法思想:输入三个数a、b、c,首先比较a和b,如果ab,则比较c和a,如果ca则输出c、a、b;如果cb,输出a、c、b,否则输出a、b、c;对于ab的情况同理可以得出结果。程序流程图:N-S盒图:PAD图:(4)求1*2*3*10。 算法思想:定义一个变量用来存放最后的值,赋初值为1,做十次循环,每次循环在原来变量的基础上乘循环变量值(即1-10),最后输出这个变量即可。程序流程图:N-S盒图:PAD图:(5)输入两个整数,求其最大公约数。算法思想:选取两个数中较小的数作为起始值,让这两个数分别除以这个值,如果可以整除,则这个数就是最后结果,如果不能整除则将起始值减一之后再用原来的两个数对其做除法运算,知道整除为止,得到的起始值的最后值就是结果。程序流程图:N-S盒图:PAD图:1.5算法思考题(1)钞票换硬币:把一元钞票换成一分、二分、五分硬币(每种至少一枚),有哪些种换法? 分析:1元相当于100分,设5分、2分、1分的硬币数分别为X、Y、Z,求换法就是在寻找这样一种组合,使得5*X+2*Y+Z =100,所以每当找到1种组合时,将个数记录下来,就可知换法有多少种,算法描述如下:Count = 0; /用于记录个数,初始为0for(X=1;X=20;X+) for(Y=1;Y=50;Y+) for(Z=1;Z=100;Z+) if(5*X + 2*Y + Z = 100) /可实现交换 Count +; 输出Count(2)百钱买百鸡:一只公鸡值元,一只母鸡值元,只小鸡值元,现用一百元要买一百只鸡,问有什么方案?分析:由题意可知,假设公鸡、母鸡、小鸡分别有X、Y、Z只,那么X、Y、Z满足:X+Y+Z=100,而且要满足钱数限定:5*X+3*Y+1/3*Z = 100,由于3只小鸡1元钱,所以小鸡的个数必须是3的整数倍,即:Z是3的整数倍。可通过限制条件,筛选出满足条件的X,Y,Z。当然X、Y、Z还满足以下条件:5*X = 100;3*Y = 100;Z = 100。以下是算法描述:for(X=0;X=100;X+) for(Y=0;Y=100;Y+) for(Z=0;Z=100;Z+) if(5*X=100 and 3*Y=100 and z%3=0) if(X+Y+Z=100 and 5*X+3*Y+Z/3 = 100) 输出X、Y、Z;(3)斐波那契兔子的问题:某人有一对兔子饲养在围墙中,如果它们每个月生一对兔子,且新生的兔子在第二个月后也是每个月生一对兔子,问一年后围墙中共有多少对兔子。分析:第一个月是最初的一对兔子生下一对兔子,围墙内共有两对兔子。第二个月仍是最初的一对兔子生下一对兔子,共有3对兔子。到第三个月除最初的兔子新生一对兔子外,第一个月生的兔子也开始生兔子,因此共有5对兔子。继续推下去,第12个月时最终共有对377对兔子。由分析知,每个月的兔子都是上个月的兔子与新增兔子之和,而上个月新生的兔子到下个月才会生兔子,所以新增的兔子都是上两月的兔子生的。设每个月的兔子数为F(n),则可列出下列式子:F(0) = F(1) = 1F(n) = F(n-1) + F(n-2)显然可用递归的方法解出此题,算法流程图如下:习题2参考答案(1)请简要描述C语言的发展历史。答:C语言是一种目前世界上普遍流行、使用广泛的高级程序设计语言,它是在B语言的基础上发展起来的,19721973年间,贝尔实验室设计出了C语言。1983年,美国国家标准化协会制定了C语言的标准,称为ANSI C。(2)略。(3)C语言的主要特点是什么?答:C语言的主要特点如下。 C程序是由函数组成的。 函数由函数头和函数体组成。 C程序总是从main函数开始执行。 每个语句和数据声明的最后必须有一个“;”。 C语言没有自己的输入/输出语句,它的输入/输出由库函数printf和scanf完成。 可以添加注释。 C语言程序中的变量必须先声明后使用。(4)如何使用Visual C+ 6.0开发控制台程序?使用VC6开发控制台程序的方法如下:答: 在Miscrosoft Visual C+ 6.0环境下,首先建立一个空的工程。 而后建立一个C源程序文件,并在该文件中输入源代码。 使用Bulid命令或者快捷键F7,进行编译连接。 如果没有错误,选择Execute命令或者快捷键Ctrl+F5,进行执行。习题3参考答案:3.1 选择题 1.B 2.D 3.D 4.A 5.A 6.A 7.C 8.C 9.C 10.B3.2 写出下列程序的输出结果1200 310 c82.a=100,b=2003.97,141,61,a4.5.aabb c abc4,36.6,6,6,73.3 编程题1#include void main()int a=500;printf(%d,%o,%xn,a,a,a);输出结果:500,764,1f42.#include void main()float x;scanf(%f,&x);printf(a=%.3f,a=%.3en,x,x);输入:66输出结果:a=66.000,a=6.60000e+0013.#include void main()char ch1=a,ch2=ch1;printf(%c,%d,%o,%xn,ch1,ch1,ch1,ch1);printf(%c,%d,%o,%xn,ch2,ch2,ch2,ch2);输出结果:A,65,101,41a,97,141,614.#include void main()float x,y,z,s,v;scanf(%f%f%f,&x,&y,&z);s=2*(x*y+x*z+y*z);v=x*y*z;printf(Area=%.lf,Volume=%.lfn,s,v);输入:3 4 5输出结果:Area=94 ,Volume=605#define PI 3.14#include #include void main()float r,s,l;scanf(%f,&r);s=(float)PI*r*r;l=2*(float)PI*r;printf(r=%4.1f,s=%4.1f,l=%4.1fn,r,s,l);输入:3输出结果:r= 3.0,s=28.3 ,l=18.86#include #include void main()float x1,y1,x2,y2,x3,y3,a,b,c,p,s;scanf(%f%f%f%f%f%f,&x1,&y1,&x2,&y2,&x3,&y3);a=sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);b=sqrt(x1-x3)*(x1-x3)+(y1-y3)*(y1-y3);c=sqrt(x2-x3)*(x2-x3)+(y2-y3)*(y2-y3);p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c);printf(Area=%fn,s);输入:5 6 3 8 0 23输出结果:Area=12.000013习题4参考答案4.1选择题。(1)D (2)A (3)A (4)C (5)C (6)B (7)B (8)B (9)C (10)A4.2填空题。(1)261 (2)16 (3)0 (4)2,14.3编程题。(1)#includevoid main() float c,f; printf(输入华氏温度:n); scanf(%f,&f); c=(f-32)*5/9; printf(摄氏温度为:%5.2fn,c);(2)#include#includevoid main() char s110,s210,s20; printf(please enter two stringn); gets(s1); gets(s2); strcat(s1,s2); printf(%sn,s1); printf(%dn,strlen(s1);(3)#include#includevoid main() double x,y; printf(please enter two data:n); scanf(%lf%lf,&x,&y); printf(%lf raised to %lf is %lfn,x,y,pow(x,y);习题5参考答案1填空题(1) n=4 (2) 2*i-1 (3) 7 (4) #2#include void main() long m,n,a,b,s; printf(nPlease input value of M :); scanf(%ld,&m); printf(nPlease input value of N :); scanf(%ld,&n); a=(mn)?m:n;b=(mn)?n:m;while (a%b!=0)s=a%b;a=b;b=s;printf(nGong yue shu:%ldn,s);printf(nGong Bei shu:%ldn,(m*n)/s);3#include void main() int a,b,c,d,e;printf(Please input an integer:n);scanf(%d,&a);if (a/1000=0)printf(input error!n);return;b=a/1000;e=a%10;c=a%1000/100;d=a%100/10;if (b=e & c=d)printf(YES.n);elseprintf(NO.n);4#include void main() int c;int Num1,Num2,Num3,Num4;Num1=Num2=Num3=Num4=0;doc=getchar();if (c=a & c=A & c=0 & c=9)Num2+;else if (c= )Num3+;elseNum4+;while(c!=n);printf(英文字母有%d个,数字有%d个,空格有%d个,其它字符有%d个。n,Num1,Num2,Num3,Num4);5#include #include void main()float a,b,c,disc,x1,x2,realpart,imagepart;printf(Input a,b and c:);scanf(%f,%f,%f,&a,&b,&c);printf(The equation);disc=b*b-4*a*c;if (fabs(disc)1e-7)x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf(has distince real roots:%4.2f and %4.2f.n,x1,x2);elserealpart=-b/(2*a);imagepart=sqrt(-disc)/(2*a);printf(has complext roots:);printf(%4.2f+%4.2fi,realpart,imagepart);printf( and %4.2f-%4.2fin,realpart,imagepart);6. #include void main()int i,j;for (i=1;i=5;i+)for (j=1;j=1;i-)for (j=i;j=1;j-)printf(*);printf(n);7#include #define EPS 1e-7void main()int n;double x,an,sum;printf(input x:);scanf(%lf,&x);x=x*3.1415926/180;sum=0;an=x;n=1;dosum+=an;n=n*(n+1)*(n+2);an*=(-x*x)/n;printf(an=%fn,an);while(fabs(an)=EPS);printf(sin(%.4lf)=%.4lfn,x,sum);8#include void main()unsigned int n;char c;n=0;printf(input a binary integer:);while(c=getchar()!=n)switch (c)case 0:n=n*2+0;break;case 1:n=n*2+1;break;printf(the decimal is %d.n,n);9#include void main()int i,j;for (i=1;i10;i+)printf(t%d,i);printf(n);for (i=1;i10;i+)printf(%d,i);for (j=1;j=i;j+)printf(t%d,i*j);printf(n);10#include void main()int n,m,z,x,y;printf(input n:);scanf(%d,&n);m=n;z=x=y=1;while (n1)z=x+y;x=y;y=z;n-;printf(Fibonacci(%d)=%d.n,m,z);11#include #include void main()int i,j;int flag;for (i=1;i=100;i+)flag=1;for (j=2;j=sqrt(i);j+)if (i%j=0)flag=0;break;if (flag=1)printf(%dt,i);12#include void main()int i,sum;sum=0;for (i=1;i=1000;i+)if (i%3=0 & i%5=0 & i%7=0)sum+=i;printf(sum is %d.n,sum);13#include void main()int x;long f;printf(input x:);scanf(%d,&x);if (x=1 & x=4 & x=10)f=3*(x+4);elsef=x*x+3*x-6;printf(f(%d)=%dn,x,f);习题6参考答案6.1 &bij=3001+i*16+j*4;6.2求一维数组各元素的最大值、最小值及所有元素的乘积#include#define N 10void main( )int aN;int max,min,i,product;printf(输入%d个数组元素:n,N);for(i=0;iN;i+)scanf(%d,&ai);max=a0;min=a0;product=a0;for(i=1;iN;i+)product*=ai;if(maxai)min=ai;printf(各元素最大值为:%dn,max);printf(各元素最小值为:%dn,min);printf(各元素的乘积为:%dn,product);6.3已知数列a0=0, a1=1,an= an-2+ an-2an-1,求数列的前10个元素#include#define N 10void main( )int aN=0,1;int i;for(i=2;iN;i+)ai=ai-2+ai-2*ai-1;for(i=0;iN;i+)if(i%5=0)printf(n);printf(%5d,ai);printf(n);6.4用改进的冒泡算法对N个数由小到大排序#include#define N 10void main( )int aN;int i,j,temp,flag;printf(输入待排序数据:n);for(i=0;iN;i+)scanf(%d,&ai);for(i=0;iN-1;i+)flag=0;for(j=0;jaj+1)temp=aj;aj=aj+1;aj+1=temp;flag=1;if(flag=0)break;printf(排序后数据为:n);for(i=0;iN;i+)printf(%d ,ai);printf(n);6.5用插入法对N个数由小到大排序#include#define N 10void main( )int aN;int i,j,temp;printf(输入待排序数据:n);for(i=0;iN;i+)scanf(%d,&ai);for(i=0;itemp&j=0)aj+1=aj;j-;aj+1=temp;for(i=0;iN;i+)printf(%d ,ai);printf(n);6.6用筛选法求1-100内的素数#include#includevoid main( )int a101;int i,j,count=0;for(i=1;i=100;i+)ai=i;a1=0;for(i=2;isqrt(100);i+)if(ai!=0)for(j=i+1;j=100;j+)if(aj!=0&aj%ai=0)aj=0;for(i=1;i=100;i+)if(ai!=0)printf(%5d,ai);count+;if(count%5=0)printf(n);6.7将一维数组中各个元素的顺序变反#include#define N 10void main( )int aN,i,temp;printf(请输入%d个整数:n,N);for(i=0;iN;i+)scanf(%d,&ai);for(i=0;iN/2;i+)temp=ai;ai=aN-1-i;aN-1-i=temp;for(i=0;iN;i+)printf(%5d,ai);printf(n);6.8输出如下上三角矩阵,主对角线以下的元素不输出#include#define N 3void main()int aNN=1,1,6,0,5,7,0,0,2;int i,j;for(i=0;iN;i+)for(j=0;ji;j+)printf( );for(j=i;jN;j+)printf(%4d,aij);printf(n);6.9求两个矩阵的和,要求不引入新的矩阵#include#define M 3#define N 4void main( )int aMN,bMN,i,j;printf(请输入%d*%d矩阵A:n,M,N);for(i=0;iM;i+)for(j=0;jN;j+)scanf(%d,&aij);printf(请输入%d*%d矩阵B:n,M,N);for(i=0;iM;i+)for(j=0;jN;j+)scanf(%d,&bij);for(i=0;iM;i+)for(j=0;jN;j+)aij+=bij;printf(两矩阵的和为:n);for(i=0;iM;i+)for(j=0;jN;j+)printf(%5d,aij);printf(n);6.10求矩阵的最大元素和最小元素及其所在行和列#include#define M 3#define N 4void main( )int aMN,i,j,max,maxi=0,maxj=0,min,mini=0,minj=0;printf(请输入%d*%d矩阵A:n,M,N);for(i=0;iM;i+)for(j=0;jN;j+)scanf(%d,&aij);max=a00;min=a00;for(i=0;iM;i+)for(j=0;jmax)max=aij;maxi=i;maxj=j;if(aijmin)min=aij;mini=i;minj=j;printf(最大元素为a%d%d=%dn,maxi,maxj,max);printf(最小元素为a%d%d=%dn,mini,minj,min);6.11输出杨辉三角形的前10行11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1. . . . . . .说明:杨辉三角形是(a+b)n展开后各项的系数。首行(a+b)0的系数为1,次行为1,1;其余各行中首末元素为1,其余元素为其左上方元素与正上方元素的和。#include#define N 10void main( )int aNN,i,j;for(i=0;iN;i+)ai0=1;aii=1;for(j=1;ji;j+)aij=ai-1j-1+ai-1j;printf(杨辉三角的前%d行为:n,N);for(i=0;iN;i+)for(j=0;j=i;j+)printf(%5d,aij);printf(n);6.12输出N阶魔方阵,其中N为一个奇数。N阶魔方阵是指一个N*N的方阵,其元素由1到N2组成,且方阵每行、每列以及对角线元素的和都相等。如三阶魔方阵为魔方阵中各数的排列规律如下:(1)1在第一行中间一列;(2)从2到N*N的各个数依次按如下规则存放:每一个数存放的行比前一个数的行数减1,列数加1(如上面的三阶魔方阵,5在4的上一行后一列);(3)如果上一个数在第一行,则下一个数在最后一行,列数加1;(4)如果上一个数在最后一列,则下一个数在第一列,行数减1;(5)如果按上述规则确定的位置已经有数,或上一个数在第1行第N列,则下一个数放在上一个数的正下方。如三阶魔方阵中,按前四条规则,4应该放在第一行、第二列的位置,但由于1已经在该位置,故4放在3的下面。再如6,因其位于第一行第3列,故7在其下方。#include#define N 5void main( )int aNN=0,i,j,k;i=0;j=N/2;aij=1;for(k=2;k=N*N;k+)i=i-1;j=j+1;if(i0&j=N)i=i+2;j=j-1;aij=k;else if(i0)i=N-1;else if(j=N)j=0;else if(aij!=0)i=i+2;j=j-1;aij=k;for(i=0;iN;i+)for(j=0;jN;j+)printf(%5d,aij);printf(n);6.13求二维数组的鞍点。即找一个位置,该位置上的元素同行中最大,同列中最小。#include#define M 3#define N 4void main()int aMN;int i,j,maxj,count=0,flag;printf(请输入%d*%d阶矩阵A:n,M,N );for(i=0;iM;i+)for(j=0;jN;j+)scanf(%d,&aij);for(i=0;iM;i+)maxj=0;for(j=1;jN;j+)if(aimaxjaij)maxj=j;flag=1;for(j=0;jM;j+)if(ajmaxjaimaxj)flag=0;if(flag=1)count+;printf(第%d个鞍点:a%d%d=%dn,count,i,maxj,aimaxj);if(count=0)printf(没有鞍点);6.14输出以下图案#include#define N 4void main()int i,j;for(i=0;iN;i+)for(j=0;ji;j+)printf( );for(j=i;jN;j+)printf(* );printf(n);6.15通过键盘输入一行字符串,之后按如下规律对其加密:AZ azBY byCX cx. . . .即将字符串中的第i个大写或小写英文字母变成相应的第26-i+1个大写或小写字母,其它字符不变。#include#includevoid main()char str100;int i,len;printf(请输入字符串:n);gets(str);len=strlen(str);for(i=0;i=A&stri=a&stri=z)stri=a+25-(stri-a);puts(str);6.16编程实现strcmp函数的功能。#includevoid main()char str1100,str2100;int i=0,result;printf(请输入字符串str1:n);gets(str1);printf(请输入字符串str2:n);gets(str2);while(str1i=str2i&str1i!=0)i+;if(str1i=0&str2i=0)result=0;elseresult=str1i-str2i;printf(结果为:%dn,result);6.17编程实现strcpy函数的功能。#include#includevoid main()char str1100,str2100;int i=0;printf(请输入字符串str2:n);gets(str2);while(str2i!=0)str1i=str2i;i+;str1i=0;printf(str1=%sn,str1);printf(str2=%sn,str2);习题7参考答案7.1答:从用户使用的角度,可以将函数分为:l 库函数库函数也称为标准函数,指由C系统提供而无需用户定义的函数。这种函数只需在程序前面包含该函数原型所在的头文件即可(即使用#include预处理命令)。l 用户自定义函数指用户按照实际需要自己编写的实现一定功能的函数。这种函数需要在程序中进行声明和定义才可以使用。从函数返回值的角度,可以将函数分为:l 有返回值函数如果一个函数被调用,并在执行完成后要向调用者返回一个执行结果,则称为有返回值函数,这个函数返回的执行结果即为返回值。如:getchar函数便返回一个字符。如果一个用户自定义函数是有返回值的,那么必须在函数声明和定义中明确指出返回值的类型。l 无返回值函数如果一个函数被调用,但在执行完成后不向调用者返回函数值,则称为无返回值函数。此类函数主要用于完成某种特定的处理任务(类似于Basic、Pascal等语言中的过程),如:printf函数实现输出功能,就没有返回值。用户在定义一个无返回值函数时,需要指定其返回值类型为空类型,即void类型。从函数有无参数的角度,可以将函数分为:l 有参函数有参函数也称为带参函数。如果一个函数被调用时需要从调用者那里接收一些参数,那么它就是一个有参函数。如:printf、scanf就是有参函数,在调用时需要指明输出、输入的格式和内容。在函数定义和声明中使用的参数,称为形式参数,简称为形参,用于表明一个函数需要接收的数据;在函数调用时给出的参数称为实际参数,简称为实参,用于给被调用的函数传递实际数据。l 无参函数如果一个函数被调用时不需要从调用者那里接收任何参数,则称为无参函数。如我们前面所有的main函数都是无参函数。7.2答:C语言中函数定义的格式有两种。第一种是传统格式(或称为K&R格式),是早期编译系统使用的格式;第二种是现代格式(或称为ANSI 格式),是现代编译系统采用的格式。传统格式:存储类型 数据类型 函数名(形参名1,形参名2,) 数据类型1 形参名1;数据类型2 形参名2; 函数体 现代格式:存储类型 数据类型 函数名(数据类型1 形参名1,数据类型2 形参名2,)函数体功能:定义一个函数。7.3答:函数调用有两种方式:一是使用函数名进行调用,二是使用函数指针进行调用。格式:函数名

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论