第2章 程序的灵魂--算法
- 格式:ppt
- 大小:760.50 KB
- 文档页数:47
c语言程序设计教程第二版课后习题答案【篇一:c语言程序设计教程_李含光_郑关胜_清华大学出版社习题答案习题答案[完美打印版]】1.单项选择题(1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数(2)主函数(main)(3)printf() , scanf()第2章习题参考答案1.单项选择题1-5 cbccc 6-10 cdcdc 11-13 dbb 2.填空题(1)1(2)26 (3)6 , 4 , 2 (4)10 , 6(5)3.000000 (6)双精度(double)(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10)%10)*100+(m/100)*10+m%10(12)0 (13)10 ,9 ,11(15)(x0y0)||(x0z0)||(y0||z0)(16)double (17)x==0(18)sqrt(fabs(a-b))/(3*(a+b))(19)sqrt((x*x+y*y)/(a+b))第3章习题参考答案1.单项选择题1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2.填空题(1)用;表示结束(2){ }(3)y=x0?1:x==0?0:-1(4)y%4==0y%100!=0||y%400==0(5)上面未配对(6)default 标号(7)while , do while , for(8)do while(9)本次(10)本层 3.阅读程序,指出结果(1)yes(2)*(3)abother(4)28 70(5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12(11)i=6,k=4 (12)1,-2 4.程序填空(1)x:y , u:z(2)m=n , m!=0,m=m/10(3)teps , t*n/(2*n+1) , printf(“%lf\n”,2*s) (4)m%5==0 ,printf(“%d\n”,k) (5)cx=getchar() , cx!=front , cx(6)double s=0, 1.0/k , %lf (7)s=0 , sgmin, 5.编程题(1). #include stdio.h int main() {double x,y; scanf(%lf,x); if(x1) y=x;else if(x=1.0x10) y=2*x-11; elsey=3*x-11;printf(%lf\n,y); return 0; } (2).#include stdio.h int main() {double x,y,z,min;scanf(%lf%lf%lf,x,y,z); if(xy) min=y; else min=x; if(minz)min=z;printf(min=%lf\n,min); return 0; } (3).#include stdio.h int main() {int y,m,d,flag,s=0,w,i;scanf(%d%d%d,y,m,d);flag=(y%4==0y%100!=0||y%400==0);w=((y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400)%7;for(i=1;i=m;i++) {switch(i) {case 1:s=d;break; case 2:s=31+d;break; case 3:s=59+d;break; case 4:s=90+d;break; case 5:s=120+d;break; case6:s=151+d;break; case 7:s=181+d;break; case8:s=212+d;break; case 9:s=243+d;break; case10:s=273+d;break; case 11:s=304+d;break; case12:s=334+d;break;} }s=(w+s)%7; if(s==0)printf(星期日\n); elseprintf(星期%d\n,s); return 0; }(4).#include stdio.h int main() {float p,r;scanf(%f,p); if(p=10) r=p*0.1;else if(p10p=20) r=10*0.1+(p-10)*0.075; else if(p20p=40)r=10*0.1+10*0.075+(p-20)*0.05; else if(p40p=60)r=10*0.1+10*0.075+20*0.05+(p-40)*0.03;else if(p60p=100)r=10*0.1+10*0.075+20*0.05+20*0.03+(p-60)*0.015; else if(p100)r=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(p-100)*0.01; printf(%f\n,r); return 0; } (5).#include stdio.h int main() {char c;while((c=getchar())!=\n) {if(c=ac=z) c=c-32; putchar(c);}return 0; } (6).#includestdio.h int main() {int m,k=2;printf(输入一个正整数:\n); scanf(%d,m); while(km) if(m%k==0) {printf(%4d,k); m=m/k; } else k++;printf(%4d\n,m); return 0; } (7).#includestdio.h int main() {int a,n,s=0,p=0,i;scanf(%d %d,n,a); for(i=1;i=n;i++) {p=p*10+a; s=s+p; }printf(%d\n,s); return 0; } (8).#includestdio.h int main(){int i,j,k;for(i=1;i=9;i++) for(j=0;j=9;j++) for(k=0;k=9;k++)printf(%5d,100*i+10*j+k); return 0; }(9).#includestdio.h #includemath.h int main() {float a=-10,b=10,x,f1,f2,f; f1=(((2*a-4)*a+3)*a)-6; f2=(((2*b-4)*b+3)*b)-6; do {x=(a+b)/2;f=(((2*x-4)*x+3)*x)-6; if(f*f10) { b=x; f2=f; } else { a=x;f1=f; }}while(fabs(f)=1e-6); printf(%6.2f\n,x); return 0; }(10).#includestdio.h#includemath.h int main() {int n=2;double eps,t,s=0,x;scanf(%lf %lf,x,eps); t=x; s=t;while(fabs(t)=eps) {t=-t*(2*n-3)*x*x/(2*n-2); s=s+t/(2*n); n++; }printf(%d,%lf\n,n,s); return 0; }(11).#includestdio.h int main() {unsigned long s,t=0,p=1; scanf(%u,s); while(s!=0) {if((s%10)%2!=0) {t=t+(s%10)*p; p=p*10; }s=s/10; }printf(%u\n,t); return 0; }第4章习题参考答案1.单项选择题1-5 dddbd 6-10 badcd 11-14 bdab 2.填空题(1)2(2)嵌套,递归(3)全局变量,局部变量,静态变量,动态变量(4)auto , static , register , extern (5)外部变量(6)编译,运行 3.阅读程序,指出结果(1)15(2)5(3)5,4,3 (4)i=5 i=2 i=2 i=4 i=2(5)求水仙花数(6)-5*5*5(7)30 (8)0 10 1 11 2 124.程序填空(1)float fun(float , float) , x+y,x-y, z+y,z-y (2)x , x*x+1 (3)s=0 , a=a+b 5.编程题(1).while(s!=0) #includestdio.h { unsigned int fun(unsigned int);p=p+s%10; int main() s=s/10; { } unsigned int s; return p; scanf(%u,s); } printf(%u\n,fun(s)); (2). return 0;#includestdio.h } #includestdlib.h unsigned int fun(unsignedint s) #includemath.h { void f1(float,float,float,float); unsigned int p=0; void f2(float,float,float,float);【篇二:《c语言程序设计》课后习题答案(第四版)谭浩强】t>1.1什么是计算机程序11.2什么是计算机语言11.3c语言的发展及其特点31.4最简单的c语言程序51.4.1最简单的c语言程序举例61.4.2c语言程序的结构101.5运行c程序的步骤与方法121.6程序设计的任务141-5 #include stdio.hint main ( ){ printf (**************************\n\n);printf( very good!\n\n);printf (**************************\n);return 0;}1-6#include stdio.hint main(){int a,b,c,max;printf(please input a,b,c:\n);scanf(%d,%d,%d,a,b,c);max=a;if (maxb)max=b;if (maxc)max=c;printf(the largest number is %d\n,max);return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用n?s流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的c程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3c语句573.3.1c语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include stdio.h#include math.hint main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf(p=%f\n,p);return 0;}3-2-1#include stdio.h#include math.hint main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5);// 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。
江苏大学C语言练习册答案————————————————————————————————作者:————————————————————————————————日期:第1章 C 语言概述知识点巩固习题 一、选择题1B2D 3C 4B 5C 二、基本概念填空题 1 小写 2 有且仅有 3 函数 4 执行部分 5 编译 6 /*和*/ 7 Alt+Enter8 F29 F610 F10第2章 程序的灵魂—算法知识点巩固习题 基本概念填空题 1 一个或多 2流程图、N-S 图 3 判断 4 分支 5 顺序、循环6 一个、一个7 模块8 适合9 一个算法应包含有限的操作步骤。
10 (略)第3章 数据类型、运算符与表达式知识点巩固习题 一、选择题 1D 2A 3B 4C 5A 6B 7B 8A 9B 10D 11D 12B 13C 14C 15C 16D 17A 18B 19C 20D 21A 22C 23C 24A 25C 26D27A28D29D二、基本概念填空题1 unsigned2 #define 符号常量名 常量值3 4.04 a/(b*c) 5(1)5 5(2) 55(3) 3 6 float a1=1,a2=1; 7 65535、0、1111111111111111(16个1)、08 0和1 9 !、&&、|| 10 非0、0,1、0 11 1、012 X>20&&X<30||X<-100 提高题 一、选择题 1C 2D 3D 4B 此题不好 5B 6D 7C 8D9C10A (C 少分号) 11D12A二、基本概念填空题1. 4.2、4.2 2.11、12 3. 将10赋值给s 4. \ ,大写字母A ,'\0' 5. 36. 10 7. 0.0 8.cos(3.14/3)+8*exp(x) 9. ac b b 42-+- 10.20, 3 11. 12 12. 14513.314.5.515. 1016. 117.算术、关系、逻辑、逗号、条件、赋值第4章 顺序结构程序设计一、知识点巩固习题 (一)选择题: 题号1234567891011答案 B D B C A D D C B C A (二)填空题:题号答案1 ;2 12453 (1)-200 2500(2)i=-200 j=2500(3)i=-200j=25004 3.789215,a= 513.79,a= 513.78921500,a= 513.789215005 25 21 37(三)完善程序:题号答案1 a=bb=c2 ch=ch-32ch3 scanf(“%f,%f”,&x,&y)z三、提高题(一)选择题:题号 1 2 3 4 5 6 7答案 B D A D D B A(二)填空题:题号答案1 02 100 300 400(三)完善程序:题号答案1 a/1000a/100%10a%100/10a%102 法一a-b a-b法二a/b a/b第5章选择结构程序设计一、知识点巩固习题(一)选择题:题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 A D B B A A B D C D C C A A C (二)填空题:题号答案1 -42 13 10 20 04 yes5 5 0 3(三)完善程序:题号答案1 a%2==1"no\n"2 ch>=’A’&&ch<=’Z’ch+323 z=-2*x/Pix==0z=2*x/Pi4 temp=ab=temp5 x%3==0||x%7==0f=1三、提高题(一)选择题:题号 1 2 3 4 5 6 7 8 9 10 答案 B C A A D B C D B A (二)填空题:题号答案1 *#2 33 m=1m=3(三)完善程序:题号答案1 b<cb<a&&b<cprintf("%d,%d,%d\n",c,a,b)printf("%d,%d,%d\n",c,b,a)2 c %xX default3 K==1 k==2 k==3第6章循环结构程序设计一、知识点巩固习题(一)选择题:题号 1 2 3 4 5 6 7 8 9 10 答案 A C A D D A B D C C 题号11 12 13 14 15 16 17 18 19 20 答案 A D B C C C D B B A (二)填空题:题号答案1 132 73 1204 1 2 35 366 5467 09182736458 *#*#*#$9 3,310 18(三)完善程序:题号答案1 4-i2*i-12 while(i<=100)i++3 amin=xx!=-1x<amin4 n<=13t=1.0/n5 int okoki=i+1yesno6 prime=1m%n==0prime7 b=i+18 continuebreak9 rnrm%n10 #include<math.h>x0=xx0-f/f1fabs(x-x0)>=1e-511 (xn0+a/xn0)/2>=1e-6xn1(xn0+a/xn0)/2三、提高题(一)选择题:题号 1 2 3 4 5 6 7 8 9 10 11 答案 C C C B B D B B B D D (二)填空题:题号答案1 m=2求m和n的最大公约数2 -23 This Is Book!4 101,-15 16,60(三)完善程序:题号答案1 (ch=getchar())!=’#’letter++ch>=’0’&&ch<=’9’other++2 n=0i%7==23 k*kbreakn/10%104 fabs(t)x*x/n(2*n+1)5 a!=c&&b!=c&&a!=’X’&&c!=’X’&&c!=’Z’6 f1*f2<0x=(x1+x2)/2x2=xx1=x7 fz+fm i++第7章数组知识点巩固习题一、选择题1 D2 D3 C4 B5 D6 C7 A8 B9 C 10 B11 B 12 C 13 C 14 C 15 C 16 D 17 A 18 C 19 C 20 C二、基本概念填空题1.首地址2.有限3.行列下标值相等4.两个原序列同为升序或同为降序5.gets(str); 6.0三、阅读程序题1.s=1234 *************************3.求得数组最大元素的下标4.65.将两字符串合并,并输出合并串的串长6.e, helloy, ,07.s=15 8.0 1 20 1 20 1 29.0 0 0 0 1 10.将任意读入的十进制正整数转换成十六进制序列四、完善程序题1.x=x/2 x!=0 i-12.a%1000/100 aa[i]=aa[i]%10 i<23.SIZE-1 j<k4.“”空串strcmp(a, max)>05.i=0 a[i+j]=b[j], a[i+j+1]=’\0’6.char s[] j=k=0 s[k]=’\0’7.find=1 low=mid+1 high=mid-18.i==j a[i][4-i]=19.a[m-1][0] a[m][n-1]=a[m-1][n]10.a[i]!=’\0’a[i]+3-26 a[i]+311.k++ a[i][j] printf(“\n”)提高题一、选择题1C 2C 3D 4B 5A 二、阅读程序题1.将任意读入的整数插入数组a后,使之依然有序2.SWITCH*#WaMP*3. 2 5 8三、完善程序题1.a[i++] b[j++] break2.x%10 m<n m>=n3.a[i]-97 i+974.<ctype.h> s=0 strlen(a)5.a[i][0]=a[i][i]=1 a[i-1][j-1]+a[i-1][j] j<=i6.(N+1)/2 a[j][N-k] printf("\n")7.a[k]=k a[k]!=0 a[j]%a[k]==08.i=0,j=strlen(str)-1 str[j] str[j]第8章函数一、知识点巩固习题(一)选择题:题号 1 2 3 4 5 6 7 8 9 10 答案 C B A B C D B B B D 题号11 12 13 14 15 16 17 18 19 20 答案 C A D C D C D D B A 题号21 22 23 24 25 26 27 28答案 B D B B A D C B(二)填空题:题号答案1 30,20,102 83 hlo4 6 7 85 110…f(1)210…f(2)100…main()6 2 11 3 11 4 117 2,5,1,2,3,-28 15,64,69 c=0c=-1c=-2(三)完善程序:题号答案1 i<2j<4arr[i][j]>maxmax=a rr[i][j]2 chch==’#’i++3 str[num]!=’\0’num4 float fmax(x,y) 去掉原来的分号(x>y)?x:y5 return(1)return(n+sum(n-1))三、提高题(一)选择题:题号 1 2 3 4 5 6 7 8 9 10 答案 B D A B B C D A A C (二)填空题:题号答案1 212 43 1 1 1 10 121 2 2 9 131 3 3 8 144 0123455 3156 56717 5,25(三)完善程序:题号答案1 str[i]word=0num++2 m%k==0prime(n-i)3 y>x&&y>zreturn (z)j%x1==0&&j%x2==0&&j%x3==04 m=1m*im=0fun(k)5 s[i]=k(i+1)%5==0sum=0第9章预处理命令知识点巩固习题一、选择题1A 2B 3C 4D 5B 6C 7D二、基本概念填空题1.不占用2.字符、无三、阅读程序题1.15 2.ar=9 ar=9 ar=11提高题一、选择题1A 2C二、阅读程序题1.8 、9 2.12第10章指针知识点巩固习题一、选择题1D 2B 3D 4D 5B 6A 7B 8C 9A 10A 11D 12D 13D 14C 15D 16D 17A 18C 19C 20B 21B 22B 23C 24A 25C二、基本概念填空题1.ABCD A2.NULL 合法空间的地址3.a[5]的地址即&a[5] a[5]的值4.(1) &a[1]即数组a的第二行的首地址(2) &a[2][0](3) &a[1][2] (4) a[0][2]5.12 126. 57. 3 "FILE2.OUT"三、阅读程序题1.调用函数求得任意两数之和2.ga3.2,5 4.xyabcABC5.10,20 10,20 6.48 62 65 7.AD BC BB 8.ABCDBCDCDD9. 1 10.6,6 9,9 四、完善程序题1.p p=a *p2.t=*x *x=*y *y=t3.max_value(a,10) p++ *p>m4.char a[10] strcmp(p[i],a)>05.p=a p-a6.i/4 i%47.*t++ str1, str28.p[n]!=c p+n9.getchar() '\0' ++10.t[80] strcmp(c[i],c[i+1])>0 puts提高题一、选择题1B 2A 3D 4C 5C 6C 7A 8B 9D 10C 11B 12C 13D 14C 15D 二、基本概念填空题1.nanjing i e g2.3*i+j i j 3.BBBAAA123三、阅读程序题1.4, 5 2.8retupmo puter3.elpoeP anihC 4.15 5.hane四、完善程序题1.j++ j++ j++ a!=0 r<10 --i2.(*fun)(double) (*fun)(a+i*h) mypoly3.s+n-1 break p2--4.exit(0) *(p+i)=*p1 p++5.fac[left] fac[right] fac[left] *(fac+left++) 6.break '\0' *p++第11章结构体、共用体与枚举类型知识点巩固习题一、选择题1C 2A 3B 4D 5D 6A7B 8C 9A 10A 11D 12B 二、基本概念填空题1.完成下列表格(表1):表1 结构体与共用体变量的对比表问题结构体共用体变量定义格式struct 结构体类型名{ 类型名1 成员名1;类型名2 成员名2;……};union 共用体类型名{ 类型名1 成员名1; 类型名2 成员名2; ……};什么因素决定了变量的大小变量所有成员容量之和成员中内存需求量最大者的容量对成员的引用方法变量名.成员名指针->成员名变量名.成员名指针->成员名改变一个成员的值是否影响其他成员的值否是可否为变量各成员初始化可以不可以2.完成下列表格(表2):表2 简单数据类型与结构体、共用体的对比表问题char/int/float 指针结构体共用体数据类型是否需要单独定义否否是是是否有明确的数值范围是是否可以用scanf、printf直接输入输出是可以,但一般不这么处理否否是否可以直接进行关系运算是是否否3.成员指向成员4.345.(*p).b p->b6.20 w[0].a[3] w[1].c.c (*pw).a[1]、pw->a[1] (*pw).c.c、pw->c.c 三、阅读程序题1.72 2.9 3.0:706, 1:908, 四、完善程序题1.(d-1) 2.t=a[i] a[i]=a[k] a[k]=t 3.scanf("%s",name) stu[j].dps++ 4.a[i].con++ a[j].con++ 5.exit(0) 或return h p1!=NULL p1=p1->link p1->link=h 6.p2->next head head->next p2->next=p1 提高题一、选择题1B 2D 3A二、阅读程序题1.516021 2.10120031403.2, 5 4.4, 8 5.2,5dime dollar三、完善程序题1.break Find(a, num, n) q->score.exam2 q->score.exam1 2.free(p2)NULL 3.v2=h p=v2->next4.h!=NULL (NP)malloc(sizeof(ND)) p++第12章位运算知识点巩固习题一、选择题1D 2A 3B 4A 5D 原题有错(i的值为013,j的值为0x13)二、基本概念填空题1.11110000 2.a&0 3.a|077774.(x&0xFF)|0xFF00 5.a=012500>>2 6.ch|32或ch|0x20提高题阅读程序题a1f6第13章文件知识点巩固习题一、选择题1D 2B 3C 4C二、基本概念填空题1.rewind 2.stdio.h三、阅读程序题1.将p1所指文件z .c的内容复制到p2所指文件s .c中2.Like C 四、完善程序题1.fgetc(fp) fclose(fp)2.fopen(fname,"r") ch3.w提高题一、选择题1D 2C 3D 4B 5C 6D 二、阅读程序题1.121314252627 2.The fifth record is:#, 9, 5.6三、完善程序题1.int argc; char **argv argv[1] NULL fgetc(fp) 2.int x[][6],int n \\my.out fp,"%3d",a[i][j] fp 3."a" fgetc(fp1) c, fp2。
第1章C语言概述习题(P13):1.3 写出一个C程序的构成。
答:C程序由一个main函数和0个或多个自定义函数构成,每个函数的构成如下:函数类型函数名(函数参数列表){说明部分执行部分}1.4 C语言以函数为程序的基本单位,有什么好处?答:一个函数实现一个相对独立的功能,便于实现程序的模块化。
1.5 请参照本章例题,编写一个C程序,输出以下信息:*************************************************Very good!*************************************************答:参照例1.1编程如下# include <stdio.h>void main(){printf("********************************************\n");printf(" Very good!\n");printf("********************************************\n");}1.6 编写一个C程序,输入a、b、c 3个值,输出其中最大者。
答:参照例1.3编程如下法一:修改例1.3的主函数,自定义max函数不变。
# include <stdio.h>void main(){int max(int x,int y); /*函数声明*/int a,b,c,m; /*定义4个变量,m用于存放最大值*/scanf("%d%d%d",&a,&b,&c);/*从键盘上输入3个整数*/m=max(a,b); /*第一次调用max函数求出前两个数的最大值放在m中*/m=max(m,c); /*再调max函数求出m和第三个数的最大数*/printf("max is %d\n",m); /*输出结果*/}int max(int x,int y) /*定义求两个数的最大数的函数max */{int z;if(x>y) z=x;else z=y;return(z);}法二:修改例1.3的主函数和max函数,将max函数改为求3个数的最大数。
第2章程序的灵魂——算法1. 概念:为解决某一特定问题而采取的具体工作步骤和方法。
2. 举例◆计算1+2+3+……+100的值◆计算1×2×3×……×1000的值◆有50个学生,要求输出他们之中成绩在80分以上的学号和成绩◆判定2000-2500年中的每一年是否闰年3. 算法的表示(1) 自然语言(2) 流程图表示法(3) 伪代码表示法(4) 计算机语言表示法(2) 流程图表示法顺序结构、选择结构和循环结构流程图这三种基本结构有以下共同的特点:1. 只有一个入口;2. 只有一个出口;3. 结构中的每一部分都有被执行到的机会;4. 结构内没有死循环。
用上述基本结构的顺序组合可以表示任何复杂的算法结构,但是基本结构中的流程线使流程图显得较乱,于是1973年美国学者提出了一种新的流程图形式。
在这种流程图中,完全去掉了带箭头的流向线,全部算法写在一个矩形框内。
下面是三种控制结构的N-S图。
例1 求四个数的和算法一:在内存中设一累加用的存储单元S。
第1步:将存储单元S清零。
第2步:输入第1个数a1。
第3步:把a1加到存储单元S中。
第4步:输入第2个数a2。
第5步:把a2加到存储单元S中。
第6步:输入第3个数a3。
第7步:把a3加到存储单元S中。
第8步:输入第4个数a4。
第9步:把a4加到存储单元S中。
第10步:把存储单元S中的结果输出。
算法二:在内存中设一累加用的存储单元S和一计数用的单元I。
第1步:将累加单元S清零。
第2步:将计数单元I清零。
第3步:输入一个数A。
第4步:把A加到累加单元S中。
第5步:计数单元I的值增加1,即I+1=>I。
第6步:若I<4则转去执行第3步,否则,继续执行第7步。
第7步:输出存储单元S中的结果。
开始结束S+A=>S 0=>S 0=>I 输入A I+1=>I I<4输出S 0=>s0=>I输入A S+A=>S I+1=>I 直到I=4输出结果S N-S 图Y例2 求5!开始结束T*i=>t 1=>t 2=>i i+1=>i i>5输出S N例3 将50名学生中成绩在80分以上练习1:交换两个单元的内容。
C程序设计(第四版)(谭浩强)第2章课后习题答案算法——程序的灵魂P017 2.1 计算机1-5相乘的积.#include<stdio.h>int main(){int i,s=1; //在执行数值操作前一定要先有个初值.for(i=1;i<6;i++) //这里是到6.{s=s*i; //相乘}printf("The sum is %d .\n",s);return 0;}#include<stdio.h> //作出要求:换成1到11间奇数相乘.int main(){int i,s=1; //在执行数值操作前一定要先有个初值.for(i=1;i<12;i++) //这里是到,但题目要求的是取单数.也可以是i=i+2{if(i%2!=0) //i对取模,值为非为奇数;为则为偶数.s=s*i;elsecontinue; //跳过这个for循环的这一次,执行下一次.}printf("The sum is %d .\n",s);return 0;}暂时没法做.P019 2.3 判断2000-2500年中的闰年,并输出.年的概念是地球围绕太阳一周的时间(所谓公转周期)称为一年,这个周期是相当稳定的,很长时间也不会变动1秒,但是真正的一年是365.2423天(目前)。
所以,如果每年定义为365天的话,1年就会多出0.2423天,4年就会多出0.9692天,非常接近1天,这样闰年就出现了,也就是每4年要有1年设置为366天,来抵消这多出的1天。
规则为:·1)如果年份能被4整除,则该年计为闰年;可是,假如不做调整的话,当400年的时候,累计才多出96.92天,接近于多出97天,闰年的设置却多出来100天,所以要在400年内,再撤销3个闰年。
怎么撤销呢?就有了下面这个规则:·2)如果年份能被100整除,则不计为闰年;问题又来了,400年里有4个100年吧,去掉后四个100年后,又少了一个,所以再加一个规则就是:·3)如果年份能被400整除,则计为闰年。