习题答案习题1(参考答案)1.程序与算法的概念及二者的区别是什么?程序:为了实现特定目标或解决特定问题而用计算机语言偏写的指令序列,它由算法和数据结构组成。算法:(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗地讲,就是计算机解题的步骤。算法与程序的区别:计算机程序是算法的一个实例,同一个算法可以用不同的计算机语言来表达。2.简述程序设计语言发展的过程程序设计语言经过最初的机器代码到今天接近自然语言的表达,经过了四代的演变。一般认为机器语言是第一代,符号语言即汇编语言为第二代,面向过程的高级语言为第三代,面对象的编程语言为第四代。3.简述高级程序设计语言中面向过程与面向对象的概念。“面向过程”是一种以过程为中心的编程思想。首先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步地实现,使用的时候依次调用函数即可。一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。“面向对象”是一种以事物为中心的编程思想。面向对象的方法主要是将事物对象化,对象包括属性与行为。面向过程与面向对象的区别:在面向过程的程序设计中,程序员把精力放在计算机具体执行操作的过程上,编程关注的是如何使用函数去实现既定的功能;而在面向对象的程序设计中,技术人员将注意力集中在对象上,把对象看做程序运行时的基本成分。编程关注的是如何把相关的功能(包括函数和数据)有组织地捆绑到一个对象身上。4.C语言程序的特点是什么?(1)C语言非常紧凑、简洁,使用方便、灵活,有32个关键字,有9种流程控制语句。(2)C语言运算符丰富,共有45个标准运算符,具有很强的表达式功能,同一功能表达式往往可以采用多种形式来实现。(3)数据类型丰富。C语言的数据类型有整型、实型、字符型、数组类型、结构类型、共用类型和指针类型,而且还可以用它们来组成更复杂的数据结构,加之C语言提供了功能强大的控制结构,因而使用C语言能非常方便地进行结构化和模块化程序设计,适合于大型程序的编写、调试。(4)用C语言可直接访问物理地址,能进行二进制位运算等操作,即可直接同机器硬件打交道。它具有“高级语言”和“低级语言”的双重特征,既能用于系统软件程序设计,又能用于通用软件程序设计。(5)C语言生成的目标代码质量高、程序执行速度快。一般只比用汇编语言生成的目标代码的效率低20%左右。(6)可移植性好。5.源程序执行过程中,有哪些步骤?C语言源程序的执行要经过:编辑、编译、链接、运行等步骤。6.简述MATLAB的主要应用领域有哪些?MATLAB软件是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司开发的商业数学软件,主要包括MATLAB和Simulink两大部分。它和Mathematica、Maple并称为三大数学软件。MATLAB软件可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序,主要应用于工程计算、控制设计、信号处理与通信、图像处理、信号检测、金融建模设计与分析等领域,代表了当今国际科学计算软件的先进水平。习题2(参考答案)一、选择题勘误:3.以下定义语句中正确的是()。A.inta=b=0;B.charA=65+1;b='b';C.floata=1,b=&a,c=&b;D.doublea=0.0,b=1.1;4.已知intx=10,y=3,表达式x/y的值是()。15.在C语言中提供的合法的关键字是()。A.switchB.cherC.CaseD.default26.下列不可作为C语言赋值语句的是()。A.x=3,y=5;B.a=b=6;C.i;D.y=int(x);40.下列变量定义中合法的是()。A.float_a=1.1e1;B.doubleb=1+5e2.5;C.longdo=0xfdaL;D.float2_and=1e3;44.以下选项中不属于字符常量的是()。A.'C'B.CC.'\xCC0'D.'\072'46题与17题重了47题A项选择:a==1后面加分号就合法了,所以只有“B”项合法12345678910CADCBBCBAD11121314151617181920CCDADBCADC21222324252627282930B,cDADBDCCAD31323334353637383940CDBCADBCDA41424344454647484950BDBBACBADD二、填空题1.2552.a/(b*c)3.204.1.05.x==0或(x==0)?1:06.x-5||x57.97或字符‘a’8.09.2.510.3.511.312.9,11,9,1013.a+=a;24,a-=2;10,a*=2+3;60,a%=(n%=2);0,a/=a+a;0,a+=a-=a*=a;014.815.2习题3(参考答案)1.编程实现:用字符输入/输出函数输入3个字符,将它们反向输出。参考代码(尽量运用本章所学知识)#includestdio.hmain(){charc1,c2,c3;c1=getchar();c2=getchar();c3=getchar();putchar(c3);putchar(c2);putchar(c1);}2.编程实现:用格式输入/输出函数输入3个字符,将它们反向输出并输出它们的ASCII值。参考代码(尽量运用本章所学知识)#includestdio.hmain(){charc1,c2,c3;scanf(%c%c%c,&c1,&c2,&c3);printf(%c%d,%c%d,%c%d,c3,c3,c2,c2,c1,c1);}3.变量k为float类型,调用函数:scanf(%d,&k);不能使变量k得到正确数值的原因是:scanf(%d,&k);中的格式控制类型与变量k的定义类型不匹配,应将%d改为%f.习题4答案勘误:6.若有以下定义:中B答案的switch((int)x)选择题1.B2.A3.B4.B5.C6.B阅读程序,写结果7.128.139.*0**2*10if(s=90)m=4;elseif(s=80)m=3;elseif(s=70)m=2;elseif(s=60)m=1;elsem=0;11有4个整数a,b,c,d,编写程序按大小输出#includestdio.hmain(){inta,b,c,d,t;scanf(%d%d%d%d,&a,&b,&c,&d);if(ab){t=a;a=b;b=t;}if(ac){t=a;a=c;c=t;}if(ad){t=a;a=d;d=t;}if(bc){t=b;b=c;c=t;}if(bd){t=b;b=d;d=t;}if(cd){t=c;c=d;d=t;}printf(%4d%4d%4d%4d,a,b,c,d);}12据所输入的3条边长值,判断它们能否构成三角形,如能构成,再判断是等腰三角形、直角三角形还是一般三角形。源程序:#includestdio.h#includemath.hmain(){floata,b,c,s,area;scanf(%f%f%f,&a,&b,&c);if((a+bc)&&(a+cb)&&(b+ca)&&(fabs(a-b)c)&&(fabs(a-c)b)&&(fabs(b-c)a)){if(a==b&&b==c)printf(等边三角形);elseif(a==b||b==c||a==c)printf(等腰三角形);elseif((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))printf(直角三角形);elseprintf(一般三角形);}elseprintf(不能组成三角形);}13输入一个整数,如果能被3,4,5同时整除,则输出“YES”,否则输出“NO”。#includestdio.hmain(){intt,flag;scanf(%d,&t);if(t%3==0&&t%4==0&&t%5==0)printf(YES);elseprintf(NO);}14年号,判断是否为闰年。判别闰年的条件是:能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。#includestdio.hmain(){intyear;printf(inputtheyear:);scanf(%d,&year);if(year%4==0&&year%100!=0||year%400==0)printf(%disleapyear\n,year);elseprintf(%dis'tleapyear\n,year);}15下面程序根据以下函数关系,对输入的每个x值,计算出y值。请分析程序填空。#includestdio.hmain(){doublex,y;scanf(%lf,&x);if(x10)y=3*x+10;elseif(x1)y=x*x+2*x;elsey=x*x-3*x+10;printf(%lf\n,y);}xyx103x+101x≤10x(x+2)x≤1x2习题5答案选择题1.A2.A3.D4.C5.D6.A7.D8.D9.B10.C阅读程序,写结果11.1-212.2013.***14.2,4,6,8,10,15.46.00000016.85217.利用公式...7151311公式求π。#includestdio.h#includemath.hmain(){doublepi=0,i=1,j=1,k;do{k=i/j;pi=pi+k;i=-i;j=j+2;}while(fabs(k)1.0e-6);printf(piis%lf,4*pi);}18.求两个数的最大公约数和最小公倍数。最大公约数:用大数整除小数,得到余数1;再用小数整除余数1,得到余数2;再用余数1整除余数2,……直到余数为0。最小公倍数:两数相乘再除以最大公约数。#includestdio.h#includemath.hmain(){intm,n,r,x,y;scanf(%d%d,&m,&n);x=m;y=n;if(mn){r=m;m=n;n=r;}while((r=m%n)!=0){m=n;n=r;}printf(themaxcommondivisoris%d,themincommonmultipleis%d,n,x*y/n);}19.从三个红球、五个白球、六个黑球中任意取出六个球,且其中必须有白球,编程输出所有可能的组合。#includestdio.hmain(){inti,j,k;printf(\nhongbaihei\n);for(i=0;i=3;i++)for(j=1;j=5;j++){k=6-i-j;if(k=0)printf(%3d%3d%3d\n,i,j,k);}}20.如果一个数等于其所有真因子(不包括该数本身)之和,则该数为完数。例如:6的真因子有1、2、3,且6=1+2+3,故6为完数。求[2,1000]内的:(1)最大的完数;(2)完数数目。#includestdio.hmain(){inta,i,m,number=0,max=0;for(a=1;a=1000;a++){m=0;for(i=1;i=a/2;i++)if(a%i==0)m=m+i;if(m==a){number++,max=m;}}printf(numberis%d,maxis%d\n,number,max);}第6章函数与编译预处理一、选择题1.C2.A3.A4.D5.A6.A7.C8.B9.B10.C11.B12.B13.A14.D15.C16.C17.C18.C19.A20.D21.B22.B23.C24.A25.C26.D27.C28.D二、写出下列程序的运行结果1.72.123.94.8,175.566.8,87.369128.109.7510.645411.30012.613.2三、编程题(以下各题均用函数实现)1.超级素数