清华大学c语言教程课后答案
《C语言程序设计》课后习题参考答案 李勃 邱晓红 主编 清华大学出版社

《C语言程序设计》课后习题参考答案第1章C语言及程序设计概述1.单选题(1)A (2)B (3)A (4)B (5)C2.填空题(1)//,/*…*/(2)scanf()(3)printf()3.判断题(1)对(2)错(3)错(4)对第二章:数据类型运算符与表达式1.单选题(1)C (2)D (3)C (4)B (5)C (6)A (7)B (8)D (9)A(8)D(9)A(10)B(11)C(12)C(13)D(15)B(16)C(17)A(18)A(19)B(20)C(21)C(22)D(23)C(24)A(25)D(26)B(27)C(28)B(29)B(30)A2.填空题(1)sqrt(pow(y,x)+log10(y)) (2)36(3)6(4)3 3(6)36(7)int x=8,y=8;(8)1(9)E(10)6,7,8,9(11)6(12)66,96(13)240(14)1,1,-1,-1(15)5,2,6(16)1(17)!(18)2(19)(a>0&&a<101)&&(a%3==0||a%7==0) (20)A3.程序分析题(1)2 72 74 94 412 12116(3)100 d 68 D97 a 49 1 (4)0 1 0 1 (5)2 4 6 7-0.58 7046.587.5(6)33 12 113 13 082 32(7)618 30181814.改错题(1)①无初始赋值,不能输出②数据精度丢失③少“;”号④单字符变量不能保存字符串常量⑤不能连续初始化⑥非法标识符(2)short i=38000溢出PI=3.1416 常量不能修改值Printf(“%d”,x%y) %必须是整数a*=(b+c)/=d符合赋值左边不能是表达式第三章:算法概念与顺序结构程序设计1.选择题(1)D(2)B、D(3)D(4)B(5)C(6)A(8)C(9)B(10)D2.填空题.(1)一条语句;(2)小于左右(3)%%(4)输出项列表输出控制符(5)取地址取a的地址(6)从盘获取一个字符(7)大括号(8)f=68.00(9)n1=%d\n n2=%d(10)7,5,c=33.程序分析题.(1)i=100,c=a,f=1.234000(2)65535,65536(10)1234,123.5,12345.5第四章:选择结构程序设计(1)C (2)B (3)B (4)B (5)D (6)D (7)D (8)A (9)B (10)A (11)B (12)B (13)D (14)A (15)C (16)A (17)C (18)D (19)B (20)D (21)A(23)A(24)A2.填空题.(1)1(2)5 8 8(3)4 5 99(4)2(5)10 20 0(6)2 1(7)-4(8)3(9)No(10)25(11)45 45(12)0(13)5.5(14)13(15)3第五章:循环结构程序设计(1)C(2)A(3)D(4)B(5)D(6)B(7)A A或B(8)输出4444(9)B(10)A(11)B(12)C(13)A(14)B2.填空题.(1)r=m;m=n;n=rm%n(2)3(3)-5(4)i%3==2&&i%5==3&&i%7==2 j==5j!=k(6)int s=8,j=i+2k+i+j==8(7)8(8)k&&i<=500 k/10 continue第六章:数组1.选择题(1)B(2)C(3)D(4)D(5)B(6)C(7)B(8)A(9)A(10)D2.填空题.(1)按行序优先的原则(2)0 9(4)1 2(5)6(6)前者以回车后者以空格或回车作为间隔符(7)gets()(8)&a[i](9)char k -1(10)9 83.程序分析题.(1)1 3 7 15(2)0 0 0(3)读取输入字符串中数字字符(4)①if(str1==str2) (strcmp(str1,str2)==0)②&c1[0]③m[i][k-1]第七章:函数的调用1.选择题(1)B(2)C(3)C(4)A(6)D(7)D(8)D(9)B(10)D(11)A(12)A(13)B(14)B2.填空题.(1)有参无参(2)顺序类型(3)定义调用(4)①fmax(a,N) ②s[k]=s[p](5)①age(n-1)+2 ②age(5)(6)①prt(c,n-1) ②prt(…‟,n-i) ③prt(…*‟,2*i-1) 3.程序分析题.(1)h l o(2)3(3)2 6(4)5 25。
C 语言程序设计(清华大学郑莉)课后习题答案

第一章概述1-1简述计算机程序设计语言的发展历程。
解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。
1-2面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。
面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。
通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。
因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
C++语言是目前应用最广的面向对象的编程语言。
1-3什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
1-4什么是对象?什么是面向对象方法?这种方法有哪些特点?解:从一般意义上讲,对象是现实世界中一个实际存在的事物,它可以是有形的,也可以是无形的。
最新C++语言程序答案第四版清华大学汇总

最新C++语言程序答案第四版清华大学汇总C++语言程序答案第四版清华大学第一章概述1-1 简述计算机程序设计语言的发展历程。
解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。
1-2 面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。
面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。
通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。
因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
C++语言是目前应用最广的面向对象的编程语言。
1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
最新C++语言程序答案第四版清华大学汇总

C++语言程序答案第四版清华大学第一章概述1-1 简述计算机程序设计语言的发展历程。
解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。
1-2 面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。
面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。
通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。
因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
C++语言是目前应用最广的面向对象的编程语言。
1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
《C语言程序设计》清华大学出版社课后答案

习题 9一.选择题1. A2. A3. A4. A5.B6.C二编程题9.2 编写一函数,判断N×N矩阵是否为上三角阵。
上三角阵是指不含主对角线,下半三角都是0的矩阵。
#include <stdio.h>int fun(int x[][3],int n){int flag=1,i,j;for(i=1;i<n;i++)for(j=0;j<i;j++)if(x[i][j]!=0){flag=0;break;}return flag;}void main(){int a[3][3]={{1,4,5},{0,2,6},{0,0,3}};int result=fun(a,3);if(result==1)printf("此矩阵是上三角矩阵!\n");elseprintf("此矩阵不是上三角矩阵!\n");}9.3 有一个字符串,包含n个字符,将字符串从第i 个字符到第j个字符间的字符逆置。
程序代码:#include <stdio.h>#include <string.h>void invertsub(char *str,int i,int j){char *p,*q,c;int n=0;p=q=str;if(str==NULL)printf("str is NULL!\n");else if(i<=0||j>strlen(str))printf("i and j value error!\n");else {while(*p!='\0'&&n!=i-1){ p++;n++; }q=p;while(*q!='\0'&&n!=j-1){q++;n++;while(p<q){c=*p;*p++=*q;*q--=c;}}}void main(){char str[]="abcdefg";printf("%s\n",str);invertsub(str,2,5);printf("%s\n",str);}9.4 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数.程序源代码:main(){int number[20],n,m,i;printf("the total numbers is:");scanf("%d",&n);printf("back m:");scanf("%d",&m);for(i=0;i<n-1;i++)scanf("%d,",&number[i]);scanf("%d",&number[n-1]);move(number,n,m);for(i=0;i<n-1;i++)printf("%d,",number[i]);printf("%d",number[n-1]);}move(array,n,m)int n,m,array[20];{int *p,array_end;array_end=*(array+n-1);for(p=array+n-1;p>array;p--)*p=*(p-1);*array=array_end;m--;if(m>0) move(array,n,m);}9.5 输入n个整数,将最小数与第一个数对换,把最大数与最后一个数对换程序源代码:main(){int number[10];input(number);max_min(number);output(number);}input(number)int number[10];{int i;for(i=0;i<9;i++)scanf("%d,",&number[i]);scanf("%d",&number[9]);}max_min(array)int array[10];{int *max,*min,k,l;int *p,*arr_end;arr_end=array+10;max=min=array;for(p=array+1;p<arr_end;p++)if(*p>*max) max=p;else if(*p<*min) min=p;k=*max;l=*min;*p=array[0];array[0]=l;l=*p;*p=array[9];array[9]=k;k=*p;return;}output(array)int array[10];{ int *p;for(p=array;p<array+9;p++)printf("%d,",*p);printf("%d\n",array[9]);}9.6 输入n个字符串,按由小到大顺序输出。
C语言程序设计基础教程课后习题答案(清华大学出版社于延编)自己做的欢迎校正

C语言程序设计基础教程课后习题答案(清华大学出版社于延编)自己做的欢迎校正第一章计算机程序设计导论一、简答题1.请简述计算机程序设计语言的发展历程。
答:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C 语言是一种面向对象的编程语言,也属于高级语言。
2.什么是算法,请举例设计一个算法。
答:算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。
或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。
求两个数的最大公约数设两个变量M和N1.如果M<n,则交换m和n< p="">2.M被N除,得到余数R3.判断R=0,正确则N为最大公约数否则进行下一步4.将N赋值给M,将R赋值给N,重复第一步3.请叙述算法都有哪些特性。
答:①有穷性②群定性③有效性④有零个或多个输入⑤有一个或多个输入4.请叙述什么是结构化程序设计以及结构答:①只要有几种简单类型的借口,就可以构成任意复杂的程序。
这样可以使程序设计规范化,便于用工程的方法来机型软件生产,由顺序结构,选择结构,循环结构这三种基本结构组成的程序就是结构化程序。
二、算法设计题1.设计算法求1+2+3+…+100的和。
#include#includemain(){int I,S = 0;for(I = 1;I<=100;I++) //求1-100的和S=S+I;printf("%d\n",S);system("pause");}2.已知两个自然数M和N,请设计算法输出它们的最小公倍数。
#include#include#includeint fmax(int m,int n) //求最大公约数{int r;r=m%n;while (r!=0){m=n;n=r;r=m%n;}return n;}int fmin(int m,int n) //最小公倍数=两个数的积除两个数的最大公约数{ return m*n/fmax(m,n);}main(){ int a,b;scanf("%d%d",&a,&b);printf("fmin is:%d\n",fmin(a,b));system("pause");}3.已知一个自然数N,请设计算法输出它所有真约数的和。
Cc语言程序设计张树粹清华大学习题解答

第1 章习题答案二、单项选择题1.A2.A3. C4.B5.A6.B7.B8. A三、填空题1. .C .CPP .OBJ .EXE2. 主3. #include<iostream >, using namespace std, #include<stdio.h>4. 顺序结构,选择结构,循环结构5.{, }, 函数说明, 函数执行,不能省略,void第2章习题答案一、单项选择题1.B2.B3.A4.C5. C6. A7.B8.C9. D 10. D11. B 12.A 13. B 14.C 15. D二、填空题1. x>20&&X<30||X<-1002. x>y或a>b3. 14. auto 、register 、static 与extern5. 函数体内.6. int float double7. 2 18. . 是最右边表达式的值9. 710. 先使用后自增,先自增后使用11.右结合12.变量的数据类型、变量的存储类型、变量名13.是否整除14.此之外全局变量,静态局部变量15.count三、写出程序运行结果1、2,12、6,8,6,73、n=14、15、n=-46、x=3,a=2,b=37、08、i=6,d=129、2147483647,-2147364810、x=3,y=5第3章习题答案一、单项选择题1.D2.B3.B4.C5.D6.D7.B8.B9.C 10.A二、写出程序运行结果1. 1202. s=633. 01234the loop break out.4. freight= 58800005. sum=1sum=3sum=9sum=33三、程序填空1. i++ i<=102. i<100 i%3!=03. x!=-1 x<min4. i++,2*i-1 \n5. i=1 j<=i i*j四、编程题1.void main(){char ch1;ch1=getchar();if(ch1>'0'&&ch1<'9')printf("这是一个阿拉伯数字,朋友再见!\n"); elseprintf("这不是一个阿拉伯数字,朋友再见!\n");2.main(){int x,y;scanf("%d",&x);if(x<0)y=x;elseif(x>=10)y=3*x-11;elsey=2*x-1;printf("\nx=%d,y=%d\n",x,y);3.main( ) {char grade;grade=getchar();switch(grade){ case 'A': printf(">=90"); break;case 'B': printf("80~89"); break;case 'C': printf("70~79");break;case 'D': printf("60~69"); break;case 'E': printf("0~59");4.void main(){char ch1;ch1=getchar();if(ch1>'a'&&ch1<'z')printf("这是一个英文大写字符,朋友再见!\n"); else if(ch1>'A'&&ch1<'Z')printf("这是一个英文小写字符,朋友再见!\n");5.void main(){int n,a,b,c;for(n=100;n<=999;n++){a=n/100;b=(n-a*100)/10;c=n%10;if(n==a*a*a+b*b*b+c*c*c)printf("%d,",n);6. main()int a,b,c,d,t;scanf("%d,%d,%d,%d",&a,&b,&c,&d);printf("\na=%d,b=%d,c=%d,d=%d\n",a,b,c,d); if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;c=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}printf("%d,%d,%d,%d",a,b,c,d);7. #include <math.h>main(){float e=1.0,t=1,n=1;while(fabs(1/t)>1e-6) {e=e+1/t; n=n+1; t=t*n; }printf("e=%f\n",e);8. main(){int i,j;for(i=1;i<=4;i++) {for(j=1;j<=i+30;j++) printf(" "); //定打印*的位置,打在屏幕中央,从第31列开始printf("*");for(j=1;j<=2*(4-i);j++)printf(" "); //两个*间的空位数printf("*");printf("\n");9. main(){ int i,a,b,c,n=0;for(i=100;i<=999;i++){a=i%100;c=i%10;b=i-a*100-c;if(i%11==0&&(a==b||b==c||c==a)){ printf("%d ",i); n+=1;10. main(){int d=0,a=2;float m,s=0;do{a=2*a;m=0.8*a;s=s+m;d++;}while(a<=100);printf("%f\n",s/d);第4习题答案一、A.D.A.B.A.D.B.B.B。
c语言程序设计教程第二版课后习题答案

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语言程序设计课后习题答案

C++语言程序设计(清华大学郑莉)课后习题答案第一章概述1-1 简述计算机程序设计语言的发展历程。
解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。
1-2 面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。
面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。
通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。
因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
C++语言是目前应用最广的面向对象的编程语言。
1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
最新C++语言程序答案第四版清华大学汇总

C++语言程序答案第四版清华大学第一章概述1-1 简述计算机程序设计语言的发展历程。
解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。
1-2 面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。
面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。
通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。
因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
C++语言是目前应用最广的面向对象的编程语言。
1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
c语言程序设计答案(清华大学出版社)

c语言程序设计答案(清华大学出版社)C语言程序设计是一门基础而重要的计算机编程课程,它不仅教授编程语言的语法和结构,更培养了解决问题的逻辑思维能力。
《C语言程序设计》一书由清华大学出版社出版,是众多高校计算机专业学生的必读教材。
以下是该书的一些答案解析,以帮助学生更好地理解和掌握C 语言的相关知识。
第一章:C语言概述- C语言的特点:C语言是一种结构化语言,具有高效、灵活、功能强大等特点。
- C语言的发展历史:C语言由丹尼斯·里奇在20世纪70年代初期开发,最初用于UNIX操作系统。
第二章:数据类型、运算符和表达式- 基本数据类型:包括整型(int)、字符型(char)、浮点型(float和double)。
- 运算符:包括算术运算符、关系运算符、逻辑运算符、位运算符等。
- 表达式:由常量、变量、运算符和函数调用组成的组合,用于计算和赋值。
第三章:控制语句- 顺序结构:程序按照代码的顺序执行。
- 选择结构:使用`if`、`switch`等语句进行条件判断。
- 循环结构:使用`for`、`while`、`do-while`等语句进行重复执行。
第四章:数组- 一维数组:连续存储的相同类型元素集合。
- 二维数组:可以看作是一维数组的集合。
- 数组的初始化:可以使用花括号进行初始化。
第五章:函数- 函数的定义:使用`return`类型和函数名定义。
- 函数的调用:通过函数名和参数列表调用。
- 递归函数:函数内部调用自身。
第六章:指针- 指针变量:存储变量地址的变量。
- 指针的运算:包括地址运算和指针的自增自减。
- 指针与数组:指针可以方便地访问数组元素。
第七章:结构体与联合体- 结构体:可以包含不同类型的数据成员。
- 联合体:所有成员共享同一块内存空间。
第八章:预处理指令- 宏定义:使用`#define`定义常量或宏。
- 文件包含:使用`#include`引入头文件。
第九章:位运算- 位运算符:包括位与(&)、位或(|)、位非(~)、位异或(^)等。
C语言程序设计 第三版 部分习题 (谭浩强 著) 清华大学出版社 课后答案

4.7 编程实现一个具有简单四则运算功能的计算器。
提示:参照例4.18,随机产生3个数,其中一个数用来判断是哪种运算。
4.8 编程实现,输入一行字符,将其中的数字字符对应的整数值加起来并输出结果。如:
a45b8&*3 则是4+5+8+3,结果为20。
提示:char c; int sum=0;
A)语法错误 B)1 C)1.5 D)1.500000
3.14 能表示条件0≤x≤100的表达式是(D)。
A)0<=x<=100 B)x>=0,x<=100
C)0≤x≤100 D)x>=0&&x<=100
3.15 判断char型变量ch为数字的正确表达式是(B)。
2.15 存储字符串"\\\'abc\376"需要的字节数是(D)。
A)11 B)13 C)6 D)7
【习题3】
一、计算题
3.1 2.8+7%3*11%2/4 (答案:2.8)
3.2 5/2+5.0/2+7%6 (答案:5.5)
3.3 a=12,a*=2+3 (答案:a=60)
1.15 输入两个整数,输出其中最大者。
提示:模仿例1.3
1.16 输入三个整数,输出其中最小者。
提示: min(min(a,b),c);
【习题2】
一、简答题(在课本中寻找答案,略)
2.1 常量与变量的区别?
2.2 C语言中的标识符的定义规则?
2.3 变量为什么要“先定义,后使用”?
a+(int)(b/2*(int)(a+c)/2)%4 (答案:4.5)
C++语言程序设计(清华大学出版社)课后习题及答案 第 五 章 程序的结构

void TelepathicFunction(); int main() { const int MaxCats = 5; Cat *CatHouse[MaxCats]; int i; for (i = 0; i<MaxCats; i++) { CatHouse[i] = new Cat(i); TelepathicFunction(); } for ( i = 0; i<MaxCats; i++) { delete CatHouse[i]; TelepathicFunction(); } return 0; } void TelepathicFunction() { cout << "There are " << Cat::GetHowMany() << " cats alive!\n"; } 程序运行输出: There are 1 cats alive! There are 2 cats alive! There are 3 cats alive! There are 4 cats alive! There are 5 cats alive! There are 4 cats alive! There are 3 cats alive! There are 2 cats alive! There are 1 cats alive! There are 0 cats alive!
5-8 什么叫做友元函数?什么叫做友元类?
解: 友元函数是使用 friend 关键字声明的函数,它可以访问相应类的保护成员和私有成员。友元 类是使用 friend 关键字声明的类,它的所有成员函数都是相应类的友元函数。
本页已使用福昕阅读器进行编辑。 福昕软件(C)2005-2009,版权所有, 仅供试用。
清华大学c语言教程课后答案

c语言程序设计答案---潭2《C语言程序设计教程(第二版)》习题答案说明1. 本习题答案是我自己做的,错误和疏漏在所难免。
编程题全部调试通过,但选择题和填空题不敢保证全对。
2. 凡未指明解题所用的程序设计语言的,均指C语言。
3. 凡未指明执行程序所需的操作系统的,均可在DOS下执行。
4. 本文中文字下面划线的表示输入。
第1章程序设计基础知识一、单项选择题(第23页)1-4.CBBC 5-8.DACA二、填空题(第24页)1.判断条件2.面向过程编程3.结构化4.程序5.面向对象的程序设计语言 7.有穷性 8.直到型循环 9.算法 10.可读性 11.模块化 12.对问题的分析和模块的划分三、应用题(第24页)2.源程序:main(){int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */printf("cock hen chick");for(i=1;i<=20;i++)for(j=1;j<=33;j++)for(k=1;k<=33;k++)if (i+j+k*3==100&&i*5+j*3+k==100)printf(" %d %d %d",i,j,k*3);}执行结果:cock hen chick4 18 788 11 8112 4 843.现计算斐波那契数列的前20项。
递推法源程序:main(){long a,b;int i;a=b=1;for(i=1;i<=10;i++) /*要计算前30项,把10改为15。
*/{printf("%8ld%8ld",a,b);a=a+b;b=b+a;}}递归法源程序:main(){int i;for(i=0;i<=19;i++)printf("%8d",fib(i));}fib(int i){return(i<=1?1:fib(i-1)+fib(i-2));}执行结果:1 123 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 4.源程序:#include "math.h";main(){double x,x0,deltax;x=1.5;do {x0=pow(x+1,1./3);deltax=fabs(x0-x);x=x0;}while(deltax>1e-12);printf("%.10f",x);}执行结果:1.32471795725.源程序略。
C语言程序设计 (第四版) 清华大学出版 答案

p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期
p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次
r=0.1;
n=10;
p=pow(1+r,n);
printf("p=%f\n",p);
return 0;
}
Xt3-4(1)
#include <stdio.h>
int main()
{int c1,c2;
c1=197;
c2=198;
printf("c1=%c,c2=%c\n",c1,c2);
printf("c1=%d,c2=%d\n",c1,c2);
return 0;
}
Xt3-4(2)
#include <stdio.h>
int main()
{int a,b;
float x,y;
char c1,c2;
scanf("a=%d b=%d",&a,&b);
scanf("%f %e",&x,&y);
int main()
{
int a,b,c;
printf("请输入三个整数:");
scanf("%d,%d,%d",&a,&b,&c);
if (a<b)
C语言程序设计教程_李含光_郑关胜_清华大学出版社习题答案习题答案[完美打印版]
![C语言程序设计教程_李含光_郑关胜_清华大学出版社习题答案习题答案[完美打印版]](https://img.taocdn.com/s3/m/019c016131b765ce050814a0.png)
(4). #include <stdio.h> int main() {
float p,r; scanf("%f",&p); if(p<=10) r=p*0.1; else if(p>10&&p<=20) r=10*0.1+(p-10)*0.075; else if(p>20&&p<=40)
r=10*0.1+10*0.075+(p-20)*0.05; else if(p>40&&p<=60)
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*f1<0) { b=x; f2=f; } else { a=x; f1=f; } }while(fabs(f)>=1e-6); printf("%6.2f\n",x); return 0; } (10). #include<stdio.h>
printf("%f\n",r); return 0; } (5). #include <stdio.h> int main() { char c; while((c=getchar())!='\n') { if(c>='a'&&c<='z') c=c-32; putchar(c);
} return 0; } (6). #include<stdio.h> int main() { int m,k=2; printf("输入一个正整数:\n"); scanf("%d",&m); while(k<m) if(m%k==0) { printf("%4d",k); m=m/k; } else k++; printf("%4d\n",m); return 0; } (7). #include<stdio.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). #include<stdio.h> int main()
《C语言程序设计》(清华大学出版社)书后习题参考答案

第一步部分简单程序设计P55.课堂实践(1)#include<stdio.h>main(){printf(“**********\n”); printf(“**********\n”); printf(“**********\n”);}(2)#include<stdio.h>main<> /*main()*/{printf(“Hello,World.\n);}P95.课堂实践(1)#include<stdio.h>main(){char a=116,b=119,temp;printf(“a=%c,b=%c\n”,a,b); temp=a;a=b;b=temp;printf(“a=%c,b=%c\n”,a,b); }(2)功能:交换x,y的值;#include<stdio.h> main(){ int x,y;x=5; y=10;x=x+y;y=x-y;x=x-y;printf(“%d,%d”,x,y);}(3)c:dec=120,oct=170,hex=78,ASCLL=x 4、输出内容向左靠齐12123.14159260000000000000000000000000 3.14159260000000000000000000000000P115.课堂实践(1)①3.0-(3.0*4)/(4+2)#include<stdio.h>main(){ float x;x=3.0-(3.0*4)/(4+2);printf(“%f”,x);}②1/2*(2*3+2/(2*2*2))#include<stdio.h>main(){ float x;x=1/2*(2*3+2/(2*2*2));printf(“%f”,x);}(2)%(3)B(4)#include<stdio. h>main{x,y,z;/*没有数据类型*/x+y=5;/*赋值表达式左边不能是表达式,应为一个变量*/printf("x+y=,z=",x,y,z);/*没有输入格式符*/}P135.课堂实践(1)-14(2)(1)x=4,8 (2)8,8(3)#include<stdio.h>mian(){ int x=10;printf(“当x变量的初值为%d时,进行+=运算后的结果为%d”,x,x+=x);printf(“当x变量的初值为%d时,进行-=运算后的结果为%d”,x,x-=x);printf(“当x变量的初值为%d时,进行*=运算后的结果为%d”,x,x*=x);printf(“当x变量的初值为%d时,进行/=运算后的结果为%d”,x,x/=x);}P13习题一、1、C2、C3、A 二、5,-46,12,20P185.课堂实践(1)#include<stdio.h> main(){ int x,y;scanf(“%d%d”,&x,&y); if(x>y)printf(“x>y”); else if(x<y)printf(“x<y”); elseprintf(“x=y”);}(2)#include<stdio.h> main(){ int x,y;scanf(“%d”,&x);if(x>0) y=1;if(x==0) y=0;if(x<0) y= -1;printf(%d”,y);}P215.课堂实践(1)C (2)B (3)B (4)0.500000 (5)不能:#include<stdio.h>main( ){int x,y,z,max;if(z>y){if(z>x)max=z;else max=x;}else if (y>x)max=y;else max=x;printf("\nmax=%d ",max);}P23 略P24习题一、1、D 2、D 3、C 4、D 5、B 6、B 7、B二、1、y%2==0 2、&& || !3、(x>2&&x<3)||(x<-10)4、(ch>=’A’&&ch<=’z’)ch=ch-32;5、1,06、F三、1、#include<stdio.h>main(){int a;scanf("%d",&a);if(a%5==0&&a%7==0)printf("yes");else printf("no");}2、#include<stdio.h>main(){int m;scanf("qingshuru:%d",&m);if((m%4==0&&m%100!=0)||m%400==0)printf("%d shirunnian",m);else printf("%d bushirunnian",m);}3、#include<stdio.h>#include<math.h>main(){ floata,b,c,dise,x1,x2,realpart,imagpart;scanf(“%f%f%f”,&a,&b,&c);printf(“The equation”);if(fabs(a)<=0)printf(“is not a quadratic\n”);else{ dise=b*b-4*a*c;if(dise<=0)printf(“has two aqualroots:%8.4f\n”,-b/(2*a));elseif(dise>0){ x1=(-b+sprt(disc))/(2*a);x2=(-b-sprt(disc))/(2*a);printf(“has distinct real roots:%8.4f and%8.4f\n”,x1,x2);}else{realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf(“has complex roots:\n”);printf(“%8.4f+%8.4f\n”,realpart,im agpart);printf(“%8.4f-%8.4f\n”,realpart,imagpart);}P285、课堂实践(1)#include<stdio.h>main( ){int key;char ch;printf("*****\n");scanf("%d",&key);printf("????????:\n");while((ch=getchar())!='\n')(ch-key)>122?putchar(ch+122-33-key): ((ch-key)<33?putchar(ch-122-key):putchar (ch-key));}(2)#include<stdio.h>main(){ int i; /*i没有赋值*/int i=1;printf(“output ten numbers:\n”);while(i<=10)printf(“%3d”);/*没有输出参数*/ {printf(“%3d”,i);i++; /*应加{}组成复合语句*/ i++;}}P304. 课堂实践(1)#include<stdio.h>main(){ int a,s=0;do{ scanf(“%d”,&a);s+=a;}while(a!=-1);printf(“%d”,s);}(2)#include<stdio.h>main(){ int a,b,r,t,maxB;scanf(“%d%d”,&a,&b);if(a<b){ t=a;a=b;b=t;}r=a%b;while(r!=0){ a=b;b=r;r=a%b;}maxB=b;printf(“maxB is %d”,maxB);}P336. 课堂实践(1)4(2)①#include<stdio.h>main(){int i,j;printf("**九九乘法表**");for(i=1;i<10;i++){ for(j=1;j<=i;j++)printf("%d*%d=%d\t",j,i,i*j);printf("\n");}}②#include<stdio.h>main() {int i=1,j;while(i<10){ j=1;while(j<=i){ printf("%d*%d=%d\t",j,i,i*j);j++;}printf("\n");i++;}}③#include<stdio.h>main(){int i=1,j;do{ j=1;do{ printf("%d*%d=%d\t",j,i,i*j);j++;}while(j<=i);printf("\n");i++;}while(i<10);}(3)#include<stdio.h>main(){ int x;scanf("%d",&x);while(x>0){ printf("%d",x%10);x/=10;prtntf(" ");}}P33习题【参考答案】一、1、D 2、C 3、A 4、A 5、D 6、C 7、D 8、D 9、C 10、B二、1、36 2、3 4、1 3 5、 i<=10 if(j%6!=0)三、1、#include<stdio.h>main(){int a,sum=0;for(a=1;a<=100;a++)if(a%2==1)sum=sum+a;printf("%d",sum);}2、#include<stdio.h> main(){ int i,j,s;int t;int k[100];for(i=1;i<=1000;i++) {s=0;t=0;for(j=1;j<i;j++)if(i%j==0){s+=j;k[t++]=j;}if(i==s){printf("%d shiwanshou %d=",i,i);for(;t>0;)if(t>1)printf("%d+",k[--t]);else printf("%d",k[--t]);printf("\n");}}3、#include<stdio.h>main(){ int y,t=0;for(y=1008;y<=2008;y++)if(y%4==0&&y%100!=0||y%400==0) { printf(“%d\t”,y);t++;if(t%5==0)printf(“\n”);}}4、#include<stdio.h>main(){ int t,i,x,max,min;scanf(“%d”,&t);max=min=t;for(i=1;i<10;i++){scanf(“%d”,&x);if(max<=x)max=x;if(min>=x)min=x;}printf(“%d\t%d\n”,max,min);}5、#include<stdio.h>main(){ int i,j,p;for(i=1;i<=4;i++){ for(p=1;p<=i;p++)printf(“”);for(j=7;j>=2*i-1;j--)printf(“*”); printf(“\n”);}}P395.课堂实践(1)float compare (float a,b,c) {float k;if (a>=b){ k=a;if(a>=c)k=a;elsek=c;}else{k=b;if(b<=c)k=c;return k;}}(2)最大公约数:int zxgys (int m,n){int i,j,k;if(m>=n)k=n;elsek=m;for(i=1;i<=k;i++){if(m%i==0&&n%i==0) j=i;}return j;}最小公倍数:int zdgbs (int a,int b) {int x,y,k;if(a>=b)k=a;elsek=b;for(x=a*b;x>=k;x- -){if(x%a==0&&x%b==0)y=x;}return y;}P41 课堂实践(1)#include<stdio.h>float zhouchang (float x) {float l;l=2*3.14*x;return l;} float mianji (float y){float s;s=3.14*y*y;return s;}voide main (){float r;scanf("%f",&r);float m,n;m=zhopuchang (r);n=mianji (r);printf("m=%f\nn=%f\n",m,n); }(2)float add (float x,float y) {Float z;Z=x+y;Return z;}float sub(float h,float k) {float w;w=h-k;return w;}float mul(float m,n){float i;i=m*n;return i;}float div(float e,f) {float g;g=e/f;return g;}void main(){float p,g;scanf("%f%f",&p,&g); char a;lscanf("%c",&a);float j;if(a=='+'){j=add(p,g);}else if(a=='-'){j=sub(p,g)}else if (a=='*'){j=mul(p,g)}else if (a=='/'){j=div(p,g)}printf("'%f",5);}P43习题一.选择1.B 2.D 3.D 4.A 5.C 6.B 7.B 8.B 9.A 10.D 二.填空1.函数首部和函数体2.void add; float add;3.1,1,14. 1,2,3;5. break; scanf(“%c”,&ch);6. x=4 y=9 z=57.first:14 ,4 ,12second:26 ,4 ,12third:26 ,3 ,68. a+b=99. 810. 125三.1.#include<stdio.h>#include<math.h>fun (int x,int y){int m;m=x-y;m=abs(m);return m;}2. void deb (int x){int i;for(i=2;i<=x;i++){if(x%i==0)break;}if(i>=x)printf("%d is su shu\n",x);}3. 略第二部分程序设计算法示例P676.(1)#include<stdio.h>main(){int b,m,l;for(b=1;b<20;b++){for(m=1;m<33;m++){l=100-m-b;if(5*b+3*m+l/3==100)printf("%d%d%d\n",b,m,l)}}}(2) #include<stdio.h> main(){int a,b,c,d;for(a=1;a<10;a++){for(b=1;b<20;b++){ for(c=1;c<50;c++){d=40-a-b-c;if(10*a+5*b+2*c+d==100) printf("%d,%d,%d,%d\n",a,b,c,d);}}}}P705.(1)#include<stdio.h>main(){int a,b,c;c=2;for(a=2;a<=3;a++){if(a==c)continue;b=6-a-c;if(b==c)continue;if(a==3)printf("a与z是对手\n");if(b==1)printf("b与x是对手\n");printf("c与y是对手\n");}}5.(2)#include<stdio.h>main (){int d=5;int a,b,c,e,f,g;for(a=1;a<=7;a++){if(a==d)continue;for(b=1;b<=7;b++){if(b==a||b==d)continue;for(c=1;c<=7;c++) {if(c==a||c==b||c==d)continue;for(e=1;e<=7;e++){if(e==a||e==b||e==c||e==d)continue;for(f=1;f<=7;f++){ if(f==e||f==d||f==c||f==b||f==a) continue;g=(23-a-b-c-e-f);if(g==f||g==e||g==d||g==c||g==b||g==a) continue;}}}}}printf("a=%d\nb=%d\nc=%d\nd=%d\ne=%d \nf=%d\ng=%d\n",a,b,c,d,e,f,g);}5.(3) 略P71习题一、1. B2. D3. C4.C,D二.1.2*x+4*y==90;2.14三.1.#include<stdio.h>main (){int a,b,c;for(a=1;a<=9;a++){for(b=0;b<=9;b++){for(c=0;c<=9;c++){if(a*a*a+b*b*b+c*c*c==100*a+10*b+c) printf("%d%d%d\n",a,b,c);}}}}2#include<stdio.h>main (){int bh,mh,lh;for(bh=1;bh<=40;bh++){for(mh=1;mh<=50;mh++){lh=100-bh-mh;if(3*bh+2*mh+lh/2) printf("bh=%d\nmh=%d\nlh=%d\n");}}}P755.#include<stdio.h>main (){float x1,x2;x1=1.5;x2=(x1+1/x1)/2;while(x1=x2){x1=x2;x2=(x1+1/x1)/2;}printf("%f",x2);}P765.(1)略5.(2)#include<stdio.h>main (){int day=1;int x1=0,x=0;float j;while(x1<100){x=day*2;day++;x1+=x;}j=x1*0.8/(day-=1);printf("%f",j);}P76习题一1.(1)B(2)D2. (1)C (2)A二1.(1)x1==0(2) x/0.5-22.sum%4==0三略P80.5、课堂实践#include <stdio.h>void main(){ long int f1,f2;int i;f1=1; f2=1;for(i=1;i<=20;i++){printf(“%4ld %4ld”,f1,f2); if(i%2==0) printf(“\n”);f1=f1+f2; f2=f2+f1;} }P81.5、课堂实践#include <stdio.h>#include <math.h>int s(int a,int b){ int g;if( b= =0)g=1;elseg=pow(a,b);return(g);}main(){ int x,y,m;Scanf(“%d,%d”,&x,&y);m=s(x,y);printf(“%d”,m);}P81.习题一、1、(1) age(n-1)+2 (2)age(n)2、计算Fibonacci数列第7项元素 k=13二、略P85.略P93.5、课堂实践(1) D (2) C (3) C (4)D(5)#include <stdio.h>main(){ int a[5],s[5];int i;for(i=0;i<5;i++)scanf(“%d”,&a[i]);for(i=0;i<5;i++){ s[i]=a[i]+5;printf(“%d”,s[i]);}}P96.5、课堂实践(1)#include <stdio.h>void main(){ inta[10]={265,301,751,129,937,863,742,694,7 6,438};int i,j,t;for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){ t=a[i];a[i]=a[i+1];a[i+1]=t;}for(i=0;i<10;i++)printf(“%d ”,a[i]);}(2).补充直接插入排序原理。
C语言程序设计与实践-全书习题及参考答案-C语言程序设计与实践-于延-清华大学出版社

C)可以把if定义为用户标识符,但不能把define定义不用户标识符
D)define和if都不能定义为用户标识符
二、填空题
01.一个C程序至少包含一个________函数。
02.在C语言中,用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为________。
C) C程序书写时,一个语句可分成几行书写
D) C程序书写时每行必须有行号
21.下列标识符中,合法的标识符是_______。
A)-abc1 B)1abcC)_abc1D)for
22.以下叙述正确的是________。(参考代码:XT_01_01_22.c)
A)可以把define和if定义为用户标识符
*
***
*****
*******
*********
03.1982年9月,美国卡内基-梅隆大学的斯科特·法尔曼教授发明了表情符号“:-)”,以表示在电子布告栏发表话题时开玩笑的话。以下是互联中常用的表情符号:
:-)微笑:-(不悦;-) 使眼色:-D 开心
:-O惊讶o_O 讶异^_^ 高兴:-P 开玩笑
A)longB)_2TestC)3DmaxD)A.dat
19.C语言程序的执行,总是起始于_________。
A)程序中的第一条可执行语句B)程序中的第一个函数
C)main函数D)包含文件中的第一个函数
20.下列说法中正确的是()。
A) C程序书写时,不区分大小写字母
B) C程序书写时,一行只能写一个语句
8-)戴眼镜者的微笑@_@ 疑惑、晕头转向
请编程输出一些表情符号,以表达你此刻的心情。(参考代码:XT_01_03_03.c)
C语言程序设计教程 清华大学出版社 陈明主编 第4章答案

第4章习题解答一、选择题1.在C语言中,函数返回值的类型最终取决于A)函数定义时的函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主调函数所传递的实参类型D)函数定义时形参的类型解析:函数返回值类型最终取决于定义函数时所定义的函数类型。
答案:A2.设函数Fun()的定义形式为:void Fun(char ch, float x){}则以下对函数Fun()的调用语句中,正确的是。
A)Fun("abc", 3.0); B)t = Fun('D', 16.5);C)Fun('65', 2.8); D)Fun(32, 32);解析:选项A中"abc"是字符串,与形参不匹配:由于Fun函数的返回值类型为void,所以选项B中进行了赋值操作是不正确的;在选项C中,'65'是不合法的字符形式,单引号中应该是单个字符。
只有选项D才是合法的函数调用形式。
答案:D3.有以下程序:/* 文件路径名:ex4_1_3\main.c */#include <stdio.h> /* 标准输入/输出头文件*/int f1(int x, int y) { return x > y ? x : y; }int f2(int x, int y) { return x > y ? y : x; }int main(void) /* 主函数main() */{int a = 4, b = 3, c = 5, d = 2, e, f, g; /* 定义变量*/e = f2(f1(a, b), f1(c, d));f = f1(f2(a, b), f2(c, d));/* 调用函数*/g = a + b + c + d - e - f; /* 算术运算*/printf("%d,%d,%d\n", e, f, g); /* 输出e,f,g */return 0; /* 返回值0, 返回操作系统*/}程序运行后的输出结果是。
C语言程序设计(郑莉)课后习题答案

C++语言程序设计(清华大学郑莉)课后习题答案第一章概述1-1 简述计算机程序设计语言的发展历程。
解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。
1-2 面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。
面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。
通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。
因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
C++语言是目前应用最广的面向对象的编程语言。
1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c语言程序设计答案---潭2《C语言程序设计教程(第二版)》习题答案说明1. 本习题答案是我自己做的,错误和疏漏在所难免。
编程题全部调试通过,但选择题和填空题不敢保证全对。
2. 凡未指明解题所用的程序设计语言的,均指C语言。
3. 凡未指明执行程序所需的操作系统的,均可在DOS下执行。
4. 本文中文字下面划线的表示输入。
第1章程序设计基础知识一、单项选择题(第23页)1-4.CBBC 5-8.DACA二、填空题(第24页)1.判断条件2.面向过程编程3.结构化4.程序5.面向对象的程序设计语言 7.有穷性 8.直到型循环 9.算法 10.可读性 11.模块化 12.对问题的分析和模块的划分三、应用题(第24页)2.源程序:main(){int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */printf("cock hen chick");for(i=1;i<=20;i++)for(j=1;j<=33;j++)for(k=1;k<=33;k++)if (i+j+k*3==100&&i*5+j*3+k==100)printf(" %d %d %d",i,j,k*3);}执行结果:cock hen chick4 18 788 11 8112 4 843.现计算斐波那契数列的前20项。
递推法源程序:main(){long a,b;int i;a=b=1;for(i=1;i<=10;i++) /*要计算前30项,把10改为15。
*/{printf("%8ld%8ld",a,b);a=a+b;b=b+a;}}递归法源程序:main(){int i;for(i=0;i<=19;i++)printf("%8d",fib(i));}fib(int i){return(i<=1?1:fib(i-1)+fib(i-2));}执行结果:1 123 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 4.源程序:#include "math.h";main(){double x,x0,deltax;x=1.5;do {x0=pow(x+1,1./3);deltax=fabs(x0-x);x=x0;}while(deltax>1e-12);printf("%.10f",x);}执行结果:1.32471795725.源程序略。
(分子、分母均构成斐波那契数列)结果是32.660260798646.源程序:main(){int a,b,c,m;printf("Please input a,b and c:");scanf("%d %d %d",&a,&b,&c);if(a<b){m=a;a=b;b=m;}if(a<c){m=a;a=c;c=m;}if(b<c){m=b;b=c;c=m;}printf("%d %d %d",a,b,c);}执行结果:Please input a,b and c:123 456 789789 456 1237.源程序:main(){int a;scanf("%d",&a);printf(a%21==0?"Yes":"No");}执行结果:42Yes第2章 C语言概述一、单项选择题(第34页)1-4.BDCB 5-8.AABC二、填空题(第35页)1.主2.C编译系统3.函数函数4.输入输出5.头6. .OBJ7.库函数8.文本三、应用题(第36页)5.sizeof是关键字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是标识符。
8.源程序:main(){int a,b,c;scanf("%d %d",&a,&b);c=a;a=b;b=c;printf("%d %d",a,b);}执行结果:12 3434 12第3章数据类型与运算规则一、单项选择题(第75页)1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD21-25.ADDBC 26-27.AB二、填空题(第77页)1.补码2.±(10-308~10308)3.int(整数)4.单目自右相左5.函数调用6.a或b 7.1 8.65,89三、应用题(第78页)1.10 92.执行结果:11121第4章顺序结构程序设计一、单项选择题(第90页)1-5.DCDAD 6-10.BACBB二、填空题(第91页)1.一;2. 5.1690003.(1)-2002500 (2)I=-200,j=2500 (3)i=-200j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3 7.3 8.scanf("%lf%lf%lf",&a,&b,&c); 9. 13 13.000000,13.000000 10 .a=a^c;c=c^a;a=a^c;(这种算法不破坏b的值,也不再定义中间变量。
)三、编程题(第92页)1.仿照教材第27页例2-1。
2.源程序:main(){int h,m;scanf("%d:%d",&h,&m);printf("%d",h*60+m);}执行结果:9:235633.源程序:main(){int a[]={-10,0,15,34},i;for(i=0;i<=3;i++)printf("%d\370C=%g\370F\t",a[i],a[i]*1.8+32);}执行结果:-10℃=14°F0℃=32°F 15℃=59°F34℃=93.2°F 4.源程序:main(){double pi=3.14159265358979,r=5;printf("r=%lg A=%.10lf S=%.10lf",r,2*pi*r,pi*pi*r);}执行结果:r=5 A=31.4159265359 S=49.34802200545.源程序:#include "math.h";main(){double a,b,c;scanf("%lf%lf%lf",&a,&b,&c);if (a+b>c&&a+c>b&&b+c>a){double s=(a+b+c)/2;printf("SS=%.10lf",sqrt(s*(s-a)*(s-b)*(s-c)));}else printf("Data error!");}执行结果:4 5 6SS=9.92156741656.源程序:main(){int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56; printf("a=%3d,b=%-4d,c=**%dd=%ge=%6.2ff=%-10.4f**",a,b,c,d,e,f);}7.源程序:main(){int a,b,c,m;scanf("%d %d %d",&a,&b,&c);m=a;a=b;b=c;c=m;printf("%d %d %d",a,b,c);}执行结果:5 6 76 7 58.源程序:main(){int a,b,c;scanf("%d %d %d",&a,&b,&c);printf("average of %d,%d and %d is %.2f",a,b,c,(a+b+c)/3.);执行结果:6 7 9average of 6,7 and 9 is 7.339.不能。
修改后的源程序如下:main(){int a,b,c,x,y;scanf("%d %d %d",&a,&b,&c);x=a*b;y=x*c;printf("a=%d,b=%d,c=%d",a,b,c);printf("x=%d,y=%d",x,y);}第5章选择结构程序设计一、单项选择题(第113页)1-4.DCBB 5-8.DABD二、填空题(第115页)1.非0 02.k==03.if (abs(x)>4) printf("%d",x);else printf("error!");4.if((x>=1&&x<=10||x>=200&&x<=210)&&x&1)printf("%d",x);5.k=1 (原题最后一行漏了个d,如果认为原题正确,则输出k=%。
)6. 8! Right!117.$$$a=08.a=2,b=1三、编程题(第116页)1.有错。
正确的程序如下:main(){int a,b,c;scanf("%d,%d,%d",&a,&b,&c);printf("min=%d",a>b?b>c?c:b:a>c?c:a);}2.源程序:main(){unsigned long a;scanf("%ld",&a);for(;a;printf("%d",a%10),a/=10);}执行结果:12345543213.(1)源程序:main(){int x,y;scanf("%d",&x);if (x>-5&&x<0)y=x;if (x>=0&&x<5)y=x-1;if (x>=5&&x<10)y=x+1;printf("%d",y);}(2)源程序:main(){int x,y;scanf("%d",&x);if(x<10) if(x>-5) if(x>=0) if(x>=5)y=x+1;else y=x-1; else y=x;printf("%d",y);}(3)源程序:main(){int x,y;scanf("%d",&x);if(x<10) if(x>=5)y=x+1;else if(x>=0)y=x-1;else if(x>-5)y=x;printf("%d",y);}(4)源程序:main(){int x,y;scanf("%d",&x);switch(x/5){case -1:if(x!=-5)y=x;break;case 0:y=x-1;break;case 1:y=x+1;}printf("%d",y);}4.本题为了避免考虑每月的天数及闰年等问题,故采用面向对象的程序设计。