c++课后习题答案

合集下载

C语言程序设计第2版课后习题答案(贾宗璞 许合利人民邮电-第2版)

C语言程序设计第2版课后习题答案(贾宗璞 许合利人民邮电-第2版)

C语言习题答案第1章1.选择题(1) C (2) B (3) A2.填空题(1)main (2) main (3) 有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性(4) 顺序、分支和循环(5) 自顶向下,逐步细化、模块化设计、结构化编码第2章1.选择题12 345 6 7 890 1234 5ACCDA D C ABA BBDDB2、填空题(1) 数字、字母、下划线(2)0 (3) 4、8 (4) (a+b)*c/(a-b) (5) -60 (6)-16 (7)9 (8)6、4、2 (9)0 (10)10、6 (11)5.500000 (12)12、4 (13)0 (14)16 (15)6.63、编程题(1)编写一个程序求各种类型数据的存储长度。

#include <stdio.h>main(){printf("int:%d byte\n",sizeof(int));printf("short int:%d byte\n",sizeof(short int));printf("long int:%d byte\n",sizeof(long int));printf("float:%d byte\n",sizeof(float));printf("double:%d byte\n",sizeof(double));printf("long double:%d byte\n",sizeof(long double));printf("char:%d byte\n",sizeof(char));}(2)#include <stdio.h>#define RAT 1.60934main(){float k;printf("input the km:");scanf("%f",&k);printf("mile:%f\n",k/RAT);}第3章1.选择题12 345 67 890(1) ~(10):DDCDD DCDCC2.解析题(1) x=170,x=ㄩㄩㄩ170,x=ㄩㄩㄩ252,x=ㄩㄩㄩㄩaa,x=ㄩㄩㄩ170x=170,x=170ㄩㄩㄩ,x=ㄩㄩㄩ170,x=%6da=513.789185,a=ㄩㄩ513.79,a=513.78918457,a=513.78918457 (2) a=3ㄩb=7x=8.5ㄩy=71.82c1=Aㄩc2=a3.编程题(1)main(){int x,y;scanf("%d%d",&x,&y);printf("商数=%d,余数=%d",x/y,x%y);}(2)main(){double x,y,z,avg;scanf("%lf%lf%lf",&x,&y,&z);avg=(x+y+z)/3;printf("%.1f",avg);}第4章1.选择题(1)~(10)CCAAD CCABD2.填空题(1)①a>0&&b>0||a>0&&c>0||b>0&&c>0②a<b||a<c③a>5||-a>5④(a<=0)&&((int)a)!=a⑤(a%b)!=0(2)①!(x>0) ②1 ③!(x>=0&&x<=5)(3)3、2、2(4) ch>='A'&&ch<='Z' ch=ch-32(5) x<=10&&x>2 x<=2&&x>-1 y=-1 ;(6) a+b>c&&a+c>b&&b+c>a a==b&&a==c a==b||a==c||b==c(7) x<0 c=x/10 y!=-23.编程题(1)#include <stdio.h>main(){int x;printf("please input a number:");scanf("%d",&x);if(x%2==0) printf("x is a even number");else printf("x is a odd number");}(2)#include <stdio.h>main(){int x,y;printf("please input a number:");scanf("%d",&x);if(x>-5 && x<0) { y=x; printf("%d",y); }else if(x==0) { y=x-1; printf("%d",y); }else if(x>0 && x<10) { y=x+1; printf("%d",y); }else printf("the number is error");}(3)#include <stdio.h>main(){ int a,m;printf("please input a number:");scanf("%d",&a);switch(a/10){ case 0:case 1:case 2:m=1;break;case 3:m=2;break;case 4:m=3;break;case 5:m=4;break;default:m=5;break;}printf("%d",m);}(4)#include <stdio.h>main(){float price,tax;printf("please input the price of product:");scanf("%f",&price);if(price>=10000) tax=price*0.05;else if(price>=5000) tax=price*0.03;else if(price>=1000) tax=price*0.02;else tax=0;printf("%f",tax);}(5)#include <stdio.h>main(){float score;printf("please input the score of student:");scanf("%f",&score);if(score>=85) printf("VERY GOOD");else if(score>=60) printf("GOOD");else printf("BAD");}(6)#include <stdio.h>main (){int x,y,z;printf("input two number:");scanf("%d%d",&x,&y);if(x<10 || x>99 || y<10 || y>99)printf("input data error!\n");else{ z=(x/10)*1000+(y/10)*100+(x%10)*10+y%10;printf("%d\n",z);}}第5章1.选择题(1)d (2) c (3)a (4)d (5)a (6)d (7)d (8)b (9)d (10)b (11)c (12)a(13)d (14)d(15)c2.填空题(1) fahr celsius=5.0/9*(fahr-32) fahr+=step (2) 5、4、6 (3) 3*i-2 (4) y-- z*=x (5) 8ㄩ5ㄩ2 (6) j++ i%j==0 j>=i(或j==i) (7)sum<k sum==k j-2 (8) s=0 p=1 j<=i3.改错题(1) 第一处改正:For改为for第二处改正:for(k=1;k<=4;k++)或for(k=0;k<4;k++)第三处改正:ave=sum/4改为ave=sum/4.0(2) 第一处改正:j<=9第二处改正:m=100*i+10*j+k(3) 第一处改正:temp=1第二处改正:temp >=eps第三处改正:r*2(4) 第一处改正:&n第二处改正:== ==(5) 第一处改正:t=m/10改为t=m%10第二处改正:t=0改为t==0第三处改正:m=m%10改为m=/104.编程题(1) 分式累加和。

C语言课后习题答案(最终)

C语言课后习题答案(最终)

第0章习题1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数:(1)128 (2)511 (3)1024 (4)65535 (5)1048575答:(1)10000000、200、80(2)111111111、777、1FF(3)10000000000、2000、400(4)1111111111111111、177777、FFFF(5)11111111111111111111、3777777、FFFFF2. 将下列二进制数转化为十进制数和十六进制数:(1)1100110101B (2)101101.1011B答:(1)821、335(2)45.6875、2D.B3. 写出下列数的原码、反码、补码:15、-20、-27/32答:(1)00001111、00000000、00001111(2)10010100、11101011、11101100(3)1.1101100、1.0010011、1.00101004. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少?答:0~65535、-128~127、-32768~327675.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。

答:结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。

如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。

6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么?答:C语言程序属于应用程序,程序代码本身存放在应用程序区,程序运行时处理的数据存放在应用程序数据区。

计算机的内存空间主要分为3个区:系统程序区、应用程序区和数据区,其中数据区又分为系统程序数据区和应用程序数据区两类。

C++课后习题答案

C++课后习题答案
A(); A(int i,int j); void print( ); private: int a,b; }; A::A( )
-3-
{ a=b=0; cout<<”Default constructor called.\n”;
} A::A(int i,int j) { a=i; b=j; cout<<”Constructor called.\n”; } void A::print() { cout<<”a=”<<a<<”,b=”<<b<<endl; } void main() { A m,n(4,8); m.print(); n.print(); } Default constructor called. Constructor called. A=0,b=0 A=4,b=8 2. #include<iostream.h> class B { public: B(); B(int i,int j); void printb( ); private: int a,b; };
-6-
5. #include<iostream.h> class Set { public:
Set(){PC=0;} Set(Set &s); void Empty() {PC=0;} int IsEmpty() {return PC= =0;} int IsMemberOf(int n); int Add(int n); void Print(); friend void reverse(Set *m); private: int elems[100]; int PC; }; int Set::IsMemberOf(int n) { for (int i=0;i<PC;i++) if(elems[i]= =n)

《C语言程序设计》课后习题答案(第四版)

《C语言程序设计》课后习题答案(第四版)

第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)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.h>int 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.h>int 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程序设计谭浩强完整版课后习题答案
a=5;
b=4;
sum=a+b;
printf("The sum is %d .\n",sum);
return0;
}
P008调用函数比较两个数的大小.
#include<>
intmain()
{
intmax(intx,inty);inta,b,c;
scanf("%d,%d",&a,&b);c=max(a,b);printf("The max is %d .\n",c);
{
doublea,b,c,disc,x1,x2,p,q;
scanf("%lf %lf %lf",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/*a);
q=sqrt(disc)/*a);
x1=p+q;
x2=p-q;
printf("x1=%\nx2=%",x1,x2);
{
floatoutput_fah;
output_fah=5)*input_cen+32;returnoutput_fah;
}
intmain()
{
intchoice;
floatinput_fah,input_cen,output_fah,output_cen;printf("F_to_C press <1> and C_to_F press <2> !\n");
scanf("%d",&n);
if(n%3==0&&n%5==0)printf ("Can be devide by 3 and 5 !\n");

c语言第二章课后习题答案

c语言第二章课后习题答案

第3章数据类型、运算符与表达式习题答案一、选择题1.以下表示正确常量的是()。

(A) E-5 (B) 1E5.1 (C) 'a12' (D) 32766L【答案】D2.若有定义:int a=1,b=2,c=3,d=4,x=5,y=6; 则表达式(x=a>b)&&(y=c>d) 的值为()。

(A)0 (B) 1 (C) 5 (D) 6【答案】A3.以下()是正确的字符常量。

(A)"c" (B) '\\'' (C) 'W' (D) "\32a"【答案】C4.以下()是不正确的字符串常量。

(A) 'abc' (B) "12'12" (C) "0" (D) " "【答案】A5.以下是正确的浮点数的是()。

(A)e3 (B) .62 (C) 2e4.5 (D) 123【答案】B6.若有定义:int a=2; 则正确的赋值表达式是()。

(A)a-=(a*3) (B) double(-a) (C) a*3 (D) a*4=3【答案】A7.若有定义:int x=1111,y=222,z=33;则语句printf("%4d+%3d+%2d", x, y, z);运行后的输出结果为()。

(A)111122233 (B)1111,222,33(C)1111 222 33 (D)1111+222+33【答案】D8.已有如下定义和输入语句:int a,b;scanf("%d,%d",&a,&b);若要求a、b的值分别为11和22,正确的数据输入是哪一个?()(A)11 22 (B)11,22 (C)a=11,b=22 (D)11;22【答案】B9.已有如下定义和输入语句,int a; char c1,c2;scanf("%d%c%c",&a,&c1,&c2);若要求a、c1、c2的值分别为40、A和A,正确的数据输入是()。

C语言课后习题答案

C语言课后习题答案

1.1选择题:⑴一个C程序的执行是(A)。

A)从main()函数开始,直到main()函数结束B)从第一个函数开始,直到最后一个函数结束C)从第一个语句开始,直到最后一个语句结束D)从main()函数开始,直到最后一个函数结束⑵计算机能直接执行的语言是(B)。

A)汇编语言B)机器语言C)高级语言D)A和B⑶一个C程序是由(C)。

A)一个主程序和若干子程序组成B)若干过程组成C)一个或多个函数组成D)若干子程序组成⑷下列说法正确的是(B )。

A)C程序书写格式限制严格,一行内必须写一个语句B)C程序书写比较自由,一个语句可以分行写在多行上C)C程序书写格式限制严格,要求一行内必须写一个语句,并要求行号D)C程序中一个语句不可以分写在多行上1.2填空题:⑴构成C语言程序的基本单位是函数。

⑵C语言源程序文件的后缀是.c,经过编译后,生成文件的后缀是,obj,经过连接后,生成文件的后缀是.exe。

⑶在TURBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是.exe。

⑷一个C语言程序必须有而且只能有一个主函数,它的函数名为main。

⑸一个函数有两部分组成,第一部分称为函数首部;第二部分称为函数体。

⑹函数体由符号{开始,用符号}结束。

函数体的前面是声明部分,其后是执行部分。

1.3上机编辑、调试、运行下列程序,发现错误,并改正之。

/*求1 + 2 + 3 + ……+ 10的和*/#include <stdio.h>main(){int sum,n;sum = 0;n = 1;while(n < 10){sum = sum + n;n = n + 1;}printf("sum = %d \n",sum);}2.1选择题⑴ 在以下标识符中,( B )是合法的用户标识符。

A ) a#bB ) getchC ) voidD ) ab*⑵ 不合法的八进制数是( B )。

C语言课后习题答案

C语言课后习题答案

《C语言程序设计》复习题第1章C语言程序设计概述一、选择题1.下列关于计算机语言的叙述中,正确的是___C____。

A.在计算机语言中,只有机器语言属于低级语言B.高级语言的源程序可以被计算机直接执行C.C语言属于高级语言D.机器语言是与所有机器无关的语言2.源程序TEST.C经编译产生的目标文件和连接后产生的可执行文件是___B____。

A.TEST.BAK和TEST.OBJ B.TEST.OBJ和TEST.EXEC.TEST.EXE 和TEST.C D.TEST.BAK和TEST.EXE3.一个C程序的执行是从___A____。

A.本程序的main函数开始,到main函数结束B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序文件的第一个函数开始,到本程序main函数结束4.以下叙述正确的是___C____。

A.在C程序中,main函数必须位于程序的最前面B.程序的每行中只能写一条语句C.C语言本身没有输入输出语句D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误5.以下叙述不正确的是___C____。

A.一个C源程序可由一个或多个函数组成B.一个C源程序必须包含一个main函数C.在C程序中,注释说明只能位于一条语句的后面D.C程序的基本组成单位是函数6.一个C语言程序是由___B____。

A.一个主程序和若干子程序组成B.函数组成C.若干过程组成D.若干子程序组成7.关于C语言程序书写规则说法中正确的是___D____。

A.程序语句必须占一行B.不区分大小写C.每行必须有行号D.每条语句用分号结束8.下面关于算法的说法,错误的是___B____。

A.算法必须有输出,但不一定有输入B.算法必须在计算机上用某种语言实现C.算法必须在有限步执行后能结束D.算法的每一步骤必须有确切的定义9.结构化程序设计规定的3种基本控制结构是___D____。

C语言课后习题答案(最终)

C语言课后习题答案(最终)

C语言课后习题答案(最终)第0章习题1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数:(1)128 (2)511 (3)1024 (4)65535 (5)1048575 答:(1)10000000、200、80 (2)111111111、777、1FF (3)10000000000、2000、400(4)1111111111111111、177777、FFFF (5)11111111111111111111、3777777、FFFFF2. 将下列二进制数转化为十进制数和十六进制数:(1)1100110101B (2)101101.1011B 答:(1)821、335 (2)45.6875、2D.B3. 写出下列数的原码、反码、补码:15、-20、-27/32 答:(1)00001111、00000000、00001111 (2)10010100、11101011、11101100 (3)1.1101100、1.0010011、1.00101004. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少?答:5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。

答:结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。

如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。

6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么?答:0~65535、-128~127、-32768~32767C语言程序属于应用程序,程序代码本身存放在应用程序区,程序运行时处理的数据存计算机的内存空间主要分为3个区:系统程序区、应用程序区和数据区,其中数据区放在应用程序数据区。

c语言课后习题

c语言课后习题
13. a+=a;24, a-=2;10, a*=2+3;60, a%=(n%=2);0, a/=a+a;0, a+=a-=a*=a;0
14. 8
15. 2
习 题 3 (参考答案)
1.编程实现:用字符输入/输出函数输入3个字符,将它们反向输出。
参考代码(尽量运用本章所学知识)
40.下列变量定义中合法的是( )。
A.float _a = 1?.1e?1; B.double b = 1 + 5e2.5;
C.long do = 0xfdaL; D.float 2_and = 1 ? e ? 3;
44.以下选项中不属于字符常量的是( )。
B D B B A C B A D D
二、填空题
1. 255
2. a/(b*c)
3. 20
4. 1.0
5. x==0或(x==0)?1:0
6. x<-5 || x>5
7. 97或字符 ‘a’
8. 0
9. 2.5
10. 3.5
11. 3
12. 9, 11, 9, 10
5.源程序执行过程中,有哪些步骤?
C语言源程序的执行要经过:编辑、编译、链接、运行等步骤。
6.简述MATLAB的主要应用领域有哪些?
MATLAB软件是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司开发的商业数学软件,主要包括MATLAB和Simulink两大部分。它和Mathematica、Maple并称为三大数学软件。MATLAB软件可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序,主要应用于工程计算、控制设计、信号处理与通信、图像处理、信号检测、金融建模设计与分析等领域,代表了当今国际科学计算软件的先进水平。

C语言课后习题答案

C语言课后习题答案
#include<stdio.h>
void main()
{
int i,j;
for(i=1;i<25;i++)
{
j=25-i;
if(2*i+4*j==80)
break;
}
printf("笼中有鸡%d只,有兔%d只",i,j);
}
10.输出1~999中能被3整除,且至少有一位数字是5的所有整数。
#include<stdio.h>
#include<stdio.h>
void main()
{
int i=0,sum=0;
float h=100;
while(i<10)
{
sum+=h;
h=h/2;
sum+=h;
i++;
}
printf("共经过%d米\n",sum);
printf("第十次反弹高度为:%f",h);
}
9.鸡与兔同笼,其中共有25个头,有80只脚,问笼中鸡和兔各多少只?
void main(void)
{
int i;
for(i=1;i<1000;i++)
{
if(i%3==0)
{
if(i%10==5||i%100==5||1%1000==5)
{
printf("%d\n",i);
}
}
}
}
11. 1.求2~1000中的守形数(若某数的平方,其低位与该数本身相同,则称该数为守形数。例如25,25的平方=625,625的低位25与原数相同,则25称为守形数。

c语言程序设计教程第二版课后习题答案

c语言程序设计教程第二版课后习题答案

c语言程序设计教程第二版课后习题答案第一章:C语言基础1. 以下为C语言的特点:- C语言是一种结构化编程语言,可以通过模块化的方式构建复杂的程序。

- C语言具有较高的可移植性,可以在不同的操作系统和硬件平台上运行。

- C语言提供了丰富的库函数,方便开发者进行程序开发。

- C语言对指针的支持较好,可以进行底层的内存操作。

2. C语言中的标识符规则:- 标识符由字母、数字和下划线组成,且第一个字符不能是数字。

- 标识符区分大小写,因此变量名"num"和"Num"是不同的。

- 标识符不能与关键字重名,如"if"、 "for"等。

- 标识符长度一般不超过32个字符。

3. 在C语言中,预处理指令的作用是在程序编译之前对代码进行处理,包括宏展开、文件包含等。

预处理指令以"#"开头,常见的预处理指令有:- #include:用于包含头文件,将头文件中的内容插入到当前文件中。

- #define:用于定义宏,将宏名称替换为指定的值或代码片段。

- #ifdef、#ifndef、#endif:用于条件编译,根据条件是否成立来选择性地编译代码。

4. C语言中的数据类型分为基本数据类型和派生数据类型两种。

基本数据类型包括整型、浮点型、字符型和布尔型,派生数据类型包括数组、指针、结构体和共用体。

5. C语言中的运算符主要分为算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符等。

算术运算符用于执行加减乘除等基本算术操作,关系运算符用于比较两个值的大小关系,逻辑运算符用于组合多个条件的判断结果,位运算符用于对二进制位进行操作,赋值运算符用于将右侧的值赋给左侧的变量。

第二章:C语言程序结构1. C语言程序结构由函数、语句和注释组成。

每个C语言程序至少包含一个main()函数,作为程序的入口。

2. 以下为C语言程序的基本结构:```c#include <stdio.h>int main() {// 程序代码return 0;}```3. C语言中的控制语句包括条件语句和循环语句。

C语言课后习题答案

C语言课后习题答案

第一章习题答案一、选择题1~5:BDCDA 6~10:DABBB 11~12:CC二、填空题1、main()2、函数首部,函数体3、函数4、编辑、编译、连接、运行5、.cpp、.obj、 .exe6、; 或分号三、编程题#include <stdio.h> /* 包含标准库的信息 */void main() /* 定义名为main 的函数,它不接受参数值 */{ /* main函数的语句都被括在花括号中 */printf("hello, world\n");/* main 函数调用库函数printf 以显示字符序列,其中\n代表换行符 */}第二章习题答案一、选择题1~5:CBABB 6~10:CDCDD 11~15:CADBC 16~20:BDAAD二、填空题1、整型,实型,字符型,枚举类型2、13、94、123535145、2,16、2,27、10 20 08、a=149、2,3,110、double第三章习题答案一、选择题1~5:CBBBC 6~10:DDDBB二、填空题1、控制语句,表达式语句,复合语句2、;3、{}4、15、a6、c:dec=120,oct=170,hex=78,ASCII=x7、32767,327678、10,A,109、3 310、(1) 123.456001(2) □□□□□□□ 123.456(3) 123.4560(4) 8765.456700(5) □□□□□□ 8765.457(6) 8765.4567(7) 8765.4567三、编程题1、参考答案:#include <stdio.h>void main(){int a,b,c;long int u,n;float x,y,z;char c1,c2;a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;u=51274;n=128765;c1='a';c2='b';printf("\n");printf("a=%2d b=%2d c=%2d\n",a,b,c );printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x, y,z);printf("x+y=%5.2f y+z=%5.2f z+x=%5. 2f\n",x+y,y+z,z+x);printf("u=%6ld n=%9ld\n",u,n); printf("c1='%c'or %d(ASCII)\n",c1,c1);printf("c2='%c'or %d(ASCII)\n",c2,c2);}2、参考答案:#include <stdio.h>void main(){float a, b, c, t;printf("please input a,b,c:\n"); scanf ("%f, %f, %f", &a, &b, &c);t=(a+b+c)/3;printf ("averageof %6.2f、%6.2f and %6.2f is %6.2f\n",a,b,c,t);}3、参考答案:#include <stdio.h>main(){int R, d;float s;printf("请输入圆的半径");scanf("%d",&R);d=2*R;c=2*3.14159*R;printf("d=%d,c=%f\n",d,c);}4、参考答案:#include <stdio.h>void main(){int h, f, x, y; /* x为鸡的数量,y为兔的数量 */printf("请输入鸡兔的总头数h,总脚数f:");scanf("%d%d", &h, &f);x=(4*h-f)/2;y=(f-2*h)/2;printf("笼中有鸡%d 只,有兔%d只。

数据结构(c语言版)课后习题答案完整版

数据结构(c语言版)课后习题答案完整版

第1章 绪论5.选择题:CCBDCA6.试分析下面各程序段的时间复杂度。

.试分析下面各程序段的时间复杂度。

(1)O (1) (2)O (m*n ) (3)O (n 2) (4)O (log 3n )(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O (n 2) (6)O(n )第2章 线性表1.选择题.选择题babadbcabdcddac 2.算法设计题.算法设计题(6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。

)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。

ElemType Max (LinkList L ){if(L->next==NULL) return NULL; pmax=L->next; //假定第一个结点中数据具有最大值假定第一个结点中数据具有最大值 p=L->next->next;while(p != NULL ){//如果下一个结点存在if(p->data > pmax->data) pmax=p; p=p->next; }return pmax->data;(7)设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。

的存储空间。

void inverse(LinkList &L) { // 逆置带头结点的单链表 Lp=L->next; L->next=NULL; while ( p) {q=p->next; // q 指向*p 的后继 p->next=L->next;L->next=p; // *p 插入在头结点之后 p = q; }}、空间(n)、空间(10)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)的数据元素。

复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。

《C语言程序设计》课后习题答案第八章

《C语言程序设计》课后习题答案第八章

8.1 编写两个函数,分别求两个证书的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果,两个整数由键盘输入。

void main(){ int Mgy(int x,int y);int Mgb(int z);int a,b,mgy,mgb;printf("请输入两个数:\n");scanf("%d,%d",&a,&b);mgy=Mgy(a,b);mgb=Mgb(a,b,mgy);printf("两个数的最大公约数为%d,最小公倍数为%d\n",mgy,mgb);}int Mgy(int x,int y){ int r,temp;if(x<y){ temp=x;x=y;y=temp;}while(x%y!=0){ r=x%y;x=y;y=r;}return y;}int Mgb(int x,int y,int z){ return (x*y/z);}8.2 求方程ax²+bx+c=0的根,用三个函数分别求当b²-4ac大于零、等于零和小于零时的根,8.3编写一个判素数的函数,在主函数输入一个整数,输出是否是素数的信息。

#include<math.h>void main(){ int Isprime(int a);int m,temp=0;printf("请输入一个数:\n");scanf("%d",&m);temp=Isprime(m);if(temp==0) printf("%d不是素数。

\n",m);else printf("%d是素数。

\n",m);}int Isprime(int a){ int i,k,flag;if(a==0||a==1) flag=0;else{ k=sqrt(a);for(i=2;i<=k;i++)if(a%i==0) flag=0; }return flag; }8.8 写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一格空8.9编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符8.10 写一个函数,输入一行字符,将此字符串中最长的单词输出。

大一C语言课后习题答案

大一C语言课后习题答案

习题一一、填空题1.主函数/main、主函数/main、主函数/main2.声明部分、执行部分3.源程序4.由一个或多个函数5.最前面6./*和*/二、选择题1.C 2.B 3.A 4.C 5.C 6.C 7.A 8.B 9.B 10.B 习题二一、填空题1.scanf和printf函数2.标识符3.字母、数字、下划线、字母、下划线4.十进制、八进制、十六进制5.单撇号6.327.18,14,a8.123、45.09.67,G10.1030011.25 21 3712.n1=%d\nn2=%d\n二、选择题1.A 2.D 3.C 4.C 5.C 6.B 7.A 8.D 9.A 10.D 11.D 12.C 13.A 14.C习题三一、填空题1.0,非02.else 总是与它前面最近的、等待与else配对的if配对3.将下列条件写成C语言的逻辑表达式:(1)x<0&&y!=0(2)x%3==0&&x%7==0(3)a<0||b<0||c<0(4)x>0 && x<=10(5)ch>=’a’ && ch<=’z’ || ch>=’A’ && ch<=’Z’4. 2 15.5 46.-4二、选择题1.B 2.C 3.B 4.A 5.B 6.C 7.8.D 9.D 10.A 11.C 12.B习题四一、填空题1.102.363.34.死、05.66.2*i – 1、printf("\n")7.100 – i*5 –j*2、k>=08.43219.2.40000010.*#*#*#$二、选择题1.C 2.A 3.C 4.都不对(b值为8)5.B6.C 7.C 8.C 9.C 10.D11.A 12.B 13.D 14.B 15.C16.D 17.D 18.C 19.B 20.A 习题五一、填空题1.变量2.54,102,1713.scanf("%f%f%f",&a,&b,&c);4.05.A:12B:1811 , 8C:42, 1, 4 D:7 2, 3, 4 6.A:1 B:1 C:1 D:1 7.A:8 B:0 C:1 D:9 8.5,10 9.整型10.x>2&&x<3||x<-10二、选择题1.C 2.C 3.D 4.A 5.D6.A 7.A 8.D 9.C 10.B11.C 12.B 13.D 14.C 15.D三、编程题1、int result;result=i>j?1:(i==j?0:-1);2、#include <stdio.h>main(void){int n,i;char ch;//提示输入数据printf("请输入ch和n:\n");scanf("%c%d",&ch,&n);//判断输入数据的有效性while(n<=0){printf("输入n值有错误,请重新输入\n"); scanf("%c%d",&ch,&n);}//输出结果for(i=0;i<n;i++)printf("%c",ch);}#include <stdio.h>void main(void){float f;//提示输入数据printf("请输入实数f:\n"); scanf("%f",&f);//计算过程f=f-(int)f;//输出结果printf("小数部分为:%f",f); }#include <stdio.h>void main(void){int n,count=0;//提示输入数据printf("请输入一个整数:\n"); scanf("%d",&n);//处理n为负整数的情况if(n<0)n=-n;//计算过程while(n){count++;n=n/10;}//输出结果printf("输入整数的位数是:%d",count); }5、#include <stdio.h>void main(void){int n,count=0;//提示输入数据printf("请输入一个整数:\n");scanf("%d",&n);//判断n的正负,同时对于零值特殊处理if(n<0)printf("输入整数的是负数");else if(n>0)printf("输入整数的是正数");elseprintf("输入整数的零");//判断n的奇偶性if(n%2 == 0)printf("并且是偶数");elseprintf("并且是奇数");}习题六一选择题1 C2 B3 A4 D5 D6 B7 C8 A9 D 10 A11 A 12 B 13 D 14 A 15 B二填空题1 按行排序2 2,43 字符数组4 数组第一个元素地址5 06 1 5 92 6 103 7 114 8 127 *********8 *********912 13 3 14 6 4 110 abcde11 i=1 x[i-1]12 int flag, i scanf(”%s”,str1) str[i]!=str1[i]13 i<=10-j a[i]<a[i+1] t=a[i] a[i+1]=t 习题七一、填空题1.52.153.max=23,min=-4max=0,min=04.1365.first:11,3,9second:20,3,9third:20,3,5二、选择题1.A 2.A 3.C 4.D 5.A6.C 7.A 8.B 9.A 10.A11.B 12.A 13.B 14.D 15.D 习题八一、错,对,错,对,错,对,对二、1. 地址2. &3. *4. 0和NULL5. void6. 5 , 19, 12, 157. ‘\0’,s8. s+n-1, p1<p2, p2--9. ‘\0’,n++10. s[i]<’0’ || s[i]>’9’,‘\0’11. ch=f12. s=2413. s=xbcdBCD14. PEOPLEpeople and computer15. 80, -20三、1. A 2. C 3. AC 4. D 5. B 6~10 BDDAD11~15 DDBBC16~20 BBCAC。

C语言课后习题答案

C语言课后习题答案

C语言课后习题答案5请参照本章例题,编写一个C程序,输出以下信息:**************************Very Good!**************************解:mian(){printf(“**************************”);printf(“\n”);printf(“Very Good!\n”);printf(“\n”);printf(“**************************”);}1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。

解:mian(){int a,b,c,max;printf(“请输入三个数a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf(“最大数为:“%d”,max);}第三章3.6写出以下程序运行的结果。

main(){char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c %c”,c4,c5);}解:aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabcAㄩN3.7 要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。

因此,"China"应译为"Glmre"。

请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

c语言课后习题答案

c语言课后习题答案
#include <stdio.h>
int main()
{
long i,sum;
printf("请输入利润I:");
scanf("%ld",&i);
if(i<100000)
sum=i*0.1;
else if(i<200000)
sum=10000+(i-100000)*0.075;
else if(i<400000)
#include <stdio.h>
int main()
{
int i,j;
/*枚举法(穷举法)*/
for(i=0;i<=30;i++)
{
j=30-i;
if(2*i+4*i==90)
printf("鸡:%d\n兔:%d\n",i,j);
}
return 0;
}
习题5.4
编写一个程序,求
s=1+(1+2)+(1+2+3)+ …… +(1+2+3+4+ …… +n)
{
int a,b,c,d;
int t; /*临时变量*/
printf(“请输入a,b,c,d:”);
scanf(“%d,%d,%d,%d”,&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;}

数据结构c语言版课后习题答案完整版

数据结构c语言版课后习题答案完整版

数据结构c语言版课后习题答案完整版Document serial number【KKGB-LBS98YT-BS8CB-BSUT-BST108】第1章绪论5.选择题:CCBDCA6.试分析下面各程序段的时间复杂度。

(1)O(1)(2)O(m*n)(3)O(n2)n)(4)O(log3(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题babadbcabdcddac2.算法设计题(6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。

ElemType Max (LinkList L ){if(L->next==NULL) return NULL;pmax=L->next; 法设计题(2)回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。

试写一个算法判定给定的字符向量是否为回文。

(提示:将一半字符入栈)根据提示,算法可设计为:合应用题(1)已知模式串t=‘abcaabbabcab’写出用KMP法求得的每个字符对应的next和nextval函数值。

-1到9,列下标从1到11,从首地址S开始连续存放主存储器中,主存储器字长为16位。

求:①存放该数组所需多少单元②存放数组第4列所有元素至少需多少单元③数组按行存放时,元素A[7,4]的起始地址是多少④ 数组按列存放时,元素A[4,7]的起始地址是多少每个元素32个二进制位,主存字长16位,故每个元素占2个字长,行下标可平移至1到11。

(1)242 (2)22 (3)s+182 (4)s+142(4)请将香蕉banana 用工具 H( )—Head( ),T( )—Tail( )从L 中取出。

L=(apple,(orange,(strawberry,(banana)),peach),pear)H (H (T (H (T (H (T (L )))))))(5)写一个算法统计在输入字符串中各个不同字符出现的频度并将结果存入文件(字符串中的合法字符为A-Z 这26个字母和0-9这10个数字)。

C语言程序设计教程(第2版)课后习题答案(完美版)

C语言程序设计教程(第2版)课后习题答案(完美版)

C语言程序设计教程(第二版)课后习题答案第一章C语言程序设计概述-习题答案1算法的描述有哪些基本方法?答1、自然语言2、专用工具2 C语言程序的基本结构是怎样的?举一个例子说明。

答1、C语言程序由函数构成;2、“/*”与“*/”之间的内容构成C语言程序的注释部分;3、用预处理命令#include、#define可以包含有关文件或预定义信息;4、大小写字母在C语言中是有区别的;5、除main()函数和标准库函数外,用户也可以自己编写函数,应用程序一般由多个函数组成,这些函数指定实际所需要做的工作。

3 C语言有什么特点?答1、具有结构语言的特点,程序之间很容易实现段的共享;2、主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译代码,以实现程序的模块化;3、运算符丰富,包含的范围很广;4、数据类型丰富;5、允许直接访问物理地址,即可直接对硬件进行损伤,实现汇编语言的大部分功能;6、限制不太严格,程序设计自由度大,这样使C语言能够减少对程序员的束缚;7、生成的目标代码质量,程序执行效率高,同时C语言编写的程序的可移植性好。

4★指出合法与不合法的标识符命名。

答AB12--√leed_3-- a*b2--× 8stu--× D.K.Jon--× EF3_3--√ PAS--√ if--× XYZ43K2 --√ AVE#XY--× _762--√ #_DT5--× C.D--×5说明下列Turbo C热键的功能。

答F2:源文件存盘 F10:调用主菜单 F4:程序运行到光标所在行(用于调试程序) Ctrl+F9:编译并链接成可执行文件 Alt+F5:将窗口切换到 DOS 下,查看程序运行结果。

6说明下列Turbo C方式下输入并运行下列程序,记录下运行结果。

①main(){printf("********************\n");printf(" welcome you \n");printf(" very good \n);printf("********************\n");}②main()printf("please input three numbers;");scanf("%d,%d,%d",&a,&b,&c); /*教材S是错误的*/t=max(max(a,b),c);printf("max number is:%d\n",t);}int max(int x, int y){ int z;if(x>y)z=x;else z=y;return(z);}答运行结果:********************welcome youvery good********************运行结果:please input three numbers;3,1,4 /*左侧下划线内容为键盘输入*/max number is:47一个C程序是由若干个函数构成的,其中有且只能有一个___函数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第五章习题一、选择填空1.在下列关键字中,用以说明类中公有成员的是()A. public;B. private;C. protected;D. friend;2.下列的各类函数中,()不是类的成员函数。

A. 构造函数;B. 析构函数; C . 友元函数; D. 拷贝初始化构造函数;3.作用域运算符的功能是()。

A.标识作用域的级别的;B. 指出作用域的范围的;A.给定作用域的大小的;D. 标识某个成员是属于哪个类的。

4.下列不是成员函数的是()。

A.构造函数;B.友元函数;C.析构函数;D.类型转换函数。

5.()不是构造函数的特征A.构造函数的函数名与类名相同;B.构造函数可以重载;C.构造函数可以设置缺省参数;D.构造函数必须指定类型说明。

6.()是析构函数的特征。

A.一个类中只能定义一个析构函数;B.析构函数与类名不同;C.析构函数的定义只能在类体内;D.析构函数可以有各个或多个参数。

7.通常的拷贝初始化函数的参数是()。

A.某个对象名;B.某个对象的成员名;C.某个对象的引用名;D.某个对象的指针名;8.关于成员函数特征的下述描述中,()是错误的。

A.成员函数一般是内联函数;B.成员函数可以重载;C.成员函数可以设置参数的缺省值;D.成员函数可以是静态的。

9.下述静态数据成员的特征中,()是错误的。

A.说明静态数据成员时前边要加修饰符static;A.静态数据成员要在类体外进行初始化;B.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符;C.静态数据成员不是所有对象所共用的。

10.友元的作用( )。

A.提高程序的运用效率;B.加强类的封装性;C.实现数据的隐藏性;D.增加成员函数的种类。

二、判断下列描述的正确性,对者划√,错者划×。

1.使用关键字class定义的类中缺省的访问权限是私有(private)的。

√2.作用域运算符(::)只能用来限定成员函数所属的类。

√3.析构函数是一种函数体为空的成员函数。

×4.构造函数和析构函数都不能重载。

×5.说明或定义对象时,类名前面不需要加class关键字。

√6.对象成员的表示与结构变量成员表示相同,使用运算符.或->。

√7.所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类外的函数对它们的访问都是非法的。

×8.某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。

9.可以在类的构造函数中对静态数据成员进行初始化。

×10.如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数。

√三、分析下列程序的输出结果。

1.#include<iostream.h>class A {public:A();A(int i,int j);void print( );private:int a,b;};A::A( ){a=b=0;cout<<”Default constructor called.\n”;}A::A(int i,int j){a=i;b=j;cout<<”Constru ctor called.\n”;}void A::print(){cout<<”a=”<<a<<”,b=”<<b<<endl;}void main(){A m,n(4,8);m.print();n.print();}Default constructor called.Constructor called.A=0,b=0A=4,b=82.#include<iostream.h>class B {public:B();B(int i,int j);void printb( );private:int a,b;};class A {public:A();A(int i,int j);void printa( );private:B c;};A::A(int i,int j):c(i,j){}void A::printa(){c.printb();}B::B(int i,int j){a=i;b=j;}void B::printb(){cout<<”a=”<<a<<”,b=”<<b<<e ndl;}void main(){A m(7,9);m.printa();}A=7,b=93.#include<iostream.h>class Count{public:Count () {count++;}static int HM(){return count;}~Count(){count--;}private:static int count;};int Count::count=100;void main(){Count c1,c2,c3,c4;cout<<Count::HM()<<endl;}1044.#include<iostream.h>class A{public:A(double t,double r){Total=t;Rate=r;} friend double Count(A&a){a.Total+=a.Rate*a.Total;return a.Total;}private:double Total,Rate;};void main(){A a1(1000.0,0.035),a2(768.0,0.028); cout<<Count(a1)<<”,”<<Count(a2)<<endl; }1035,789,5045.#include<iostream.h>class Set{public:Set(){PC=0;}Set(Set &s);void Empty() {PC=0;}int IsEmpty() {return PC= =0;} int IsMemberOf(int n);int Add(int n);void Print();friend void reverse(Set *m); private:int elems[100];int PC;};int Set::IsMemberOf(int n){for (int i=0;i<PC;i++)if(elems[i]= =n)return 1;return 0;}int Set::Add(int n){if(IsMemberOf(n))return 1;else if(PC>=100)return 0;else{elems[PC++]=n;return 1;}}Set::Set(Set &p){PC=p.PC;for(int i=0;i<PC;i++)elems[i]=p.elems[i];}void Set::Print(){cout<<”{“;for (int i=0;i<PC-1;i++)cout<<elems[i]<<”,”;if(PC>0)cout<<elems[PC-1];cout<<”}”<<endl;}void reverse(Set *m){int n=m->PC/2;for(int i=0;i<n;i++){int temp;temp=m->elems[i];m->elems[i]=m->elems[m->PC-i-1];m->elems[m->PC-i-1]=temp;}}void main(){Set A;cout<<A.IsEmpty()<<endl;A.Print();Set B;for(int i=1;i<=8;i++)B.Add(i);B.Print();cout<<B.IsMemberOf(5)<<endl;B.Empty();for(int j=11;j<20;j++)B.Add(j);Set C(B);C.Print();reverse (&C);C.Print();}1{}{1,2,3,4,5,6,7,8}1{11,12,13,14,15,16,17,18,19}{19,18,17,16,15,14,13,12,11}第六章习题一、选择填空1.已知一个类A,()是指向类A成员函数的指针。

假设类有三个公有成员:voidf1(int), void f2(int)和int a。

A. A*p;B. int A::*pc=&A::a;C. void A::*pa;D. A *pp;2.运算符->* 的功能是()。

A.用来表示指向对象指针对指向类成员指针的操作;B.用来表示对象对指向类成员指针的操作;C.用来表示指向对象指针对类成员的操作;D.用来表示对象类成员的操作。

3.已知f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针,采用()是正确的。

A.p=f1;B.p=A::f1;;C.p=A::f1();D.p=f1();4.已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。

如果要给m赋值为5,()是正确的。

A.A1.p=5;B.A1->p=5;C. A.*p=5;D.*A1.p=5。

5.已知:类A中一个成员函数说明如下:void Set(A&a);其中,A &a的含意是()A.指向类A的指针为a;B.将a的地址值赋给变量Set;C.a是类A的对象引用,用来作函数Set()的形参;D.变量A与a按位相与作为函数Set()的参数。

6.下列关于对象数组的描述中,()是错的。

A.对象数组的下标是从0开始的;B.对象数组的数组名是一个常量指针;C.对象数组的每个元素是同一个类的对象;D.对象数组只能赋初值,而不能被赋值。

7.下列定义中,()是定义指向数组的指针p。

E.int *p[5];F.int (*p)[5];A.(int *)p[5];B.int *p[ ];8.下列说明中,const char *ptr; ptr应该是()。

A.指向字符常量的指针;B.指向字符的常量指针;C.指向字符串常量的指针;D.指向字符串的常量指针。

9.已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,()是正确的。

A.void print () const;B.const void print();C.void const print();D.void print(const);10.关于new运算符的下列描述中,( )是错的。

相关文档
最新文档