1、 C 语言 习题答案 习 题 1(参考答案) 1程序与算法的概念及二者的区别是什么? 程序: 为了实现特定目标或解决特定问题而用计算机语言偏写的指令序列,它由算法和数据结构组成。 算法: ( Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗地讲,就是计算机解题的步骤。 算法与程序 的 区别: 计算机程序是算法的一个实例,同一个算法可以用 不同的 计算机语言来表达。 2简述程序设计语言发展的过程 程序设计 语言经过最初的机器代码到今天接近自然语言的表达,经过了四代的演变。一般认为机器语言是第一代 ,符号语言即汇编语言为第二代,面向过程的高级语言为第三代,面对象的编程
2、语言为第四代。 3简述高级程序设计语言中面向过程与面向对象的概念。 “面向过程” 是一种以过程为中心的编程思想。首先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步地实现,使用的时候依次调用函数即可。一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。 “面向对象” 是一种以事物为中心的编程思想。面向对象的方法主要是将事物对象化,对象包括属性与行为。 面向过程 与 面向 对象的区别 : 在面向过程的程序 设计 中,程序员把精 力放在计算机具体执行操作的过程上 , 编程关注的是如何使用函数去实现既定的功能 ; 而 在 面向对象的程序设计中,技术人员将注意力集中在对象
3、上,把对象看 做 程序运行时的基本成分。 编程关注 的是 如何把相关的功能 ( 包括函数和数据 ) 有组织地捆绑到一个对象身上。 4 C 语言程序的特点是什么? ( 1) C 语言非常紧凑、简洁,使用方便、灵活,有 32 个关键字,有 9 种流程控制语句。 ( 2) C 语言运算符丰富,共有 45 个标准运算符,具有很强的表达式功能,同一功能表达式往往可以采用多种形式来实现。 ( 3)数据类型丰富。 C 语言的数据类型有整型、 实型、字符型、数组类型、结构类型、共用类型和指针类型,而且还可以用它们来组成更复杂的数据结构,加之 C 语言提供了功能强大的控制结构,因而使用 C 语言能非常方便地进行
4、结构化和模块化程序设计,适合于大型程序的编写、调试。 ( 4)用 C 语言可直接访问物理地址,能进行二进制位运算等操作,即可直接同机器硬件打交道。它具有“高级语言”和“低级语言”的双重特征,既能用于系统软件程序设计,又能用于通用软件程序设计。 ( 5) C 语言生成的目标代码质量高、程序执行速度快。一般只比用汇编语言生成的目标代码的效率低 20左右。 ( 6)可移 植性好。 5源程序执行过程中,有哪些步骤? C 语言源程序的执行要经过:编辑、编译、链接、运行等步骤 。 6简述 MATLAB 的主要应用领域有哪些? MATLAB 软件 是矩阵实验室( Matrix Laboratory)的简称,
5、是美国 MathWorks 公司 开发的商业 数学软件 ,主要包括 MATLAB 和 Simulink 两大部分。 它 和 Mathematica、 Maple 并称为三大数学软件。 MATLAB 软件 可以进行 矩阵 运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序,主要应用于工程计 算、控制设计、信号处理与通 信 、图像处理 、 信号检测 、金融建模设计与分析等领域 , 代表了当今国际科学计算软件的先进水平。 1计算的本质是什么? 计算的本质就是基于规则的符号串变换。 2三大科学思维是指什么? 三大科学思维 是:理论思维、实验 思维与计算思维 3什么是计算思维?计算思维
6、的基本特征有哪些? 计算思维是指运用计算机科学的思想、方法和技术进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。它属于三大科学思维(理论思维、实验思维与计算思维)之一,不仅仅属于计算机科学家,应当是每个人的基本技能,等同 3R( Reading、 wRiting、 aRithmetic) 。 从计算科学的角度来看,计算思维包括 6 个方面的特征:抽象性、数字化、构造性、系统化、虚拟化和网络化。 4什么是算法?算法的基本特征有哪些? 算法: ( Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗地讲,就是计算机解题的步骤。 算法的基本特
7、征有: 有穷性、确定性、可行性、有 0 个或多个输入、有一个或多个输出。 5算法的复杂度分为哪两种? 算法的复杂度分为时间复杂度和空间复杂度两种。 6什么是程序?程序与算法的区别是什么? 程序: 为了实现特定目标或解决特定问题而用计算机语言偏写的指令序列,它由算法和数据结构组成。 算法: ( Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗地讲,就是计算机解题 的步骤。 算法与程序 的 区别: 计算机程序是算法的一个实例,同一个算法可以用 不同的 计算机语言来表达。 7简述程序设计语言发展的过程。 程序设计 语言经过最初的机器代码到今天接近自然语言的表达,经过了四
8、代的演变。一般认为机器语言是第一代,符号语言即汇编语言为第二代,面向过程的高级语言为第三代,面对象的编程语言为第四代。 8程序执行过程中,有哪些基本步骤? C 语言源程序的执行要经过:编辑、编译、链接、运行等步骤 。 习 题 2( 参考 答案) 一 、 选择题 1 2 3 4 5 6 7 8 9 10 C A C C C C C B B D 11 12 13 14 15 16 17 18 19 20 C C D A B B B A D B 21 22 23 24 25 26 27 28 29 30 C D A D B C C C A D 31 32 33 34 35 36 37 38 39 4
9、0 C C B C A D B C D A 41 42 43 44 45 46 47 48 49 50 B D B B A B B A C D 51 52 53 54 55 C A A D B 二、填空题 1. 255 2. a/(b*c) 3. 20 4. 1.0 5. x=0 6. x5 7. 97 或字符 a 8. 0 9. 2.5 10. 3.5 11. MATLAB 12. 9, 11, 9, 10 13. a+=a;24, a-=2;10, a*=2+3;60, a%=(n%=2);0, a/=a+a;0, a+=a-=a*=a;0 14. 8 15. 2 习 题 3 (参考答案
10、) 1编程实现:用字符输入 /输出函数输 入 3 个字符,将它们反向输出。 参考代码(尽量运用本章所学知识) #include main( ) char c1,c2,c3; c1=getchar(); c2=getchar(); c3=getchar(); putchar(c3); putchar(c2); putchar(c1); 2编程实现:用格式输入 /输出函数输入 3 个字符,将它们反向输出并输出它们的 ASCII 值。 参考代码(尽量运用本章所学知识) #include main( ) char c1,c2,c3; scanf (“%c%c%c“, printf(“%c %d, %c
11、 %d, %c %d “, c3,c3,c2,c2,c1,c1) ; 3变量 k 为 float 类型,调用函数: scanf(“ d“, 不能使变量 k 得到正确数值的原因是 : scanf(“ d“, 中的格式 控制 类型 与变量 k 的定义类型 不匹配, 应将 d 改为 f. 4. (略 ) 习题 4 答案 一 选择题 1-20 DBDCA CBDDA ACABC BCBBC 二、写出下列程序的运行结果 1. z=36 2. 20 0 3. 12 4. 48,48 5. 13 6. 02 三 编程题(参考答案) 1.输入 4 个整数 a,b,c,d,编写程序 ,将它们 按 从 大 到 小
12、 顺序 输出 。 #include main() int a,b,c,d,t; scanf(“%d%d%d%d“, if(a #include “math.h“ main() float a,b,c,s,area; scanf(“%f%f%f“, if(a+bc) scanf(“%d“, if(t%3=0 else printf(“NO“); 4.输入 年号,判断是否为闰年。 判别 闰年的条件是:能被 4 整除但不能被 100 整除 ,或者 能被 400 整除。 #include main() int year; printf(“input the year:“); scanf(“%d“, i
13、f(year%4=0 else printf(“ %d ist leap yearn“,year); 5.编写程序。 根据以下函数关系,对输入的每个 x 值 进行 计算 ,并输出相应的 y 值。 #include main() double x,y; scanf(“%lf“, if(x10) y=3*x+10; else if(x1) y=x*x+2*x; else y=x*x-3*x+10; printf(“ %lf n“,y); x y x10 3x+10 1 #include main() double pi=0,i=1,j=1,k; do k=i/j; pi=pi+k; i=-i; j
14、=j+2; while (fabs(k)1.0e-6); printf(“pi is %lf“,4*pi); 2输入一行字符,分别统计出其中英文字母、数字、空格的个数。 #include main() char t; int n1=0,n2=0,n3=0; do scanf(“%c“, if(t=n)break; else if(t=A printf(“n hong bai hein“); for(i=0;i=0) printf(“ %3d %3d %3dn“,i,j,k); 4 如果一个数等于其所有真因子(不包括该数本身)之和 ,则该数为完数。例如 : 6 的真因子有 1、 2、 3,且 6
15、=1+2+3,故 6 为完数。求 2, 1000内的: ( 1)最大的完数; ( 2)完数数目。 #include main() int a,i,m,number=0,max=0; for(a=1;a #include main() int i,s=0,k=0,m,max=100; for(i=9999;i=100;i-) m=i; while(m1) if(fun(m)m=m/10; else break; if(m=k+1)return 1; else return 0; 2其 平方等于某两个整数平方和的正整数称为弦数,例如因 52=32+42,故 5 是弦数,求( 121, 130)这间
16、的弦数个数以及最大和最小的弦数。 解: n=4 max=130 min=122 参考程序 1(用函数方法实现 ): #include main() int k,maxnum,minnum; k=count(121,130); maxnum=max(121,130); minnum=min(121,130); printf(“ 弦 数 的 个 数 为 : %d, 最 大 的 弦 数 为 : %d, 最 小 的 弦 数为: %dn“,k,maxnum,minnum); int count(int m,int n) int i,j,k,t=0,flag; for(i=m;i=m;i-) for(j=1;ji;j+) for(k=j;ki;k+) if(i*i=j*j+k*k)