下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言答案()第一章C 语言程序设计基础习题参考答案1-1 冯·诺依曼体系结构的基本原理:五大构成部分:输入、输出、 CPU、控制器、存储器;程序存储、自动执行、逻辑判断功能;二进制的信息表示。1-6 编辑、编译、链接、执行。1-7 必须有一个主函数, 它是程序执行的起点; 一个 C 语言程序由函数构成; 每一条可执行语句都必须由分号结束; 函数的代码段必须由花括号对括住。 一个函数中的语句组由声明区和可执行语句区两部分构成。1-8 三个一缩; 每遇到一个结构时均缩格,每结束一个结构时回退;缩格格式必须对齐。1-9 试给出以下问题的程序设计过程描述:1) 求两个数中之最大者。#in
2、clude<stdio.h>int main(void)float fA,fB;clrscr();printf("Please input two values(fA,fB):"); /* 输入要比较的两个数 fA,fB*/ scanf("%f,%f",&fA,&fB); /* 格式化输入 fA,fB*/if(fA>=fB) printf("the max is %f",fA);if(fA<fB) printf("the max is %f",fB);return 0; /*
3、main() 函数结束 */2) 求三个数中之最大者。#include<stdio.h>int main(void)float fA,fB,fC,fMax;printf("Please input three values(fA,fB,fC):");/*fA,fB,fC是输入的3 个数, fMax 存放最大值 */scanf("%f,%f,%f",&fA,&fB,&fC);fMax=fA;/* 假定 fA 最大 */if(fMax<fB) fMax=fB;if(fMax<fC) fMax=fC;printf
4、("The max is %fn",fMax);/*输出最大值 */return 0; /*main() 函数结束 */3) 求 1+2+3+100,即。#include<stdio.h>int main(void)int i,nSum;/* 声明变量i,循环的总和 */for(i=1,nSum=0;i<=100;i+)nSum+=i;/* 做累加的FOR 循环 */printf("Sum is %dn",nSum);/*输出累加值 */return 0;4) 求 0-1000 之间所有能被2 和 3 整除的数之和。int main(v
5、oid)int i,nSum;clrscr();for(i=1;i<=1000/6;i+)/*1000/6 表示 11000 中能被 2 和 3 整除的个数 */ nSum+=i*6;/* 循环累加的过程*/printf("the Sum is %d",nSum);/*输出累加结果 */return 0;1-12 试编写一个求a+|b|的程序。#include<stdio.h>int main(void)float a,b;printf("Please input two real values(a,b):");scanf("
6、%f,%f",&a,&b);printf("n%f+|%f|=%fn",a,b,b>0?a+b:a-b);/* 利用三元条件运算,详见P52*/return 0;1-13 试编写一个在五个整数中找出最大数的程序。#include<stdio.h>int main(void)float val_1,val_2,val_3,val_4,val_5,fMax;/*声明要比较的5 个变量 */printf("Please input 3 values(val_1,val_2,val_3,val_4,val_5):");
7、scanf("%f,%f,%f,%f,%f",&val_1,&val_2,&val_3,&val_4,&val_5);fMax=val_1;/* 假设最大值为val_1*/if(fMax<val_2) fMax=val_2;if(fMax<val_3) fMax=val_3;if(fMax<val_4) fMax=val_4;if(fMax<val_5) fMax=val_5;/*选出最大值的过程*/printf("the max of %f,%f,%f,%f,%f is %f",val_1
8、,val_2,val_3,val_4,val_5,fMax);return 0;1-14 编写程序,调用库函数求下列函数的值:(1) cos 2.78#include<stdio.h>#include<math.h>/* 包含数学函数文件,详见P391*/int main(void)double val;printf("Please input the value:");scanf("%f",&val);printf("the result is %lf",cos(val);/* 调用数学函数中的dou
9、ble cos(double x) 函数 */return 0;(2) log 90 #include<stdio.h> #include<math.h> int main(void)double val;printf("Please input the val:");scanf("%lf",&val);printf("the result is %lfn",log(val);return 0;(3)#include<stdio.h>#include<math.h>int mai
10、n(void)double val;printf("Please input the value(val):");scanf("%lf",&val);printf("the result is %lfn",sqrt(val);/* 调用 double sqrt(double x) 函数 */ return 0;(4)#include<stdio.h>#include<math.h>int main(void)double val;printf("Please input the value(v
11、al):");scanf("%lf",&val);printf("the result is %lf",exp(val);/* 调用 double exp(double x) 函数 */ return 0;1-16 见名知义;变量名和函数名小写,符号常量一般大写;多个单词构成标识符名时,一般单词的第一个字母大写, 或者用下划线连接; 在不影响阅读的情况下, 可以使用简单的符号变量名,如 a,b,c,d,x,y,z 等;注意一些容易混淆的字母的使用;匈牙利前缀数据类型表示法的运用及i,j,k,l,m,n 的整型约定规则。第二章C 语言中的
12、数据类型及其基本操作习题参考答案2-1为什么C 的每个数据都必须属于某种特定的数据类型?解:变量存储空间中的值必须属于某种特定的数据类型才有意义, 同时, 数据的类型不同,其取值范围、所占存储空间大小、能够参加的运算类型等才有意义。例如:一个 char 型数据占用一个字节空间,一个 float 型数据占用 4 个字节空间。另外,作为 C 语言中的数据类型,大部分都可以用 signed, unsigned, long, short 进行修饰,以表示数据的取值范围和数据所占存储空间的字节数变化。2-2 浮点数和定点数的区别在哪里?解:在于小数点位置是否固定不变。2-3 计算机中的数是精确的表示吗?
13、解:不完全是。对整型数据,在不超出表示值范围时一般是精确表示的。对浮点数,则一般是不能精确表示。原因在于计算机内表示浮点数的存储空间大小是固定的,因此,它所能表示出来的精度是有限的。例如,无限循环小数3.33333333333333333333333 在计算机内部只能近似表示。2-4 为测试数据类型所占存储空间的大小,C 提供了专门的运算符sizeof() ,它用于返回或计算给定数据变量或数据类型所占存储空间的大小。请编写程序能够测试C 的基本数据类型所占存储空间的大小。解:这里以int 型为例。其它数据类型所占存储空间大小的测试方法相似。#include <stdio.h>voi
14、d main()int nSize=sizeof(int);printf("%d",nSize);getch();2-9 为什么要强调“先声明、后定义、再使用”的原则?请阐述其理由。解: 因为变量使用前必须要有存储空间分配给它用来保存其值,对变量存储空间的分配就是通过变量的声明完成的。变量在被引用之前,其中的值应当是确定的某一个值,但变量的声明并不能保证变量存储空间中有一个合适的初始状态值, 而是一个随机值。 当以错误的初始值开始变量的引用时, 会导致程序的执行逻辑错误。 为此,一般需要在变量被引用之前赋予其一个合理的初始值。因此,在变量的使用上,一般应当遵循先声明、后定义
15、、在引用的基本原则。2-12 解:(1)ABCDEFGH(2)12+20=32(3)ch1(S)+ch2(x)=203(4)nX=2nY=5nZ=12nX=1830nY=28nZ=38nX=3nY=6nZ=22-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=-1m=1n=1k=-1m=0n=0k=0m=0n=0k=1m=1n=0k=12-15解:(1)m>n&&k<=m|n;(2)m=2k;(3)m%n
16、!=0;2-17 请问 C 语言中的逻辑真和假的表示方法是什么?解: .C 语言借用数值非零和零表示逻辑真假,零表示假,任何非零值均可被作为逻辑真。2-18 解: .i=9,j=28第三章C 语言的程序结构、语句分类和数据的输入输出习题参考答案3-1 解:因为输入、输出是计算机程序获取源数据和输出结果数据的基本手段。没有输入操作,程序无法将数据对象告知计算机, 没有输出时, 计算机程序的运算对于计算任务来讲是没有意义的。 C 语言常见的输入输出函数如下:scanf(.);fscanf(.);fread(.);printf(.);fprintf(.);fgets(.);gets(.);.3-2
17、解:格式说明符、普通字符、输出格式控制字符、附加格式说明符。域宽:用於存放输出数据的宽度。格式化输入输出函数的主要异同参见教材相关章节。3-3 解:对小数部分截断输出(四舍五入的原则)对整数部分没有影响;与截断位的精度相同;有单独的符号位;符号位不占据域宽。3-4 解: float :小数点后面6 位小数位; double:小数点后面17 位小数位。原因: float 占 4 个 byte,其中能够用来表示小数位精度的bit 位数只有23bit 。而 double 占 8 个 byte,其中能够用来表示小数位精度的bit 位数为 52bit 。它们能够表示的最大有效精度范围分别为6 位和 17
18、 位小数位。多余的精度部分将被截断。同时,要注意,浮点数表示中,小数点不占域宽宽度。3-5 解: C 语言主要由模块、函数等构成。其语句的分类有5 种 (参见教材 )。3-6 请简述 C 语言程序的语句类型分类并对其使用方法作简要描述。解:顺序语句如:int main(void)int a=8;printf( ” %d”,a);return 0;循环语句:while()for (; )选择语句:如 switch();if() 等语句;3-7 请说明使用格式化输入语句完成输入任务时和输入缓冲区之间的关系。解: scanf 是从标准输入设备缓冲区数据流中自动根据内部格式控制字符串要求完成数据类型匹
19、配, 并把数据从左到右复制到参数列表变量地址空间的函数, 其过程分为以下几个步骤:(1) 函数执行时由标准输入设备(一般是键盘)输入相关数据,临时存放在标准输入设备缓冲区中;(2) scanf 函数从数据流中复制数据从左到右一次匹配于变量列表中的各变量;(3) scanf 向调用函数返回成功接收数据的个数。3-8 解:在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格, TAB 或回车作间隔。C 编译在碰到空格,TAB ,回车或非法数据(如对“ %d”输入“12A ”时, A 即为非法数据 )时即认为该数据结束。3-9 解:100#123.456001 123.4
20、561.23e+02 000123.456001.23e+02 -123.457*-123.456780*-1.23457e+02*-123.456780$#100#1003-10 解:ch is e:dec=101 oct=145 hex=65 ASCII=ei is 101:dec=101 oct=145 hex=65 ASCII=ech is x:dec=120 oct=170 hex=78 ASCII=xi is -4:dec=-4 oct=177774 hex=fffc ASCII=3-11 解:12345 378901 2345 6789i=12j=6789x=345.000000
21、y=901.000000ch=3-12解:printf( “ m=%dn=%dk=%dn ” ,m,n,k);printf( “ x=%fy=%fz=%fn ”,x,y,z);printf( “ x+y=%.2fy+z=%.2fz+x=%.2fnprintf( “ u=%-9un=%9ld ” ,u,n);” ,(int)x-y,y+z,-z-(int)x);printf( “ ch1=%c or %dn ” ,ch1,ch1);printf( “ ch2=%c or %dn ” ,ch2,ch2);3-13 解:4,3,3,2从右往左开始算3-14 请分析和给出以下程序段的输出结果。#inc
22、lude <stdio.h>int main(void)/* 主函数 */int i=59;float fX;double dY,dZ;printf("i =%dn",i);printf("i =%5dn",-i);printf("i =%5on",i);printf("i =%5xn,i");printf("i =%ldn",i);fX=dY=333.12345678901234567890;dZ=-555.1234567890123456789e-9;printf("%
23、fn",fX);printf("%fn",dZ);printf("%en",dZ);printf("%.4fn",fX);printf("%.8fn",dY);printf("%.3en",dZ);printf("%.18fn ” ,dY);printf("%10.3en",dY);printf("%2.5fn",dY);printf("%2en",dZ);rerturn 0; /*main() 函数结束 */(分析
24、略 )。3-15 编写一个程序显示如下的方框,椭圆,箭头,或者菱形图* * * * * * *int main(void)printf("*n");printf("*n");printf("*n");printf("*printf("*printf("*n");*n");*n");printf("*n");return 0; /* 其余的照例或者用for循环来做*/3-17int main()int num;int square11;int cube11;
25、for(num=0; num<=10; num+)squarenum = num * num;cubenum = num * num * num;printf("numbersquarecuben");printf("-n");for(num=0; num<=10; num+)printf("%-10d%-10d%-10dn", num, squarenum, cubenum);return 0;第四章程序设计的算法基础习题参考答案4-1 试分析给出人们日常生活中对问题求解的一般过程和步骤。解:首先:(必须)知道一些已知条
26、件或约束条件;第二,确定或寻找针对该问题的求解方法;第三,根据选择的求解方法确定具体的问题求解步骤;第四,进行问题求解的实际演算和推理活动;最后,得到并整理求解结论。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)判断是否已经轮排到自己,若
27、否,则转5),否则转7);7)刷卡; 8)点菜、买饭。( 3) 1)寻找座位; 2)坐下; 3)用筷子夹起饭菜; 4)将饭菜送到嘴里;5)细嚼慢咽;4-46)判断是否已经吃饱或者饭菜已经吃完,若否,则转7),否则转 8);7)重复 3)5)过程; 8)整理餐具,从座位上站起;9)端起餐具离开座位;10)寻找水龙头,洗碗;11)带着餐具回寝室;12)到达寝室,放下餐具;13)做个人卫生;14)午睡;怎么理解Wirth 提出的程序 =算法 +数据结构的深刻含义?解:程序是在数据的某种特定表示方法和结构基础上对抽象算法的具体描述,它揭示了面向过程程序设计的本质。将程序设计问题分为算法和数据结构,充分
28、显示了算法在程序设计过程中的重要性。算法注重问题求解的过程和步骤描述,主要考虑问题求解的方法;程序是对算法具体实现的描述, 它需要考虑与程序语言及编程环境有关的实现细节,如语言环境、 操作系统环境等。4-5 解:参见课本第79 页。4-6 解:算法的实质是对问题求解方法和过程的描述,它由解决问题的基本操作及控制操作过程次序的控制结构组成。其中基本操作包括算术、关系、逻辑等基本运算和输入输出以及函数、位操作、文件操作等;控制结构主要是顺序、选择和循环三种基本的控制结构。算法的三组成要素:1)操作;2)控制结构;3)数据结构;算法的基本性质:1)(有穷)动作序列;2)动作序列只有一个起点(即初始动
29、作);3)每一动作只有一个后继动作;4)动作序列的终止表示问题得解或无解(不保证一定能得解)。4-7 解:算法描述方法有:1) 传统流程图和标准流程图符号体系的表示方法;2) 传统流程图符号表示的结构化表示方法;3) 无流程线流程图符号的结构化表示方法;4) 问题分析图的结构化表示方法;5) 伪代码的结构化程序表示方法。传统流程图符号是一些专门设计的图形符号,用于表示程序或算法中的各类操作,用线条表示这些操作之间的执行顺序。标准流程图符号是针对传统流程图符号体系的改进。在算法描述中使用他们来描述算法过程,能很好地表达程序设计的结构与梗概,方便同人的交流。传统流程图运用起来灵活、自由、形象、直观
30、,流程线指向的任意转向使得绘制过程比较随意、 自由,易被接受和运用。但是流程线的不加限制带来了算法流程绘制的随意性和不规则性容易导致绘制出来的流程图零乱,阅读不变,修改和维护也比较困难。无流程线流程图显得更紧凑和清晰,其结构化绘制具有强迫性,绘制结构化流程图的过程也更加容易和方便,克服了传统流程图的缺陷,同时保留了流程图的直观和简单特点。但是该表示法的图形嵌套层次不能太多,尤其是对多层次条件选择的嵌套清形,并且对图形的修改和维护,也不如传统流程图方便。问题分析图PAD 采用 PAD 图形符号描述算法,比较方便,当问题过程复杂时PAD 描述方法优势更为明显,同时它克服了传统流程图的随意和非结构化
31、特征,也避免了N-S 图随嵌套层次的增加内层矩形框急剧缩小所带来的表述上的不方便。伪代码的结构化程序表示方法, 比基于图形符号的方法自由度大, 同时它可以使用自然语言和程序语言进行比较自由的算法描述, 可以不严格遵守程序语言的严格语法约束, 另外,由于直接使用了程序语言的要素, 在算法的程序语言实现时更加的方便。 但它要遵守结构化描述这一基本的要求。4-8 C 语言提供了哪些用于结构化程序设计的基本技术?解: C 语言提供了3 种用于结构化程序设计的基本技术,分别是:1)顺序;2)选择;3)循环。4-11 对例 4-8 的方法 2 和方法 3,试分析并给出其流程图描述。N-S 流程图(方法2_
32、逐一比较):程序代码:#include<stdio.h>int main(void)float fa,fb,fc,max;/声明 fa,fb,fc,max 四个变量 .clrscr();/清屏 .printf("please input three values(fa,fb,fc):");scanf("%f,%f,%f",&fa,&fb,&fc);/ 依次输入fa,fb,fc 的值 .if(fa<fb)/ 如果 fa<fbif(fb<fc)/并且,如果fb<fc ,则 max=fc;max=fc
33、;else/否则, max=fb;max=fb;else/ 否则if(fa<fc)/并且,如果fa<fc ,则 max=fc;max=fc;else/否则, max=fa;max=fa;printf("the max is %fn",max);/ 输出 fa,fb,fc 三个数的最大值max.return 0;运行测试结果:N-S 流程图(方法3_两两比较):程序代码:#include<stdio.h>int main(void)float fa,fb,fc,temp,max;/ 声明 fa,fb,fc,temp,max 五个变量 .clrscr()
34、;/清屏 .printf("please input three values(fa,fb,fc):");scanf("%f,%f,%f",&fa,&fb,&fc);/依次输入fa,fb,fc 的值 .if(fa<fb)/ 如果 fa<fb ,将 fb 的值赋给中间变量temp,即temp=fb;temp=fb;else/ 否则,将fa 的值赋给temp,即temp=fa;temp=fa;if(temp>fc)/如果中间变量temp>fc ,则将temp 的值赋给max,即max=temp;max=temp
35、;else/ 否则,将fc 的值赋给max=fc;printf("the max is %fn",max);return 0;max,即 max=fc;/ 输出 fa,fb,fc 三个数的最大值max.运行测试结果:4-12 对例 4-9 所示的流程图(图4-8),请分析其算法执行步骤过程。解: 1)给出参数n 的值;2)如果,转 3);否则转4);3)如果,输出 n 值非法的提示信息,然后转7);否则转6);4)初始化fac=1 ; i=1 ;然后转5);5)计算 n!的值:即当;求出 n!的值 fac,然后转7);6) fac=1 ,然后转7);7)输出 n!的值( n
36、 非法时写非法 )4-15 解:阶梯共有119 步。问题分析:设阶梯数为steps,则依据题意有:.由此,知道steps整除 7,且为正整数,那么其初始值为7,即初始化steps=7;N-S 流程图:steps 的最小取值至少为7,因而我们假定传统流程图:程序代码:#include<stdio.h>int main(void)int steps=7;/初始化clrscr();while(1)/ 清屏/ 当为真时1;/ 对 i! 的倒数累加求和if(steps%2=1&&steps%3=2&&steps%5=4&&steps%6=5&a
37、mp;&steps%7=0)break;/ 如果满足上述公式,则退出while 循环 .else steps+;/ 否则, steps 加 1,继续 while 循环 .printf("there are %d steps!n",steps);/ 输出求解结果:阶梯数目steps.return 0;运行测试结果:4-16 解:算法描述: 1)输入一个门限值,及精确值e,并初始化:i=1;sum=0;2)计算 i!;3)计算 1/i!;4)对 1/i! 累计求和 ;5)判断求解的误差(e-sum)是否小于门限值;6)若是,则转7);否则,做i+ ,然后转2);7)输出
38、满足条件时i 的取值 .传统流程图:伪代码:#include<stdio.h>int main(void)float e;float eps;float fac=1;float sum=0;int i=1;/声明及初始化clrscr();/ 清屏printf("please input the eps and e(eps,e):");scanf("%f,%f",&eps,&e);/ 输入门限值=eps,及精确值e;while(e-sum)>=eps)/当精确值与近似值间误差大于门限值时fac*=i;/求 i!;print
39、f("the %d fac is %fn",i,fac);/ 输出 i!的值 fac;sum+=1/fac;i+;/i 自加/输出满足误差小于门限值时的n 的值( i-1 );printf("when the error is less than %f,the n is %dn",eps,i-1);return 0;运行测试结果:4-18解:问题分析:对于本次绿化活动的树苗费用,由于每棵树苗的价格一定(为8 元),那么只要确定了绿化所栽的树苗总数就行了,而所用树苗总数又取决于树与树之间的间距以及道路的全长, 这两个因素都是确定的,因此我们可以先求出单侧大
40、道绿化所需树苗数,再乘以2,即得到所需树苗总数,然后乘以单棵树苗价格,即该次绿化活动树苗费用。问题求解假设:假定 r_length 表示大道全长, r_length=2000 米( 1 公里 =1 千米), t_price 表示单棵树苗价格, t_price=5 元 /棵, spacing 表示树苗间距, spacing=5 米。传统流程图:程序代码:#include<stdio.h>int main(void)/* 变量声明, r_length,price,spacing 分别表示大道长度,树苗单价,树苗间距 */ int r_length,t_price,spacing;int
41、 i=0,j=0,sum=0;/*j 记录单侧大道绿化所需树苗数*/clrscr();/ 清屏printf("please input the information(r_length,t_price,spacing):");scanf("%d %d %d",&r_length,&t_price,&spacing);/* 依次输入大道长度、树单价、树间距.*/for(i=0;i<=r_length;i=i+spacing)/* 计算单侧大道绿化所需要的树苗数量j*/j+;printf("the total of %
42、d trees are required!n",2*j); /*输出绿化所需要的总树苗数量sum+=2*j*t_price;/*2j 表示绿化总共所需树苗数,sum 为绿化活动树苗费用printf("the %d trees' total price is %dn",2*j,sum); /*输出绿化所用树苗的总费用2j*/*/sum*/return 0;实验结果:4-19程序代码:#include<math.h>#include<stdio.h>int main(void)int i,j;clrscr();for(i=1;i<
43、=9;i+)for(j=1;j<=i-1;j+)printf(" t");for(j=1;j<=9-i+1;j+)printf("%d*%d=%dt",i,(i+j-1),i*(i+j-1);printf("n");return 0;实验结果:4-21 解:对于程序段1:int main(void)int number=0;while(number+<=1)printf("*%dn",number);printf("*%dn",number);return 0;分析:首先我们清
44、楚自加运算符中前加(+i )和后加( i+ )的区别:前加是引用加1后的值,即先加1 再引用;后加是先引用后加1,即引用的是加1 之前的原值。总之, ( +)运算时,只要引用过其表达式就必然会加1。此处, number 的初始值为0( number=0; ), while 条件表达式中,number 采用后加( number+ ),则 number+<=1 对应于是 0<=1 (成立),并且 number 由 0 自加 1 变为 1,进入 while 循环,输出: *1 并换行;继续判断 number+<=1 条件是否成立,有 1<=1 (成立),并且 number 由
45、 1 已自加 1 变为 2,进入 while 循环,输出:*2 并换行;继续判断 number+<=1是否成立,有 2<=1(不成立),虽然 while 循环的条件表达式此时不成立,但引用了number+ ,number 由 2 自加变为3,而 while 循环的条件不满足,退出while 循环,执行下一条语句“printf( “ *%dn ”,number); ”输出: *3 并换行,然后继续向下执行“ return 0; ”语句,返回操作系统,结束。由此得到该程序段的执行结果即如下所示!执行结果:对于程序段2:int main(void)int number=0;while(n
46、umber<=1)number+;printf("*%dn",number);printf("*%dn",number);return 0;分析:我们可以清楚地看到该程序段与程序段1 最明显的差别在于:程序段 1 的自加在while 条件表达式中完成,其输出有在循环体内,有在循环体外;而该程序段的自加和输出均在循环体内。此处,number 的初始值为 0(number=0; ),while 条件表达式中, number<=1 对应于 0<=1 (成立),进入 while 循环,执行“ number+; ”语句,此时 number 由 0
47、 自加为 1,接着执行下一条语句“ printf("*%dn",number); ”,输出: *1 并换行,继续执行语句“printf("*%dn",number); ”,输出: *1 并换行;继续判断 number<=1 是否成立,有 1<=1(成立),进入 while 循环,执行“ number+; ”语句,此时 number 由 1 自加为 2,接着执行语句“ printf("*%dn",number); ”,输出: *2 并换行,继续执行下一条语句“printf("*%dn",number);
48、”,输出: *2 并换行;继续判断 number<=1 是否成立,有 2<=1(不成立),退出 while 循环,执行“return 0;”语句,返回操作系统,结束。由此得到该程序段的执行结果即如下所示!执行结果:第五章用 C 语言进行结构化程序设计习题参考答案5-1.分析:知道最后一天的梨数,可以一天一天倒推到第一天的梨的个数。假设第n 天的梨个数为Xn ,则前一天的梨个数为因此,迭代公式为Xn-1=2(Xn+1)Xn-1,那么,Xn=Xn-1-(Xn-1)/2+1)=(Xn-1)/2-1,初始条件为X18=1。实现代码:#include<stdio.h>int ma
49、in()long pear=1;int i;clrscr();for(i=17;i>0;i-)pear=(pear+1)*2;printf("Day:%2dPears:%ldn",i,pear);return 0;5-2 请给出 2 个整数的最大公约数和最小公倍数的算法描述和程序实现。#include<stdio.h>int main(void)int num1,num2,temp,p,r;printf("Please input two nums:");scanf("%d,%d",&num1,&nu
50、m2);if(num1<num2) /* 比较两个数的大小,将大的数放在num1*/temp=num1;num1=num2;num2=temp;p=num1*num2;while(num2!=0) /* 求 num1 和 num2 的最大公约数*/r=num1%num2;num1=num2;num2=r;printf("The Gcd is:%dn",num1);printf("The least common multiple is:%dn",p/num1);return 0;5-3 在 5-2 基础上给出求n 个数最大公约数和最小公倍数的算法描述和程序实现。#include <stdio.h>/* 最大公约数*/int gcd(int a, int b)int t;if(a < b)t =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 仓库盘点小结方案
- 诚信企业活动方案
- 营销代理牙刷活动方案
- 评选好党员活动方案
- 暴雨洪涝应急救援预案范本
- 病虫害防治做法经验分享
- 语文常规展示课活动方案
- 标准辞职流程
- 街头清扫活动方案
- 大学生社会实践手册
- 2025年银行金融知识竞赛多项选择题库及答案
- 电商法规知识培训课件
- 2025年海洋工程技术革新在深海资源开发中的应用研究报告
- 新能源汽车行业环境会计信息披露质量研究-以比亚迪为例
- 全国计算机等级考试(二级)真题汇编及答案解析
- 银行业从业资格考试个人贷款题库
- 中国广电福建地区2025秋招行业解决方案岗位专业追问清单及参考回答
- Unit4ColouraKeyboard(课件)-教科版英语三年级上册
- 国家事业单位招聘2025中国地震应急搜救中心第一批次招聘拟聘用人员笔试历年参考题库附带答案详解
- 2025至2030年中国硬脆性陶瓷材料市场分析及竞争策略研究报告
- 城市燃气管道新建和更新改造项目节能评估报告
评论
0/150
提交评论