C语言版习题答案完整版 1.docx
- 文档编号:29555200
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:49
- 大小:48.78KB
C语言版习题答案完整版 1.docx
《C语言版习题答案完整版 1.docx》由会员分享,可在线阅读,更多相关《C语言版习题答案完整版 1.docx(49页珍藏版)》请在冰豆网上搜索。
C语言版习题答案完整版1
C语言习题答案
习题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(参考答案)
一、选择题
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
40
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.
x<-5||x>5
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(参考答案)
1.编程实现:
用字符输入/输出函数输入3个字符,将它们反向输出。
参考代码(尽量运用本章所学知识)
#include
main( )
{charc1,c2,c3;
c1=getchar();c2=getchar();c3=getchar();
putchar(c3);putchar(c2);putchar(c1);
}
2.编程实现:
用格式输入/输出函数输入3个字符,将它们反向输出并输出它们的ASCII值。
参考代码(尽量运用本章所学知识)
#include
main( )
{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=36
2.200
3.12
4.48,48
5.13
6.02
三编程题(参考答案)
1.输入4个整数a,b,c,d,编写程序,将它们按从大到小顺序输出。
#include
main()
{inta,b,c,d,t;
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a
if(a if(a if(b if(b if(c printf("%4d%4d%4d%4d",a,b,c,d); } 2.据所输入的3条边长值,判断它们能否构成三角形,如能构成,再判断是等腰三角形、直角三角形还是一般三角形? 源程序: #include #include"math.h" main() {floata,b,c,s,area; scanf("%f%f%f",&a,&b,&c); if((a+b>c)&&(a+c>b)&&(b+c>a)&&(fabs(a-b) { 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”。 #include main() {intt,flag; scanf("%d",&t); if(t%3==0&&t%4==0&&t%5==0) printf("YES"); else printf("NO"); } 4.输入年号,判断是否为闰年。 判别闰年的条件是: 能被4整除但不能被100整除,或者能被400整除。 #include main() {intyear; printf("inputtheyear: "); scanf("%d",&year); if(year%4==0&&year%100! =0||year%400==0) printf("%disleapyear\n",year); else printf("%dis'tleapyear\n",year); } 5.编写程序。 根据以下函数关系,对输入的每个x值进行计算,并输出相应的y值。 x y x>10 3x+10 1 x(x+2) x≤1 x2-3x+10 #include main() {doublex,y; scanf("%lf",&x); if(x>10)y=3*x+10; elseif(x>1)y=x*x+2*x; elsey=x*x-3*x+10; printf("%lf\n",y); } 习题5答案 一、选择题 1-10CDABCDABDC 11-20DDDBDBACDC(注: 17题n--改为n++后答案为A) 二、写出下列程序的运行结果 1.64202.203.54.ACEG 5.###6.2,4,6,8,107.46.0 8.8529.asDhEF10.12,72 三、编程题(参考答案) 1.利用近似公式 求π的值,直到最后一项的绝对值小于10-6为止。 #include #include main() {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.输入一行字符,分别统计出其中英文字母、数字、空格的个数。 #include main() {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个球,且其中必须有白球,编程输出所有可能的组合。 #include main() { 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)完数数目。 #include main() {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.D2.A3.A4.C5.B6.B7.C 8.B9.B10.C11.B12.B13.A14.B 15.C16.C17.C18.D19.A20.B21.C 22.B23.C24.A25.C26.D27.C28.D 二、写出下列程序的运行结果 1.72.t=75313.1364.8,175.56 6.8,87.369128.109.39,18 10.645411.-2012.1513.214.y=923 三、编程题(以下各题均用函数实现) 1.超级素数: 一个素数依次从低位去掉一位、两位……若所得的数依然是素数,如239就是超级素数。 试求100~9999之内: (1)超级素数的个数; (2)所有超级素数之和; (3)最大的超级素数。 解: (1)spn=30 (2)sps=75548(3)spm=7393 #include #include main() {inti,s=0,k=0,m,max=100; for(i=9999;i>=100;i--) {m=i; while(m>1) if(fun(m))m=m/10; elsebreak; if(m<=0) { if(max k++; s=s+i; } } printf("超级素数的个数为: %5d,所有超级素数之和为: %5d,最大的超级素数为%5d\n",k,s,max); } intfun(intn) { intk,i; k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0)break; if(i>=k+1)return1; elsereturn0; } 2.其平方等于某两个整数平方和的正整数称为弦数,例如因52=32+42,故5是弦数,求(121,130)这间的弦数个数以及最大和最小的弦数。 解: n=4max=130min=122 参考程序1(用函数方法实现): #include main() { intk,maxnum,minnum; k=count(121,130); maxnum=max(121,130); minnum=min(121,130); printf("弦数的个数为: %d,最大的弦数为: %d,最小的弦数为: %d\n",k,maxnum,minnum); } intcount(intm,intn) {inti,j,k,t=0,flag; for(i=m;i<=n;i++) {flag=0; for(j=1;j for(k=j;k if(i*i==j*j+k*k) { flag=1; printf("%4d,%4d,%4d\n",j,k,i);//显示出不重复的弦数的组合情况 } if(flag==1)t++; } returnt; } intmin(intm,intn) {inti,j,k,t=0; for(i=m;i<=n;i++) for(j=1;j for(k=j;k if(i*i==j*j+k*k) { printf("最小的弦数为: %4d\n",i); returni; } } intmax(intm,intn) {inti,j,k,t=0; for(i=n;i>=m;i--) for(j=1;j for(k=j;k if(i*i==j*j+k*k) { printf("最大的弦数为: %4d\n",i); returni; } } 3.有一个8层灯塔,每层所点灯数都等于该层上一层的两倍,一共有765盏灯,求塔底的灯数。 解: 384 #include main() { inti,t; t=fun(8); for(i=1;i<8;i++) t=t*2; printf("t=%d\n",t); } intfun(intm) { inti,j,n=1,sum; for(i=1;i<=765;i++) {sum=i; n=i; for(j=1;j {n=n*2; sum=sum+n; } if(sum==765)break; } returni; } 4.编写程序,求 的结果。 解: 4037913 参考程序1: #include main() { inti; longs=0; for(i=1;i<=10;i++) s=s+fun(i); printf("s=%ld\n",s); } longfun(intn) { intj; longt=1; for(j=1;j<=n;j++) t=t*j; returnt; } 参考程序2(递归算法): #include main() { inti; longs=0; for(i=1;i<=10;i++) s=s+fun(i); printf("s=%ld\n",s); } longfun(intn) { longt; if(n==1)t=1; elset=n*fun(n-1); returnt; } 5.已知y= ,其中,f(x,n)=1-x2/2! +x4/4! -…(-1)nx2n/(2n)! (n≥0),当x=5.6,n=7时,求y的值。 解: 0.007802 #include doublefun(doublex,intn) { inti,t=1,m=1; doubles=1.0,w=1.0; for(i=1;i<=2*n;i++) { w=w*x; t=t*i; if(i%2==0) {m=-m;s=s+m*w/t;} } returns; } main() { doublex=5.6; intn=7; doublep,q,t,s; p=fun(x,n); q=fun(x+2.3,n); t=fun(x-3.2,n+3); s=p/(q+t); printf("%lf\n",s); } 6.编写程序,求三个数的最小公倍数。 #include intfun(intx,inty,intz) {intj,t,m,n; j=1; t=j%x; m=j%y; n=j%z; while(t! =0||m! =0||n! =0) {j=j+1; t=j%x; m=j%y; n=j%z; } returnj; } main() { intx1,x2,x3,j; printf("Inputx1x2x3: "); scanf("%d%d%d",&x1,&x2,&x3); printf("x1=%d,x2=%d,x3=%d\n",x1,x2,x3); j=fun(x1,x2,x3); printf("Theminimalcommonmultipleis: %d\n",j); } 7.已知: ,编写程序,求S的值。 例如,当k为10时,S的值应为: 1.533852。 #include doublefun(intk) { intn; doubles,w,p,q; n=1; s=1.0; while(n<=k) {w=2.0*n; p=w-1.0; q=w+1.0; s=s*w*w/p/q; n++; } returns; } main() { printf("%f\n",fun(10)); } 习题7答案 一、选择题 1.C2.A3.C4.B5.D6.C7.D 8.C9.A10.B11.C12.D13.D14.C 15.C16.D17.D18.D19.B20.B21.B 22.C23.A24.A25.A26.D27.D28.D29.C 二、写出下列程序的运行结果 1.3692.4 3.1,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言版习题答案完整版 语言版 习题 答案 完整版