您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 《C语言程序设计》课后习题参考答案
高等院校计算机基础教育规划教材《C++程序设计》课后习题参考答案――武汉大学出版社习题1参考答案一、选择题1.A2.D二、填空题1.BASIC、FORTRAN、AL_GOL60和COBOL2.83.关键字4.编辑、编译、链接和运行三、简答题1.答:(1)C语言具有结构化的控制语句。C语言提供了结构化程序所必需的基本控制语句,实现了对逻辑流的有效控制。(2)C语言具有丰富的数据结构类型。C语言除提供整型、实型、字符型等基本数据类型外,还提供了用基本数据类型构造出的各种复杂的数据结构,如数组、结构、联合等。C语言还提供了与地址密切相关的指针类型。此外,用户还可以根据需要自定义数据类型。(3)C语言具有丰富的运算符。C语言提供了多达34种运算符,丰富的数据类型与丰富的运算符相结合,使C语言的表达力更具灵活性,同时也提高了执行效率。(4)C语言简洁、紧凑,使用方便、灵活,程序书写自由,有9种控制语句。(5)C语言既具有高级语言的功能,又具有低级语言的许多功能,通常被称为中级计算机语言。它既是成功的系统描述语言,又是通用的程序设计语言。(6)C语言与汇编语言相比,可移植性好。(7)功能强大。C语言具有低级语言的一些功能,所以,生成目标代码质量高,程序执行效率高。现在许多系统软件都用C语言来描述,可以大大提高了编程效率。2.答:运行一个C语言程序,一般需要经过如下几个步骤:①上机输入并编辑源程序;②编译源程序;③与库函数连接;④生成可执行目标程序;⑤运行目标程序。3.答:(1)操作系统的设计与实现。C语言是一种应用非常广泛的结构化高级程序设计语言,既适合编写应用软件,又适合编写系统软件。(2)工业控制。由于C语言具有简洁、灵活、代码效率高、能进行位操作等优点,C语言大量应用在单板机、单片机上,以及嵌入式领域等。(3)图形图像处理。C语言在内存管理和进程控制方面有丰富的指令,而且它能提供快速运行的代码,因而C语言适合进行图形程序设计。(4)教学领域。C语言是理想的结构化程序设计语言,其描述能力强,应用十分广泛,因此广泛应用于教学领域。许多计算机相关课程,如数据结构及算法大多是用C语言进行描述的。习题2参考答案一、选择题1.A2.A3.C二、填空题1.基本数据类型、构造数据类型、指针类型、空类型2.反斜线“\”3.枚举数据类型(EnumeratedDataType)三、简答题1.答:在C语言中,数据类型可分为:基本数据类型、构造数据类型、指针类型、空类型四大类。基本类型是数据类型的基础,由它可以构造出其他复杂的数据类型。基本类型的值不可以再分解为其他类型。C语言的基本类型包括整型、实型(浮点型)、字符型和枚举型。C语言的构造类型包括数组类型、结构类型和联合类型。构造类型是根据已定义的一种或多种数据类型用构造的方法定义的。也就是说,一个构造类型的值可以分解成若干个成员或元素。每个成员或元素都是一个基本数据类型,或又是一个构造类型。指针是一种特殊而又具重要作用的数据类型,其值表示某个量在内存中的地址。虽然指针变量的取值类似于整型量,但这是两种完全不同类型的量,一个是变量的数值,一个是变量在内存中存放的地址。在调用函数时,被调用函数通常应向调用函数返回一个函数值。返回的函数值具有一定的数据类型,应在函数定义的函数说明中给以说明。例如,在例1-1中给出的max函数定义中,函数头为intmax(inta,intb,intc),其中写在函数名max之前的类型说明符int表示该函数的返回值为整型量。但是,也有一类函数,被调用后并不向调用函数返回函数值,这种函数可以定义为空类型(也称无值型),其类型说明符为void。习题3参考答案一、选择题1.C2.B3.B4.D二、填空题1.4字节,1字节,4字节,8字节2.203.6604.26255.25622三、简答题1.C语言的基本类型包括整型、实型(浮点型)、字符型和枚举型。2.定义符号常量和定义变量都要指定数据类型,系统将为其分配一定的存储空间。其不同之处在于:定义符号常量必须给出常量值,且以后不能修改本常量的值;而变量可以在定义变量的同时赋初值,以后可以修改该变量。3.常量就是在程序的运行过程中该量是不可修改的量;变量在程序的运行过程中允许对该变量的值进行修改。四、程序题1.程序运行结果为:11101011-10-112.程序运行结果为:3,12,4,4习题4参考答案一、选择题1.C2.D3.C4.C5.B6.D7.B8.C9.B二、填空题1.!&&||2.013.14.45.-1三、编程题1.给出等级成绩′A′、′B′、′C′、′D′、′E′,假设,90分以上为′A′,80~89分为′B′,70~79分为′C′,60~69分为′D′,60分以下为′E′,输入一个等级成绩,问属于哪一个分数段。参考代码如下:main(){intscore,m,n;chargrade;n=1;while(n){printf(Pleaseenterthescore:);scanf(%d,&score);if((score100)||(score0))printf(\nWrong!\n);elsen=0;}if(score==100)m=9;elsem=(score-score%10)/10;switch(m){case0:case1:case2:case3:case4:case5:grade='E';break;case6:grade='D';break;case7:grade='C';break;case8:grade='B';break;case9:grade='A';}printf(score=%d,grade=%c\n,score,grade);}2.编程序打印出以下图形:112112321…12345678987654321参考代码如下:#includestdio.hmain(){inti,j;for(i=1;i=9;i++){for(j=1;j=i;j++)printf(%d,j);for(j=i-1;j0;j--)printf(%d,j);printf(\n);}}3.用1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,问共有几种兑换方案?每种方案各换多少枚?[提示:设5分、2分和1分的硬币各换x,y,z枚,依题意有x+y+z=100,5x+2y+z=150,由于每一种硬币都要有,故5分硬币最多可换28枚,2分硬币最多可换73枚,1分硬币可换100-x-y枚,x,y,z只需满足第2个方程即可打印,对每一组满足条件的x,y,z值,用计数器计数即可得到兑换方案的数目。]参考代码如下:main(){intx,y,z,s=0;for(x=1;x=28;x++)for(y=1;y=73;y++)for(z=1;z=148;z++){if(150==5*x+2*y+z)if(100==x+y+z){printf(x=%dy=%dz=%d\n,x,y,z);s++;}}printf(s=%d\n,s);}4.编程:从键盘输入正整数n,输出1+(1+2)+(1+2+3)+……+(1+2+3+…+n)。参考代码如下:#includestdio.hmain(){intn,i,s=0,t=0;printf(Pleaseentern=);scanf(%d,&n);for(i=1;i=n;i++){t=t+i;s=s+t;}printf(s=%d\n,s);}习题5参考答案一、选择题1.B2.A3.A4.D5.C6.B7.A8.A二、填空题1.按行的顺序依次存放的2.03.44.6三、编程题1.有一个多项式:Pn(x)=a0xn+a1xn-1+…+an它们的系数a0,a1,…,an存放在一个一维数组中。编制程序,输入系数和x的值,计算并输出Pn(x)。参考代码如下:#defineN4main(){inta[N+1],p,x,i;printf(Pleaseentera[%d],...,a[0]:\n,N);for(i=N;i=0;i--)scanf(%d,&a[i]);printf(Pleaseenterx=\n);scanf(%d,&x);p=a[N];for(i=N;i0;i--){p=p*x+a[i-1];}printf(Pn(x)=%d\n,p);}2.打印以下的杨辉三角形(要求打印6行)。11112113311464115101051参考代码如下:#includestdio.h#includeconio.h#defineN6main(){inti,j,max[N][N];for(i=0;iN;i++){for(j=0;jN;j++){max[i][0]=1;max[i][i]=1;}}for(i=2;iN;i++){for(j=1;ji;j++){max[i][j]=max[i-1][j-1]+max[i-1][j];}}for(i=0;iN;i++){for(j=0;j=i;j++){printf(%d,max[i][j]);}printf(\n);}}3.编写程序,将一个数插入到有序的数列中去,插入后的数列仍然有序。参考代码如下:/*假设原有5个数*/#includestdio.hmain(){inta[6]={1,2,6,10,15};intn,i,j;printf(Pleaseentertheinsertnumber:);scanf(%d,&n);for(i=0;i5;i++)if(na[i])continue;elsebreak;for(j=4;j=i;j--)a[j+1]=a[j];a[i]=n;for(i=0;i6;i++)printf(%d,,a[i]);printf(\n);}4.编写程序,在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出nofound。参考代码如下:#includestdio.hmain(){inta[10]={1,2,3,4,5,6,7,8,9,10};intn,i,j,k=0;printf(Pleaseenterthenumber:);scanf(%d,&n);for(i=0;i10;i++){while(n==a[i]){k=1;j=i;break;}}if(k==1)printf(a[%d]\n,j);elseprintf(nofound.\n);}5.编程将下列矩阵中的元素向右移动一列,最右一列移至第一列。14681012[提示:用二维数组v存放矩阵中元素,数组v可在定义时初始化;有两种方法实现这种移动:一种方法是将移动后的元素放在另一个二维数组中;另一种方法是利用一个中间变量仍将移动后的元素放在数组v中。]#includestdio.hvoidmain(){inti,j;inta[2][3]={1,4,6,8,10,12};intb[2][3];b[0][0]=a[0][2];b[0][1]=a[0][0];b[0][2]=a[0][1];b[1][0]=a[1][2];b[1][1]=a[1][0];b[1][2]=a[1][1];printf(a[2][3]:);for(i=0;i2;i++){printf(\n);for(j=0;j3;j++)printf(%5d,a[i][j]);}printf(\nresult:\n);for(i=0;i2;i++){printf(\n);for(j=0;j3;j++)printf(%5d,b[i][j]);}printf(\n);getch();}6.利用公式),(),(),(jibjiajic计算m×n的矩阵A和m×n的矩阵B之和,已知),(jia为矩阵A的元素,),(jib为矩阵B的元素,),(jic为矩阵C的元素,njmi,...,2,1,,...,2,1。[提示:用二维数组元素做函数参数编程实现矩阵相加。]#includestdio.h#includeconio.h#def
本文标题:《C语言程序设计》课后习题参考答案
链接地址:https://www.777doc.com/doc-5582255 .html