您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 2013年新版C语言习题答案1-7章
习题答案习题1(参考答案)1.计算的本质是什么?计算的本质就是基于规则的符号串变换。2.三大科学思维是指什么?理论思维、实验思维、计算思维3.什么是计算思维?计算思维的基本特征有哪些?计算思维是指运用计算机科学的思想、方法和技术进行问题求解、系统设计,以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。从计算科学的角度分析,计算思维包括6个方面的特征:抽象性、数字化、构造性、系统化、虚拟化和网络化。4.什么是算法?算法的基本特征有哪些?算法(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗地讲,就是计算机解题的步骤。一个算法应该具有以下五个重要特征。(1)有穷性:一个算法必须保证执行有限步之后结束。(2)确定性:算法的每一步骤必须有确定的定义。(3)输入:一个算法有0个或多个输入,以刻画运算对象的初始情况。0个输入是指算法本身给定了初始条件。(4)输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。(5)可行性:算法上描述的操作在计算机上都是可以实现的。5.算法的复杂度分为哪两种?算法的复杂性用复杂度来说明,分为时间复杂度和空间复杂度。时间复杂度:执行该算法所需要的计算工作量,一般用所需基本运算的执行次数来度量。空间复杂度:执行该算法所需的内存空间,一般用算法程序本身占的空间+输入的初始数据占的空间+算法执行过程中所需的额外空间的总和来表示。6.什么是程序?程序与算法的区别是什么程序是为了实现特定目标或解决特定问题而用计算机语言编写的指令序列,它由算法和数据结构组成。算法与程序的区别:计算机程序是算法的一个实例,同一个算法可以用不同的计算机语言来表达。7.简述程序设计语言发展的过程。计算机程序设计语言从最初的机器代码到今天接近自然语言的表达,经过了四代演变。一般认为机器语言是第一代,符号语言即汇编语言为第二代,面向过程的高级语言为第三代,面向对象的高级语言为第四代。8.程序执行过程中,有哪些基本步骤?习题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值。xyx103x+101x≤10x(x+2)#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);}习题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为止。x≤1x2-3x+10#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=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.C8.B9.B10.C11.B12.B13.A14.B15.C16.C17.C18.D19.A20.B21.C22.B23.C24.B25.C26.D27.C28.D二、写出下列程序的运行结果1.72.t=75313.1364.8,175.566.8,87.369128.109.39,1810.645411.-2012.1513.214.y=923三、编程题(以下各题均用函数实现)1.超级素数:一个素数依次从低位去掉一位、两位……若所得的数依然是素数,如239就是超级素数。试求100~9999之内:(1)超级素数的个数;(2)所有超级素数之和;(3)最大的超级素数。解:(1)spn=30(2)sps=75548(3)spm=7393#includestdio.h#includemath.hmain(){inti,s=0,k=0,m,max=100;for(i=9999;i=100;i--){m=i;while(m1)if(fun(m))m=m/10;elsebreak;if(m=0){if(maxi)max=i;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(用函数方法实现):#includestdio.hmain(){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;ji;j++)for(k=j;ki;k++)if(i*i==j*j+k*k){flag=1;printf(%4d,%4d,%4d\n,j,k,i);//显示出不重复的弦数的组合情况}if(flag
本文标题:2013年新版C语言习题答案1-7章
链接地址:https://www.777doc.com/doc-2984711 .html