您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作计划 > C语言教材习题答案(陈刚主编)
1教材习题答案习题1一.填空题1.C程序是由(函数)构成的,一个C程序中至少包含(main函数)。因此,(函数)是C程序的基本单位。2.C程序注释是由(/*)和(*/)所界定的文字信息组成的。3.函数体一般包括(声明部分)和(执行部分)。二.判断题1.一个C程序的执行总是从该程序的main函数开始,在main函数最后结束。(正确)2.main函数必须写在一个C程序的最前面。(错误)3.一个C程序可以包含若干的函数。(正确)4.C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。但是可以增加程序的可读性。(正确)5.C程序的注释只能是一行。(错误)6.C程序的注释不能是中文文字信息。(错误)8.可以使用TurboC来编译和连接一个C程序。(正确)9.可以使用TurboC来运行一个C程序。(正确)10.可以使用TurboC来实时调试(即动态调试)一个C程序。(正确)三、在c++6.0中输入如下的程序,编译、连接通过后显示结果(1)#include“stdio.h”voidmain(){printf(“*”)printf(“***”);printf(“*****”);printf(“*******”);}答案:****************(2)已知底和高,计算三角形的面积。#include“stdio.h”voidmain(){intbottom,high,area;/*bottom表示底,high表示高,area表示面积*/bottom=4;2high=6;area=bottom*high/2;printf(“theareais%d\n”,area);}答案:theareais12四、算法设计:请试着分别用自然语言或、程序流程图和NS图描述如下算法。1.设计一个程序在屏幕上显示如下的文字HELLOWELCOMEYOU2.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其个位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。3.对输入的某学生成绩,如果学习成绩=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。4.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。5.一只猴子摘了N个桃子第一天吃了一半又多吃了一个,第二天又吃了余下的一半又多吃了一个,到第十天的时候发现还有一个,问共有多少个桃子。答案:1.#include“stdio.h”main(){printf(“HELLOWELCOMEYOU”);}2.水仙花数产生在100到999之间,利用穷举法,对此范围之内的所有数一个个进行测试,关键是要对每一个三位数分离出它的三个数字。具体的算法是:n%10,得到个位,(n/10)%10,得到百位数字,n/100,得到个位数字。再利用水仙花数的含义来判断该数是否满足条件。#include“stdio.h”main(){intn,,i,j,k;for(n=100;n=999;n++){i=n%10;j=(n/10)%10;k=n/100;if(i*i*i+j*j*j+k*k*k==n)printf(“%d\n”,n);}3}3.此题用if…elseif来实现。对于每次输入的成绩,判断它属于哪个等级。#includestdio.hmain(){intgrade;printf(inputgrade=);scanf(%d,&grade);if(grade=90)printf(A\n);elseif(grade=60&&grade=89)printf(B\n);elseprintf(C\n);}4.先考虑一个整数m,如何判断它是否为完数。从数学知识可知:一个数m除该数本身外的所有因子都在1~m/2之间。算法中要取得因子之和,只要在1~m/2之间找到所有的整数m的数,将其累加起来即可。如果累加起来与m本身相等,则表示m是一个完数,可以将m输出。#includestdio.hmain(){intm,i,s;for(m=2;m=1000;m++){s=0;for(i=1;i=m/2;i++)if(m%i==0)s+=i;if(m==s)printf(%d\t,m);}printf(\n);}5.找出前后两天的数量关系,然后用递推法求解。设第十天的桃子数目为t,昨天的数为y,则t=y/2-1,得到y=2t+2,这样由今日数目可以求出昨日数目,从最后一天开始,倒退到第一天,倒退的循环次数比天数少1。所以,若已知第n天只留下一个,问第一天有多少个时,则倒退循环n-1次得到结果。天数:10987654321桃子数目:14102246941903827661534#includestdio.hmain()4{inti,t,y,n;t=1;printf(\ninputnumbern:\n);scanf(%d,&n);for(i=1;i=n-1;i++){y=2*t+2;t=y;}printf(thetotalis:%d\n,y);}习题2一、选择题C语言基本类型包括(D)A)整型、实型、逻辑型B)整型、实型、字符型、逻辑型C)整型、字符型、逻辑型D)整型、实型、字符型下列四组选项中,均不是C语言关键字的选项是A。A)defineIFtypeB)getccharprintfC)includecasescanfD)whilegopow语言的字符型数据在内存中的存储形式是(D)A)原码B)补码C)反码D)ASCII码C语言的整型数据在内存中的存储形式是(B)A)原码B)补码C)反码D)ASCII码已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为A。A)DB)68C)不确定的值D)C5以下叙述正确的是C。A)在C程序中,每行只能写一条语句B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数C)在C程序中,%是只能用于整数运算的运算符D)在C程序中,无论是整数还是实数,都能被准确无误地表示以下叙述不正确的是D。A)在C程序中,逗号运算符的优先级最低B)在C程序中,MAX和max是两个不同的变量C)若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,二b中的值不变D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值下面正确的字符常量是A。A)“c”B)‘\\’’C)‘’D)‘K’下列四组选项中,均是合法转义字符的选项是A。A)‘\”’‘\\’‘\n’B)‘\’‘\017’‘\”’C)‘\018’‘\f’‘xab’D)‘\\0’‘\101’‘xlf’下列四组选项中,均是不合法的用户标识符的选项是B。A)WP_0doB)b-agotointC)floatla0_AD)-123abcTEMP若x、i、j、k都是int型变量,则计算下面表达式后,x的值为C。x=(i=4,j=16,k=32)A)4B)16C)32D)52设有说明:charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为D。A)floatB)charC)intD)double设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为C。A)0~255B)0~32767C)0~65535D)0~2147483647若运行时给变量x输入12,则以下程序的运行结果是。(有错误,应为0)main(){intx,y;scanf(“%d”,&x);6y=x12?x+10:x-12;printf(“%d\n”,y);}A)4B)3C)2D)1若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是C。A)A%2==1B)!(A%2==0)C)!(A%2)D)A%2设有:inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=ab)&&(n=cd)后n的值为B。A)1B)2C)3D)4以下程序的运行结果是B。main(){inta,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%d”,a,b);}A)6,1B)2,1C)6,0D)2,0已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是B。if(xy)z=x;x=y;y=z;A)x=10,y=20,z=30B)x=20,y=30,z=30C)x=20,y=30,z=10D)x=20,y=30,z=20以下程序的运行结果是C。main(){intm=5;if(m++5)printf(“%d\n”,m);else;printf(“%d\n”,m--);}A)4B)5C)6D)7判断char型变量ch是否为大写字母的正确表达式是C。A)‘A’=ch=‘Z’B)(ch=‘A’)&(ch=‘Z’)C)(ch=‘A’)&&(ch=‘Z’)D)(‘A’=ch)AND(‘Z’=ch)逻辑运算符两侧运算对象的数据类型D。A)只能是0和1B)只能是0或非0正数C)只能是整型或字符型数据D)可以是任何类型的数据7sizeof(float)是B。A)一个双精度型表达式B)一个整型表达式C)一种函数表达式D)一个不合法的表达式设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为CA)4B)16C)32D)52设有如下的变量定义:inti=8,k,a,b;unsignedlongw=5;doublex=1,42,y=5.2;则以下符合C语言语法的表达式是AA)a+=a-=(b=4)*(a=3)B)x%(-3);C)a=a*3=2D)y=float(i)假定有以下变量定义:intk=7,x=12;则能使值为3的表达式是DA)x%=(k%=5)B)x%=(k-k%5)C)x%=k-k%5D)(x%=k)-(k%=5)设x和y均为int型变量,则以下语句:x+=y,y=x-y;x-=y;的功能是DA)把x和y按从大到小排列B)把x和y按从小到大排列C)无确定结果D)交换x和y中的值以下程序的输出结果是Dmain(){inta=12,b=12;printf(%d,%d\n,--a,++b);}A)1010B)1212C)1110D)1113在C语言提供的合法的关键字是DA)swicthB)cherC)CaseD)default若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是CA)1B)2C)2.0D)2.5C语言提供的合法的数据类型关键字是BA)DoubleB)shortC)integerD)Char在C语言中,合法的长整型常数是AA)0L8B)4962710C)0.054838743D)2.1869e10二、填空题scanf函数的格式化字符串中,格式说明与输出项的个数必须相同。如果格式说明的个数小于输出项的个数,则多余的输出项____忽略___。如果格式说明的个数多于输出项的个数,则多余多余的格式将输出______。以下程序的运行结果是__52.00_____。#includestdio.hvoidmain(){inti=5,j=9;floatx=2.3,y=45.;printf(“%8.2f\n”,i%(int)(x+y)*j/2/3+y);}若有定义:charc=‘\010’;则变量c中包含的字符个数为___1个___。若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为___10___,n的值为____6__。若a是int型变量,则计算下面表达式A=25/3%3后a的值为__2____。若x和a均是int型变量,则计算表达式x=(a=4,6*2)后的x值为_12_____,计算表达式x=a=4,6*2后的x值为__4____。若a是int型变量,则表达式(a=4*5,a*2),a+6的值
本文标题:C语言教材习题答案(陈刚主编)
链接地址:https://www.777doc.com/doc-2907969 .html