习题答案习题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软件可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序,主要应用于工程计算、控制设计、信号处理与通信、图像处理、信号检测、金融建模设计与分析等领域,代表了当今国际科学计算软件的先进水平。1.计算的本质是什么?计算的本质就是基于规则的符号串变换。2.三大科学思维是指什么?三大科学思维是:理论思维、实验思维与计算思维3.什么是计算思维?计算思维的基本特征有哪些?计算思维是指运用计算机科学的思想、方法和技术进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。它属于三大科学思维(理论思维、实验思维与计算思维)之一,不仅仅属于计算机科学家,应当是每个人的基本技能,等同3R(Reading、wRiting、aRithmetic)。从计算科学的角度来看,计算思维包括6个方面的特征:抽象性、数字化、构造性、系统化、虚拟化和网络化。4.什么是算法?算法的基本特征有哪些?算法:(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗地讲,就是计算机解题的步骤。算法的基本特征有:有穷性、确定性、可行性、有0个或多个输入、有一个或多个输出。5.算法的复杂度分为哪两种?算法的复杂度分为时间复杂度和空间复杂度两种。6.什么是程序?程序与算法的区别是什么?程序:为了实现特定目标或解决特定问题而用计算机语言偏写的指令序列,它由算法和数据结构组成。算法:(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗地讲,就是计算机解题的步骤。算法与程序的区别:计算机程序是算法的一个实例,同一个算法可以用不同的计算机语言来表达。7.简述程序设计语言发展的过程。程序设计语言经过最初的机器代码到今天接近自然语言的表达,经过了四代的演变。一般认为机器语言是第一代,符号语言即汇编语言为第二代,面向过程的高级语言为第三代,面对象的编程语言为第四代。8.程序执行过程中,有哪些基本步骤?C语言源程序的执行要经过:编辑、编译、链接、运行等步骤。习题2(参考答案)一、选择题12345678910CACCCCCBBD11121314151617181920CCDABBBADB21222324252627282930CDADBCCCAD31323334353637383940CCBCADBCDA41424344454647484950BDBBABBACD5152535455CAADB二、填空题1.2552.a/(b*c)3.204.1.05.x==06.x-5||x57.97或字符‘a’8.09.2.510.3.511.MATLAB12.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.(略)习题4答案一选择题1-20DBDCACBDDAACABCBCBBC二、写出下列程序的运行结果1.z=362.2003.124.48,485.136.02三编程题(参考答案)1.输入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);}2.据所输入的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(不能组成三角形);}3.输入一个整数,如果能被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);}4.输入年号,判断是否为闰年。判别闰年的条件是:能被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);}5.编写程序。根据以下函数关系,对输入的每个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-3x+10习题5答案一、选择题1-10CDABCDABDC11-20DDDBDB(AC)CDC17题有2个答案AC二、写出下列程序的运行结果1.64202.203.54.ACEG5.###6.2,4,6,8,107.46.08.8529.asDhEF10.12,72三、编程题(参考答案)1.利用近似公式...7151311求π的值,直到最后一项的绝对值小于10-6为止。#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);}2.输入一行字符,分别统计出其中英文字母、数字、空格的个数。#includestdio.hmain(){chart;intn1=0,n2=0,n3=0;do{scanf(%c,&t);if(t=='\n')break;else{if((t='A'&&t='Z')||(t='a'&&t='z'))n1++;if(t=='')n2++;if(t='0'&&t='9')n3++;}}while(1);printf(字符个数为:%d,空格个数为:%d,数字个数为:%d,n1,n2,n3);}3.从3个红球、5个白球、6个黑球中任意取出6个球,且其中必须有白球,编程输出所有可能的组合。#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);}}4.如果一个数等于其所有真因子(不包括该数本身)之和,则该数为完数。例如: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=100