




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
习题答案习 题 1(参考答案)1程序与算法的概念及二者的区别是什么?程序:为了实现特定目标或解决特定问题而用计算机语言偏写的指令序列,它由算法和数据结构组成。算法:(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗地讲,就是计算机解题的步骤。算法与程序的区别:计算机程序是算法的一个实例,同一个算法可以用不同的计算机语言来表达。2简述程序设计语言发展的过程程序设计语言经过最初的机器代码到今天接近自然语言的表达,经过了四代的演变。一般认为机器语言是第一代,符号语言即汇编语言为第二代,面向过程的高级语言为第三代,面对象的编程语言为第四代。3简述高级程序设计语言中面向过程与面向对象的概念。“面向过程”是一种以过程为中心的编程思想。首先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步地实现,使用的时候依次调用函数即可。一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。“面向对象”是一种以事物为中心的编程思想。面向对象的方法主要是将事物对象化,对象包括属性与行为。面向过程与面向对象的区别:在面向过程的程序设计中,程序员把精力放在计算机具体执行操作的过程上,编程关注的是如何使用函数去实现既定的功能;而在面向对象的程序设计中,技术人员将注意力集中在对象上,把对象看做程序运行时的基本成分。编程关注的是如何把相关的功能(包括函数和数据)有组织地捆绑到一个对象身上。4C语言程序的特点是什么?(1)C语言非常紧凑、简洁,使用方便、灵活,有32个关键字,有9种流程控制语句。 (2)C语言运算符丰富,共有45个标准运算符,具有很强的表达式功能,同一功能表达式往往可以采用多种形式来实现。(3)数据类型丰富。C语言的数据类型有整型、实型、字符型、数组类型、结构类型、共用类型和指针类型,而且还可以用它们来组成更复杂的数据结构,加之C语言提供了功能强大的控制结构,因而使用C语言能非常方便地进行结构化和模块化程序设计,适合于大型程序的编写、调试。(4)用C语言可直接访问物理地址,能进行二进制位运算等操作,即可直接同机器硬件打交道。它具有“高级语言”和“低级语言”的双重特征,既能用于系统软件程序设计,又能用于通用软件程序设计。(5)C语言生成的目标代码质量高、程序执行速度快。一般只比用汇编语言生成的目标代码的效率低20左右。(6)可移植性好。5源程序执行过程中,有哪些步骤?C语言源程序的执行要经过:编辑、编译、链接、运行等步骤。6简述MATLAB的主要应用领域有哪些?MATLAB软件是矩阵实验室(Matrix Laboratory)的简称,是美国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.x57.97或字符 a8.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;0 14.815.2习 题 3 (参考答案)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, &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-20 DBDCA CBDDA ACABC BCBBC二、写出下列程序的运行结果1. z=362. 20 03. 124. 48,485. 136. 02三 编程题(参考答案)1.输入4个整数a,b,c,d,编写程序,将它们按从大到小顺序输出。#includemain() int a,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条边长值,判断它们能否构成三角形,如能构成,再判断是等腰三角形、直角三角形还是一般三角形?源程序:#include#include math.hmain()float a,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(等边三角形); else if(a=b|b=c|a=c) printf(等腰三角形); else if(a*a+b*b=c*c)|(a*a+c*c=b*b)|(b*b+c*c=a*a) printf(直角三角形); else printf(一般三角形); else printf(不能组成三角形);3.输入一个整数,如果能被3,4,5同时整除,则输出“YES”,否则输出“NO”。#includemain() int t,flag; scanf(%d,&t); if(t%3=0&t%4=0&t%5=0) printf(YES); else printf(NO);4.输入年号,判断是否为闰年。判别闰年的条件是:能被4整除但不能被100整除,或者能被400整除。#includemain() int year; printf(input the year:); scanf(%d,&year); if(year%4=0&year%100!=0|year%400=0) printf( %d is leap yearn,year); else printf( %d ist leap yearn,year);5.编写程序。根据以下函数关系,对输入的每个x值进行计算,并输出相应的y值。xyx103x+101x10x(x+2)x1x2-3x+10#includemain() double x,y; scanf(%lf,&x); 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);习题5答案一、选择题1-10 CDABC DABDC11-20 DDDBD B(AC)CDC 17题有2个答案AC二、写出下列程序的运行结果1. 64202. 2 03. 54. ACEG5. #6. 2,4,6,8,107. 46.08. 8 5 29. asDhEF10. 12,72三、编程题(参考答案)1.利用近似公式求的值,直到最后一项的绝对值小于10-6为止。#include#includemain() double pi=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(pi is %lf,4*pi);2输入一行字符,分别统计出其中英文字母、数字、空格的个数。#includemain() char t;int n1=0,n2=0,n3=0;do scanf(%c,&t); if(t=n)break; else if(t=A&t=a&t=0&t=9) n3+; while(1); printf(字符个数为:%d ,空格个数为:%d ,数字个数为:%d,n1,n2,n3); 3.从3个红球、5个白球、6个黑球中任意取出6个球,且其中必须有白球,编程输出所有可能的组合。#includemain()int i,j,k; printf(n hong bai hein); for(i=0;i=3;i+) for(j=1;j=0) printf( %3d %3d %3dn,i,j,k); 4如果一个数等于其所有真因子(不包括该数本身)之和,则该数为完数。例如:6的真因子有1、2、3,且6=1+2+3,故6为完数。求2,1000内的:(1)最大的完数; (2)完数数目。#includemain() int a,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(number is %d, max is %dn, number, max);习题6答案一、选择题1D 2A 3A 4C 5B 6B 7C8B 9B 10C 11B 12B 13A 14B15C 16C 17C 18D 19A 20B 21C22B 23C 24A 25C 26D 27C 28D二、写出下列程序的运行结果17 2t=7531 31 3 6 48,17 55 668,8 73 6 9 12 810 939,18 1064 54 11-20 1215 132 14.y=923三、编程题(以下各题均用函数实现)1超级素数:一个素数依次从低位去掉一位、两位若所得的数依然是素数,如239就是超级素数。试求1009999之内:(1)超级素数的个数;(2)所有超级素数之和;(3)最大的超级素数。解:(1)spn=30 (2)sps=75548 (3)spm=7393#include#includemain() 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=0) if(maxi) max=i; k+; s=s+i; printf(超级素数的个数为:%5d,所有超级素数之和为:%5d,最大的超级素数为%5dn,k,s,max);int fun(int n) int k,i; k=sqrt(n); for(i=2;i=k+1)return 1; else return 0; 2其平方等于某两个整数平方和的正整数称为弦数,例如因52=32+42,故5是弦数,求(121,130)这间的弦数个数以及最大和最小的弦数。解:n=4 max=130 min=122参考程序1(用函数方法实现):#includemain() 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=n;i+) flag=0; for(j=1;ji;j+) for(k=j;ki;k+) if(i*i=j*j+k*k) flag=1;printf(%4d,%4d,%4dn,j,k,i);/显示出不重复的弦数的组合情况 if(flag=1)t+; return t;int min(int m,int n) int i,j,k,t=0; for(i=m;i=n;i+) for(j=1;ji;j+) for(k=j;k=m;i-) for(j=1;ji;j+) for(k=j;ki;k+) if(i*i=j*j+k*k) printf(最大的弦数为:%4dn,i); return i; 3有一个8层灯塔,每层所点灯数都等于该层上一层的两倍,一共有765盏灯,求塔底的灯数。解:384#include main( ) int i,t; t=fun(8); for(i=1;i8;i+) t=t*2; printf(t=%dn,t);int fun(int m) int i,j,n=1,sum; for(i=1;i=765;i+) sum=i; n=i; for(j=1;jm;j+) n=n*2; sum=sum+n; if(sum=765) break; return i;4编写程序,求的结果。解:4037913参考程序1:#include main( ) int i; long s=0; for(i=1;i=10;i+) s=s+fun(i); printf(s=%ldn,s);long fun(int n) int j; long t=1; for(j=1;j=n;j+) t=t*j; return t;参考程序2(递归算法):#include main( ) int i; long s=0; for(i=1;i=10;i+) s=s+fun(i); printf(s=%ldn,s);long fun(int n) long t; if(n=1)t=1; else t=n*fun(n-1); return t;5已知y =,其中,f(x, n) = 1 - x2 / 2! + x4 / 4! - (-1)nx2n / (2n)!(n0),当x = 5.6,n = 7时,求y的值。解:0.007802#includedouble fun(double x,int n) int i,t=1,m=1; double s=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; return s;main()double x=5.6;int n=7;double p,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(%lfn,s);6编写程序,求三个数的最小公倍数。#includeint fun(int x,int y,int z) int j,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;return j;main()int x1,x2,x3,j;printf(Input x1 x2 x3: );scanf(%d%d%d,&x1,&x2,&x3);printf(x1=%d,x2=%d,x3=%dn,x1,x2,x3);j=fun(x1,x2,x3);printf(The minimal common multiple is: %dn,j);7已知:,编写程序,求S的值。例如,当k为10时,S的值应为:1.533852。#includedouble fun(int k) int n;double s,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+;return s;main()printf(%fn,fun(10);习题7答案一、选择题1C 2A 3C 4B 5D 6C 7D8C 9A 10B 11C 12D 13D 14C15C 16D 17D 18D 19B 20B 21B22C 23A 24A 25A 26D 27D 28D 29C二、写出下列程序的运行结果1 3 6 9 2431,2,3,8,7,6,5,4,9,10, 47 05572三、程序填空1. (1) k (2) -12. (1) i-13. (1) xi+或yi+ (2)i+ 4. (1) a+h-10 (2)si= 05. (1)si!=0 (2)sj+=si6. (1)sj!=0& tk!=0 (2)tk=0四、编程题(每个程序的数据结构均用数组)1编写程序:从键盘上输入一个字符,用折半查找法找出该字符在已排序的字符串a中的位置。若该字符不在a中则输出*。#includemain()char c,a10=abcdefghi;int top,bot,mid;printf(input c:n);scanf(%c,&c);printf(c=%cn,c);for(top=0,bot=10;topamid) top=mid+1;else bot=mid-1;if(topbot) printf(*n);2编写程序:输出某数列的前20项,该数列第1、2项分别为0和1,以后每个奇数编号的项是前两项之和,每个偶数编号的项是前两项之差的绝对值。生成的20个数存在一维数组x中,并按每行4项的形式输出。#include#includemain()int x21,i;x1=0,x2=1;i=3;doxi=xi-2+xi-1;xi+1=fabs(double)(xi-1-xi);i=i+2;while(i=20);for(i=1;i=20;i+)printf(%6d,xi);if(i%4=0) printf(n);3编写程序:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如:若s所指字符串中的内容为:“ABCDEFG12345”,则最后t所指的数组中的内容应是:“135”。#include#includevoid fun(char *s,char t)int i,j=0;for(i=1;istrlen(s);i+=2)if(si%2!=0)tj+=si;tj=0;main()char s100,t100;printf(nPlease enter string s:);scanf(%s,s);fun(s,t);printf(nThe result is:%sn,t);4编写程序:一个自然数平方的末几位与该数相同时,称此数为自同构数。例如,因252=625,故25为自同构数。求出1,700之间的: 最大的自同构数; 自同构数数目。(1)最大的自同构数:625 (2)自同构数数目:7个(1、5、6、25、76、376、625)#includemain()int i,n,ns,flag,count,r,rs;static int a50;count=0;for(i=1;i0&flag)r=n%10;n=n/10;rs=ns%10;ns=ns/10;if(rs!=r) flag=0;if(flag)acount=i;count+;printf(%5d,i);printf(ncount=%d,max=%dn,count,acount-1);5已知:f(0) = f(1) = 1f(2) = 0f(n) = f(n - 1) - 2*f(n - 2) + f(n - 3) (n2)编写程序:求f(0)f(50)中的最大值。f(0)到f(50)中的最大值:598325#includemain()int n;double f181,max=0;f0=f1=1;f2=0;for(n=3;n=50;n+)fn=fn-1-2*fn-2+fn-3;if(maxfn) max=fn;printf(n max=%.0lf,max);6编写程序:自然数11000按顺时针围成一圈,首先取出1,然后顺时针方向按步长L = 50取数(已取出的数不再参加计数),直至所有的数均取完为止,最后一个取出的数是多少?最后一个取出的数是:630#includemain()int a1001,i,s=0,n=1;for(i=1;i=1000;i+) ai=i;a1=0;for(i=1;i=1000;i+)if(ai!=0)s+=1;if(s=50)n+;if(n=1000)printf(n a%d=%d,i,ai);break;ai=0;s=0;if(i=1000) i=0;7编写程序:输出下列格式的杨辉三角形前5行。11 11 2 11 3 3 11 4 6 4 1#includemain()int a1010,i,j,t,k;printf(input lines 10:n);scanf(%d,&t);for(i=0;it;i+) for(j=0;jt-i;j+) printf( );for(j=0;j=i;j+) if(i=j)|(j=0) aij=1;else aij=ai-1j-1+ai-1j;printf(%6d,aij);printf(n);8若两素数之差为2,则称该两素数为双胞胎数。编写程序,求出2,300之内:(1)有多少对双胞胎数;(2)最大的一对双胞胎数。 (1)最大的一对双胞胎数:281、283 (2)有19对双胞胎#includeint sushu(int n)int flag=1,i;for(i=2;i=n/2;i+)if(n%i=0)flag=0;break;return(flag);main()int i,b,max1=0,max2=0,count=0;for(i=2;imax1)max1=i;max2=b;count+;printf(count=%dnmax1=%4d,max2=%4dn,count,max1,max2);9编写程序:将两个递增的数组a10 = 2, 4, 6, 8, 10, 12, 14, 16, 18, 20和b10 = 1, 3, 5, 7, 9, 11, 13, 15, 17, 19合并成一个数组c20,并保持递增的顺序。#include#define N 10#define NN 20main()int aN=2,4,6,8,10,12,14,16,18,20,bN=1,3,5,7,9,11,13,15,17,19,cNN;int i,j,t,k;i=0;j=0;t=0;doif(aibj)ct=ai;i+;t+;else ct=bj;j+;t+;while(iN&jN);if(iN)for(k=i;kN;k+)ct=ak;t+;if(jN)for(k=j;kN;k+)ct=bk;t+;for(j=0;jNN;j+)printf(%4d,cj);10请编写程序:建立一个NN的矩阵(N10)。矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,依次类推。例如,当N = 5,生成的矩阵为:#include#define N 7void fun(int (*a)N)int i,j,k,m;if(N%2=0)m=N/2;else m=N/2+1;for(i=0;im;i+)for(j=i;jN-i;j+)aij=aN-i-1j=i+1;for(k=i+1;kN-i;k+)aki=akN-i-1=i+1;main()int xNN=0,i,j;fun(x);printf(nThe result is:n);for(i=0;iN;i+)for(j=0;j*q 或 *p=*q q+3. q=&sk4. s1m1-1+k sub5. return min min=minnum(a,N)6. avg=avg/n a7. sp k 0 printf(“%sn”,strk) 或puts(strk) 8. 48或0 ctod(b)9. n0或n0 namei 四、编程题1(1)定义一个函数separate(int *data,int n),该函数将n的各个位上的数分离保存在data所指向的数组中。(2)定义一个函数judge(int *data,int len),判断data所指向的数组是否为回文。(3)在main函数中调用上述函数,完成程序的功能。参考代码:#include stdio.h#include stdlib.h#define N 10int separate(int *data,int n) int i,k=0,temp; while(n0) datak=n%10; n=n/10; k+;for(i=0;i=k/2;i+)temp=datai;datai=datak-1-i;datak-1-i=temp;return k;int judge(int *data,int len)int i,j;i=0;j=len-1; while(ij)if(datai=dataj)i+;j-;elsereturn 0;return 1;void main() int dataN,n,len; printf(请输入要转换的数n:n); scanf(%d,&n); len=separate(data,n); if(judge(data,len)=1) printf(%d是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东护士大专自考试题及答案
- 押题宝典教师招聘之《幼儿教师招聘》模考模拟试题含答案详解【典型题】
- 礼仪的考试题及答案
- 乐理听力考试题及答案
- 2025年教师招聘之《幼儿教师招聘》模拟试题及答案详解【全优】
- 空调考试题及答案三
- 客服上岗考试题及答案
- 聚合操作考试题及答案
- 警车科目考试题及答案
- 京东物流考试题及答案
- 2025重庆市专业应急救援总队应急救援人员招聘28人考试参考题库及答案解析
- 2025年国际贸易业务员招聘考试试题集及答案
- 2025年建筑涂料采购专项合同
- 2025-2026学年人教版(2024)小学美术二年级上册(全册)教学设计(附目录P144)
- 高考化学一轮复习:硫及其化合物(好题冲关)原卷版
- 2025年城市环境监测评估标准评估方案
- 2025年水面渔业养殖承包合同范本:水产养殖合作协议
- 水厂反恐知识培训内容课件
- 供应链金融操作指南
- 部编版语文六年级上册3《古诗词三首》(同步练习)(含答案)
- 2025-2026学年湘教版(2024)初中地理七年级上册教学计划及进度表
评论
0/150
提交评论