C语言答案删减版.docx
- 文档编号:27083084
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:85
- 大小:39.73KB
C语言答案删减版.docx
《C语言答案删减版.docx》由会员分享,可在线阅读,更多相关《C语言答案删减版.docx(85页珍藏版)》请在冰豆网上搜索。
C语言答案删减版
C语言答案()
第一章C语言程序设计基础
习题参考答案
1-1冯·诺依曼体系结构的基本原理:
五大构成部分:
输入、输出、CPU、控制器、存储器;程序存储、自动执行、逻辑判断
功能;二进制的信息表示。
1-6编辑、编译、链接、执行。
1-7必须有一个主函数,它是程序执行的起点;一个C语言程序由函数构成;每一条可
执行语句都必须由分号结束;函数的代码段必须由花括号对括住。
一个函数中的语句组由声
明区和可执行语句区两部分构成。
1-8三个一缩;每遇到一个结构时均缩格,每结束一个结构时回退;缩格格式必须对齐。
1-9试给出以下问题的程序设计过程描述:
1)求两个数中之最大者。
#include
intmain(void)
{
floatfA,fB;
clrscr();
printf("Pleaseinputtwovalues(fA,fB):
:
");/*输入要比较的两个数fA,fB*/
scanf("%f,%f",&fA,&fB);/*格式化输入fA,fB*/
if(fA>=fB)printf("themaxis%f",fA);
if(fA return0; }/*main()函数结束*/ 2)求三个数中之最大者。 #include intmain(void) { floatfA,fB,fC,fMax; printf("Pleaseinputthreevalues(fA,fB,fC): : "); /*fA,fB,fC是输入的3个数,fMax存放最大值*/ scanf("%f,%f,%f",&fA,&fB,&fC); fMax=fA;/*假定fA最大*/ if(fMax if(fMax printf("Themaxis%f\n",fMax);/*输出最大值*/ return0; }/*main()函数结束*/ 3)求1+2+3+…+100,即。 #include intmain(void) { inti,nSum;/*声明变量i,循环的总和*/ for(i=1,nSum=0;i<=100;i++) { nSum+=i; }/*做累加的FOR循环*/ printf("Sumis%d\n",nSum);/*输出累加值*/ return0; } 4)求0-1000之间所有能被2和3整除的数之和。 intmain(void) { inti,nSum; clrscr(); for(i=1;i<=1000/6;i++)/*1000/6表示1~1000中能被2和3整除的个数*/ { nSum+=i*6; }/*循环累加的过程*/ printf("theSumis%d",nSum);/*输出累加结果*/ return0; } 1-12试编写一个求a+|b|的程序。 #include intmain(void) { floata,b; printf("Pleaseinputtworealvalues(a,b): : "); scanf("%f,%f",&a,&b); printf("\n%f+|%f|=%f\n",a,b,b>0a+b: a-b); /*利用三元条件运算,详见P52*/ return0; } 1-13试编写一个在五个整数中找出最大数的程序。 #include intmain(void) { floatval_1,val_2,val_3,val_4,val_5,fMax;/*声明要比较的5个变量*/ printf("Pleaseinput3values(val_1,val_2,val_3,val_4,val_5): : "); scanf("%f,%f,%f,%f,%f",&val_1,&val_2,&val_3,&val_4,&val_5); fMax=val_1;/*假设最大值为val_1*/ if(fMax if(fMax if(fMax if(fMax printf("themaxof%f,%f,%f,%f,%fis%f",\ val_1,val_2,val_3,val_4,val_5,fMax); return0; } 1-14编写程序,调用库函数求下列函数的值: (1)cos2.78 #include #include intmain(void) { doubleval; printf("Pleaseinputthevalue: : "); scanf("%f",&val); printf("theresultis%lf",cos(val)); /*调用数学函数中的doublecos(doublex)函数*/ return0; } (2)log90 #include #include intmain(void) { doubleval; printf("Pleaseinputtheval: : "); scanf("%lf",&val); printf("theresultis%lf\n",log(val)); return0; } (3) #include #include intmain(void) { doubleval; printf("Pleaseinputthevalue(val): "); scanf("%lf",&val); printf("theresultis%lf\n",sqrt(val));/*调用doublesqrt(doublex)函数*/ return0; } (4) #include #include intmain(void) { doubleval; printf("Pleaseinputthevalue(val): : "); scanf("%lf",&val); printf("theresultis%lf",exp(val));/*调用doubleexp(doublex)函数*/ return0; } 1-16见名知义;变量名和函数名小写,符号常量一般大写;多个单词构成标识符名时, 一般单词的第一个字母大写,或者用下划线连接;在不影响阅读的情况下,可以使用简单的 符号变量名,如a,b,c,d,x,y,z等;注意一些容易混淆的字母的使用;匈牙利前缀数据类型表 示法的运用及i,j,k,l,m,n的整型约定规则。 第二章C语言中的数据类型及其基本操作 习题参考答案 2-1为什么C的每个数据都必须属于某种特定的数据类型? 解: 变量存储空间中的值必须属于某种特定的数据类型才有意义,同时,数据的类型不 同,其取值范围、所占存储空间大小、能够参加的运算类型等才有意义。 例如: 一个char 型数据占用一个字节空间,一个float型数据占用4个字节空间。 另外,作为C语言中的数 据类型,大部分都可以用signed,unsigned,long,short进行修饰,以表示数据的取值范 围和数据所占存储空间的字节数变化。 2-2浮点数和定点数的区别在哪里 解: 在于小数点位置是否固定不变。 2-3计算机中的数是精确的表示吗? 解: 不完全是。 对整型数据,在不超出表示值范围时一般是精确表示的。 对浮点数,则 一般是不能精确表示。 原因在于计算机内表示浮点数的存储空间大小是固定的,因此,它所 ……在计算 机内部只能近似表示。 2-4为测试数据类型所占存储空间的大小,C提供了专门的运算符sizeof(),它用于返回 或计算给定数据变量或数据类型所占存储空间的大小。 请编写程序能够测试C的基本数据类 型所占存储空间的大小。 解: 这里以int型为例。 其它数据类型所占存储空间大小的测试方法相似。 #include voidmain() { intnSize=sizeof(int); printf("%d",nSize); getch(); } 2-9为什么要强调“先声明、后定义、再使用”的原则? 请阐述其理由。 解: 因为变量使用前必须要有存储空间分配给它用来保存其值,对变量存储空间的分 配就是通过变量的声明完成的。 变量在被引用之前,其中的值应当是确定的某一个值,但变 量的声明并不能保证变量存储空间中有一个合适的初始状态值,而是一个随机值。 当以错误 的初始值开始变量的引用时,会导致程序的执行逻辑错误。 为此,一般需要在变量被引用之 前赋予其一个合理的初始值。 因此,在变量的使用上,一般应当遵循先声明、后定义、在引 用的基本原则。 2-12解: (1)ABCDE FGH (2)12+20=32 (3)ch1(S)+ch2(x)=203 (4)nX=2nY=5nZ=12 nX=1830nY=28nZ=38 nX=3nY=6nZ=2 2-13解: (1)1; (2)0; (3)0; (4)0; (5)2,2,5; (6)10; (7)3; (8)12,8,30,20,0,0; (9)15,5,324; 2-14解: m=0n=0k=-1 m=1n=1k=-1 m=0n=0k=0 m=0n=0k=1 m=1n=0k=1 2-15解: (1)m>n&&k<=m||n; (2)m=2k; (3)m%n! =0; 2-17请问C语言中的逻辑真和假的表示方法是什么? 解: .C语言借用数值非零和零表示逻辑真假,零表示假,任何非零值均可被作为逻辑 真。 2-18解: .i=9,j=28 第三章C语言的程序结构、语句分类和数据的输入输出 习题参考答案 3-1解: 因为输入、输出是计算机程序获取源数据和输出结果数据的基本手段。 没有输入操 作,程序无法将数据对象告知计算机,没有输出时,计算机程序的运算对于计算任务来讲是 没有意义的。 C语言常见的输入输出函数如下: scanf(....); fscanf(...); fread(...); printf(..); fprintf(..); fgets(..); gets(..); ... 3-2解: 格式说明符、普通字符、输出格式控制字符、附加格式说明符。 域宽: 用於存放输出数据的宽度。 格式化输入输出函数的主要异同参见教材相关章节。 3-3解: 对小数部分截断输出(四舍五入的原则)对整数部分没有影响;与截断 位的精度相同;有单独的符号位;符号位不占据域宽。 3-4解: float: 小数点后面6位小数位;double: 小数点后面17位小数位。 原因: float占4个byte,其中能够用来表示小数位精度的bit位数只有23bit。 而double占8个byte,其中能够用来表示小数位精度的bit位数为52bit。 它们 能够表示的最大有效精度范围分别为6位和17位小数位。 多余的精度部分将被 截断。 同时,要注意,浮点数表示中,小数点不占域宽宽度。 3-5解: C语言主要由模块、函数等构成。 其语句的分类有5种(参见教材)。 3-6请简述C语言程序的语句类型分类并对其使用方法作简要描述。 解: 顺序语句如: intmain(void) { inta=8; printf(”%d”,a); return0; } 循环语句: while() for(;;) 选择语句: 如switch();if()等语句; 3-7请说明使用格式化输入语句完成输入任务时和输入缓冲区之间的关系。 解: scanf是从标准输入设备缓冲区数据流中自动根据内部格式控制字符串要求完成数 据类型匹配,并把数据从左到右复制到参数列表变量地址空间的函数,其过程分为以下几个 步骤: (1)函数执行时由标准输入设备(一般是键盘)输入相关数据,临时存放在标准输入设 备缓冲区中; (2)scanf函数从数据流中复制数据从左到右一次匹配于变量列表中的各变量; (3)scanf向调用函数返回成功接收数据的个数。 3-8解: 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则 可用空格,TAB或回车作间隔。 C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入 “12A”时,A即为非法数据)时即认为该数据结束。 3-9解: -123.457*-123.456780*-1.23457e+02*-123.456780 $$$#100#100 3-10解: chise: : dec=101oct=145hex=65ASCII=e iis101: : dec=101oct=145hex=65ASCII=e chisx: : dec=120oct=170hex=78ASCII=x iis-4: : dec=-4oct=177774hex=fffcASCII= 3-11解: 1234537890123456789 i=12j=6789 x=345.000000y=901.000000 ch= 3-12解: printf(“m=%dn=%dk=%d\n”,m,n,k); printf(“x=%fy=%fz=%f\n”,x,y,z); printf(“x+y=%.2fy+z=%.2fz+x=%.2f\n”,(int)x-y,y+z,-z-(int)x); printf(“u=%-9un=%9ld”,u,n); printf(“ch1=%cor%d\n”,ch1,ch1); printf(“ch2=%cor%d\n”,ch2,ch2); 3-13解: 4,3,3,2 从右往左开始算 3-14请分析和给出以下程序段的输出结果。 #include intmain(void)/*主函数*/ { inti=59; floatfX; doubledY,dZ; printf("i=%d\n",i); printf("i=%5d\n",-i); printf("i=%5o\n",i); printf("i=%5x\n,i"); printf("i=%ld\n",i); fX=dY=333.1234 printf("%f\n",fX); printf("%f\n",dZ); printf("%e\n",dZ); printf("%.4f\n",fX); printf("%.8f\n",dY); printf("%.3e\n",dZ); printf("%.18f\n”,dY); printf("%10.3e\n",dY); printf("%2.5f\n",dY); printf("%2e\n",dZ); rerturn0; }/*main()函数结束*/ (分析略)。 3-15编写一个程序显示如下的方框,椭圆,箭头,或者菱形图 **************** ********* ************ *************** ******* ***************** * intmain(void) { printf("************\n"); printf("**\n"); printf("**\n"); printf("**\n"); printf("**\n"); printf("**\n"); printf("************\n"); return0; }/*其余的照例或者用for循环来做*/ 3-17 intmain() { intnum; intsquare[11]; intcube[11]; for(num=0;num<=10;num++) { square[num]=num*num; cube[num]=num*num*num; } printf("numbersquarecube\n"); printf("--------------------------------------\n"); for(num=0;num<=10;num++) { printf("%-10d%-10d%-10d\n",num,square[num],cube[num]); } return0; } 第四章程序设计的算法基础 习题参考答案 4-1试分析给出人们日常生活中对问题求解的一般过程和步骤。 解: 首先: (必须)知道一些已知条件或约束条件; 第二,确定或寻找针对该问题的求解方法; 第三,根据选择的求解方法确定具体的问题求解步骤; 第四,进行问题求解的实际演算和推理活动; 最后,得到并整理求解结论。 4-2解: (1)1)睁开双眼;2)穿好衣服、裤子及鞋子等;3)下床; 4)洗漱(包括洗脸、刷牙等);5)吃早餐(包括饭后洗碗等工作); 6)上课学习;7)吃午餐;8)午休;9)上课学习;10)吃晚餐; 11)课外活动(包括看电视、写作业等等);12)洗漱;13)上床; 14)脱衣服、裤子及鞋子等;15)睡觉。 (2)1)整理好课本;2)从座位上站起来;3)走出教室;4)走进食堂; 5)排队;6)判断是否已经轮排到自己,若否,则转5),否则转7); 7)刷卡;8)点菜、买饭。 (3)1)寻找座位;2)坐下;3)用筷子夹起饭菜;4)将饭菜送到嘴里; 5)细嚼慢咽; 6)判断是否已经吃饱或者饭菜已经吃完,若否,则转7),否则转8); 7)重复3)~5)过程;8)整理餐具,从座位上站起;9)端起餐具离开座位; 10)寻找水龙头,洗碗;11)带着餐具回寝室;12)到达寝室,放下餐具; 13)做个人卫生;14)午睡; 4-4怎么理解Wirth提出的程序=算法+数据结构的深刻含义? 解: 程序是在数据的某种特定表示方法和结构基础上对抽象算法的具体描述,它揭示了 面向过程程序设计的本质。 将程序设计问题分为算法和数据结构,充分显示了算法在程序设 计过程中的重要性。 算法注重问题求解的过程和步骤描述,主要考虑问题求解的方法;程序是对算法具体实 现的描述,它需要考虑与程序语言及编程环境有关的实现细节,如语言环境、操作系统环境 等。 4-5解: 参见课本第79页。 4-6解: 算法的实质是对问题求解方法和过程的描述,它由解决问题的基本操作及控制操作过程次序的控制结构组成。 其中基本操作包括算术、关系、逻辑等基本运算和输入输出以及函数、位操作、文件操作等;控制结构主要是顺序、选择和循环三种基本的控制结构。 算法的三组成要素: 1)操作; 2)控制结构; 3)数据结构; 算法的基本性质: 1)(有穷)动作序列; 2)动作序列只有一个起点(即初始动作); 3)每一动作只有一个后继动作; 4)动作序列的终止表示问题得解或无解(不保证一定能得解)。 4-7解: 算法描述方法有: 1)传统流程图和标准流程图符号体系的表示方法; 2)传统流程图符号表示的结构化表示方法; 3)无流程线流程图符号的结构化表示方法; 4)问题分析图的结构化表示方法; 5)伪代码的结构化程序表示方法。 传统流程图符号是一些专门设计的图形符号,用于表示程序或算法中的各类操作,用线 条表示这些操作之间的执行顺序。 标准流程图符号是针对传统流程图符号体系的改进。 在算 法描述中使用他们来描述算法过程,能很好地表达程序设计的结构与梗概,方便同人的交流。 传统流程图运用起来灵活、自由、形象、直观,流程线指向的任意转向使得绘制过程比 较随意、自由,易被接受和运用。 但是流程线的不加限制带来了算法流程绘制的随意性和不 规则性容易导致绘制出来的流程图零乱,阅读不变,修改和维护也比较困难。 无流程线流程图显得更紧凑和清晰,其结构化绘制具有强迫性,绘制结构化流程图的过 程也更加容易和方便,克服了传统流程图的缺陷,同时保留了流程图的直观和简单特点。 但 是该表示法的图形嵌套层次不能太多,尤其是对多层次条件选择的嵌套清形,并且对图形的 修改和维护,也不如传统流程图方便。 问题分析图PAD采用PAD图形符号描述算法,比较方便,当问题过程复杂时PAD描述 方法优势更为明显,同时它克服了传统流程图的随意和非结构化特征,也避免了N-S图随嵌 套层次的增加内层矩形框急剧
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 答案 删减