C++课后习题答案第五章
C++课后习题答案

-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语言程序设计教程》第三版课后习题参考答案C语言程序设计教程第三版课后习题参考答案第一章:C语言概述1.1 C语言的特点答案:C语言是一种通用的、面向过程的程序设计语言,具有高效、简洁、灵活等特点。
它提供了丰富的程序设计元素和功能,适用于各种不同的应用领域。
1.2 C语言程序的基本结构答案:C语言程序由预处理指令、函数声明、函数定义、变量声明和语句组成。
其中,预处理指令用来引入头文件或定义宏,函数声明用来声明函数的名称和参数,函数定义用来实现函数的功能,变量声明用来声明变量的类型和名称,语句用来表达具体的计算过程。
1.3 C语言的数据类型答案:C语言提供了多种数据类型,包括基本类型(整型、浮点型、字符型等)和派生类型(数组、指针、结构体等)。
每种数据类型在内存中占据一定的存储空间,并具有特定的取值范围和操作规则。
1.4 C语言的运算符和表达式答案:C语言支持各种运算符和表达式,例如算术运算符(+、-、*、/等)、关系运算符(>、<、==等)、逻辑运算符(&&、||、!等)等。
通过运算符和表达式可以进行各种数值计算和逻辑判断。
第二章:基本数据类型与运算2.1 整型数据类型答案:C语言提供了不同长度的整型数据类型,包括有符号整型(int、long等)和无符号整型(unsigned int、unsigned long等)。
整型数据类型可以表示整数值,并具有不同的取值范围。
2.2 浮点型数据类型答案:C语言提供了浮点型数据类型(float、double等),用来表示带小数部分的实数值。
浮点型数据可以表示较大或较小的数值,并具有一定的精度。
2.3 字符型数据类型答案:C语言提供了字符型数据类型(char),用来表示单个字符。
字符型数据可以用于表示各种字符(包括字母、数字、符号等)。
2.4 布尔型数据类型答案:C语言不直接支持布尔型数据类型,但可以使用整型数据类型来表示布尔值(0表示假、非零表示真)。
C程序设计(第四版)(谭浩强)第五章课后习题答案

C程序设计(第四版)(谭浩强)第五章课后习题答案循环结构程序设计P115 5.1 用while计算1至100的合.#include<stdio.h>int main(){int i=1,sum=0;while(i<=100) //对于需要运算的值,要么在运算前可以赋值,要么一开始要指定.{sum=sum+i;i++;}printf("The sum is %d .\n",sum);return 0;}P117 5.2 用do-while来做1至100的合.#include<stdio.h>int main(){int i=1,sum=0;do// do-while可以做的事,用while都可以做到.{ //do-while先做一次执行,再判断条件,而while却是先做一个条件,再执行.sum=sum+i;i++;}while(i<=100);printf("The sum is %d .\n",sum);return 0;}#include<stdio.h>int main(){int i,sum=0;printf("Please input a number :");scanf("%d",&i); //输入10以内,正常,11的话,则sum仍然是0.while(i<=10){sum=sum+i;i++;}printf("The sum of 1-10 is %d .\n",sum);return 0;}#include<stdio.h>int main(){int i,sum=0;printf("Please input a number :");scanf("%d",&i); //输入10以内,结果一样.输入11的话,先做操作,所以sum=11.do{sum=sum+i;i++;}while(i<=10); //此重点在于理解二者的差别.printf("The sum of 1-10 is %d .\n",sum);return 0;}#include<stdio.h>int main(){int i,b=0,a,c;for(i=0;i<=1000;i++){printf("Please input amount :"); //循环体内套有输出语句以及跳出语句.scanf("%d",&a);b=b+a;if(b>=100){break; //break是用于跳出循环,对if无效,对while for switch 这一类.}}c=b/i;printf("conut is %d , aver is %d ",i+1,c); //注意%号后的形式,否则可能输出错误.return 0;}P127 5.5 continue的例子.#include<stdio.h>int main(){int i;for(i=1;i<20;i++){if(i%3!=0){continue; //跳过本次I,执行下一个i.}printf("%d ",i);}printf("\n");return 0;}P128 5.6 形成一个4*5的矩阵.#include<stdio.h>int main(){int i,j,a=0; //没有给初值,会出现警告: 使用了未初始化的局部变量“a”.for(i=1;i<=4;i++){for(j=1;j<=5;j++,a++) // a用来控制换行.{if(a%5==0){printf("\n");}printf("%d\t",i*j);}}printf("\n");return 0;}P131 5.7 用一个交错的式子求哌的近似值.#include<stdio.h>#include<math.h>int main() //四分之哌等于(1)-(1/3)+(1/5)-(1/7)+(1/9)-(1/11).{float s=1,n=1,m,sum=0,t;for(m=1;;m=m+2) //不确定哪项才会小于等于十的负六次方,所以不指定,无限下去.{ //不指定第二项,执行语句中应该有控制跳出的句子,否则死循环.t=(s)*(n/m); //这是第一项,s是符号,if(fabs(t)<=1e-6) //应该写在这里,题目要求这一项不累加进去.{break;}sum=sum+t; //因为累加项在这里,所以,一旦跳出就不会累加进来了.s=s*(-1); //变号一次.}printf("四分之一哌的值是%f.\n",sum);printf("一个完整哌的值是%f.\n",sum*4);return 0;}//下面这段小代码用来验证关于数值型数据类型的关系.去掉注释,可运行.//如果出现类似值为全1或是全零的话,一般可以考虑数据类型赋值或是定义错了的问题.//#include <stdio.h> //这是关于int float double三者关复杂关系的,乱啊,如果看不懂,可以通过实验自己明白来.////int main() //在C语言中,1.0认为是实数,即是double型,所以,如果你把它用float输出的话,会有警告:警告 1 warning C4305: “=”: 从“double”到“float”截断.//{// float m,a,b,c; //一旦定义了是这种类型的话,输出或是赋值的时候只能扩展不能截断,意思就是能变成double型,不能变成int型啦.而且后面的赋值会跟着它变成相应的类型.比如下面的m=1,其实得到的是m=1.0.// int d,e,f;// m=1;// a=1.0/3;// b=1/3;// c=m/3;// d=1.0;// e=1/4;// f=1.0/4;// printf("%lf(float用double的%lf来输出是可以的.)\n%f\n%f\n%f\n",m,a,b,c); //不管上面定义什么,这边写的输出类型是什么,就按相应的类型输出,有可能会出错,所以建议按定义的类型来输出.当然扩展的是不会错的,截断的是会错的,比如float可以用%lf来输出,而不能用%d来输出.// printf("%d\n%d\n%d\n",d,e,f); //但是,不相应的int型不可以用%f来输出的.因为int float就不同种类,一个是整数,一个是小数,float double同样是有小数点的// return 0;//}#include<stdio.h>int main() //这个就是著名的Fibonacci(费波那契数列问题){int f1=1,f2=1,f3,i;printf("%12d\n%12d\n",f1,f2);for(i=1;i<=38;i++) //注意,这是个基础问题,(i=1;i<=5;i++)这里其实进行了次运算,因为有f1,f2,要求有个,所以要有个.要么写<=38,要么写<39,边界问题一定要注意,不可以太随意{f3=f1+f2;printf("%12d\n",f3); //这个问题同样适用于"一对兔子一个月生一对"的问题.,f1=f2; //f1=f1+f2;此时它们各是,所以,现在的f1是.f2=f3; //f2=f2+f1;此时的f1已经是最先二者之和了.可以不用到f3.}return 0;}#include<stdio.h>#include<math.h>int main(){double num;int i;printf("Please input a number :");scanf("%lf",&num); //因为sqrt要求是浮点型,那就给它浮点型,需要时再强制转换.for(i=2;i<=sqrt(num);i++) //这边是<=号没错.{if((int)num%i==0) //如果在这期间有任何一个可以为零的话,则不是素数.{break; //当然跳出.}} //执行到这里的时候,i=5,已经变成了!!if(i<=sqrt(num)){printf("Not %d",(int)num);}else//如上所述,i=5,超出了求根的值,所以是素数.{printf("Yes %d",(int)num);}return 0;}P137 5.10 求100至200间的素数.#include<stdio.h>//不解释,HOHO>>>>...#include<math.h>int main(){double j;int i,k=0;for(j=100;j<=200;j++){for(i=2;i<=sqrt(j);i++){if((int)j%i==0){break;}}k=k+1; //这里是布局的开头.学习一下,有助逻辑.if(i<=sqrt(j)){printf("Not %d ",(int)j);if(k%5==0) //5个换一次行.{printf("\n");}}else{printf("Yes %d ",(int)j);if(k%5==0){printf("\n");}}}return 0;}P139 5.11 密码转换.#include<stdio.h>int main(){char c;c=getchar();while(c!='\n') //这也可以用数组来实现.{if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){if((c>='w'&&c<='z')||(c>='W'&&c<='Z')){c=c-22;}else{c=c+4;}printf("%c",c);c=getchar(); //套在循环里,依次得到字母,而while中判断回车为结束.}}printf("\n"); //这是布局问题.return 0;}P140 0.3 最大公约数和最小公倍数.#include<stdio.h>//最大公约数用累除法,除到无余数时的被除数是最大公约数.main (){int m, n, c, d;int gcd(); //这是最大公约数的缩写,此处调用函数,可以不写里面的实参.int lcm(); //这是最小公倍数的缩写,此处调用函数,可以不写里面的实参.printf("Please input two number :\n");scanf("%d %d",&m,&n);c=gcd(m,n); //c获取最大公约数d=lcm(m,n); //d获取最小公倍数printf("The GCD of %d and %d is : %d !\n", m, n, c);printf("The LCM of %d and %d is : %d !\n", m, n, d);return 0;}int gcd(int x, int y) //最大公约数Greatest Common Divisor{int temp;while(x%y!=0){temp=y; //y在下一轮中作为除数,即是下一轮中的X,所以先闪一边去.y=x%y; //x,y的余数作为下一轮中的Y,由x%y来取得.x=temp; //刚才temp中存储了y的值,现在拿出来作为下一轮中的X使用.}return y; //这是每一轮中的被除数,按原理来,这就是最大公约数,即累除法的原理. }int lcm(int x, int y) //最小公倍数Lowest Common Multiple{int i, temp;if(x<y) //此段代码结果是保证二者大的数在X上,小的数在Y上.即小于号降序.{ //以下为经典三行码,实现两个数的互换.temp=x;x=y;y=temp;}for(i=1; i<=y; i++) //设定一个区间,从1至大的数之间的循环.{if(!((x*i)%y)) //此式子如有余数,加上"!"号,会是假,则不返回,进行下一轮.{ //如此往复,直到取模无余数,那么小的数X乘以区间当前的I值,就是最小公倍数.return x*i;}}}P140 0.4 判断一串输入的字符.#include<stdio.h>int main(){char ch;int a=0,b=0,c=0,d=0,e=0;printf("Please input the string\n");while((ch=getchar())!='\n') //直到回车.{if(ch<='z'&&ch>='a'){a++;}else if(ch==' '){c++;}else if(ch<58&&ch>47){d++;}else if(ch<='Z'&&ch>='A'){b++;}else{e++;}}printf("大写%d 小写%d 空格%d 数字%d 其它%d\n",a,b,c,d,e); }#include<stdio.h>//不理解时可以百度或是谷歌更多的信息.int main() //想办法既快速做完,又要消化理解{int temp,i,a,n,sum=0; //主逻辑,友好性暂时放松.scanf("%d %d",&a,&n); //a是数字,n是要乘的个数.temp=a; //先把第一阶的值存起来.for(i=0;i<n;i++){sum=sum+a;printf("%d + ",a); //事关布局.a=a*10+temp; //重点是每次乘,然后加上上一个数.}printf("= %d .",sum);return 0;}P140 0.6 1!+2!+3!+4!.....的值.#include<stdio.h>int main() //1!+2!+3!+4!.....{int i,j,k,sum=0,m=1;scanf("%d",&k); //比如设定为,值为.for(i=1;i<=k;i++) //第一层循环,指定到.{for(j=1;j<=i;j++) //第二层循环,指定至当前数.{m=m*j;} //到此是阶乘的结构.sum=sum+m;m=1;}printf("%d",sum); //完全不理解时,搜索并参考.return 0; //尝试自己做,第一次做出来就是自己的东西了.}P140 0.7 1至100,1至50平方,1至10倒数的总和. #include<stdio.h>int main(){int a,b;double c,asum=0,bsum=0,csum=0;for(a=1;a<=100;a++) //三个块分别注释验证结果.{asum=asum+a;}for(b=1;b<=50;b++) //在VS运行中,注意*.cpp为C++语言.{bsum=bsum+b*b; //为了避免语言差别,请注意文件名为*.c.}for(c=1;c<=10;c++) //c作浮点运算,所以定义在double类型中.{csum=csum+1/c;}printf("%lf",asum+bsum+csum);return 0;}PP#include<stdio.h>#include<math.h>int main(){int j,k,s[6],x=100,y,sum=0;for(j=153;j<=154;j++){for(k=2;k>=0;k--){s[k]=j%(int)pow(10,k+1)/(int)pow(10,k);y=pow(s[k],3);sum+=y;printf("%d-%d--%d\t",k,s[k],j);printf("%d\n",sum);}return 0;}P140 0.8 水仙花数.//#include <stdio.h> //一步步的发现问题.////int main() //在%和/号之间,以前pow.以后再做.//{// int i,j,k,a,b,c,sum=0; //这里逻辑对,算出来却错了.// for(i=2;i<=4;i++) //计算机在想什么,看来它的大脑难以模拟.// {// for(j=pow(10,i);j<=pow(10,i+1)-1;j++) //我不完全明白它遵守的逻辑. // {// for(k=0;k<=i;k++)// {// sum+=pow((j%pow(10,i+1)/pow(10,i)),3);// }// if(sum==j)// {// printf("%d 是水仙花数!\n",j);// }// sum=0;// }// }// return 0;//} //为什么还是无法实现?!#include<stdio.h>#include<math.h>int main(){int a,b,c,i,sum=0; //这里只计算三位数的.for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;sum+=a*a*a+b*b*b+c*c*c;if(sum==i)printf("%d 是水仙花数.\n",i);}sum=0;}return 0;}P141 0.9 完数.#include<stdio.h>int main(){int i,j,r;for(i=1;i<=1000;i++) //零是个临界值,不能包括它.{r=0; //每次清零重来.类似水仙中的sum.for(j=1;j<i;j++){if(i%j==0) //除得尽即是因子.{r=r+j; //然后累加进去.}}if(r==i) //若相等.{printf("%d 是完数.\n",i);}}return 0;}P141 0.10 2/1+3/2+5/3+8/5+13/8…#include<stdio.h>int main() //10.007051{double i,a=2,b=1,c,s=0; //a是分子,b是分母.for(i=0;i<6;i++) //二十可以用户指定.{s+=a/b; //中间储值变量.c=a+b;b=a;a=c;}printf("%lf\n",s);return 0;}#include<stdio.h>int main() //从一百开始,减一半再自加两次,下降一次,反弹一次.{double sum=100,high=100,up,donw,i;for(i=1;i<10;i++) //不管指定到哪个数,都不会超过三百.{up=high/2;donw=up;high=donw; //自咬尾巴问题.sum+=donw*2;}printf("%lf %lf\n",donw,sum);return 0;}P141 0.12 猴子吃桃子.#include<stdio.h>int main() //从一百开始,减一半再自加两次,下降一次,反弹一次.{int i,sum=1;for(i=1;i<=10;i++) //临界要清楚,结果要与手算的前几个实例相匹配.{printf("倒数第%d天还剩有%d个桃子.\n",i,sum);sum=(sum+1)*2;}//printf("%d\n",sum);return 0;}P141 0.16 输出星号棱形图案.#include<stdio.h>#include<conio.h>main() //只关注左半部分.右半部分无视空格.{int i,j,k,m=6; //m可指定,指定中心点位置.可任意奇偶.for(i=1;i<=m;i++) //上半部分.其实也是正三角.{for(j=1;j<=m-i;j++) //一到中心点前i个位置填充空格.printf(" ");for(k=1;k<2*i;k++) //空格后向前填充星号的个数.是奇数.一,三,五... printf("*");printf("\n");}for(i=m-1;i>0;i--) //下半部分.其实也是倒三角.{ //减一是因为行数问题.这是中心行以下的.for(j=m-1;j>=i;j--)printf(" ");for(k=1;k<2*i;k++)printf("*");printf("\n");}getch(); //用户反应后结束.但,没必要.}。
课后习题二(第四章、第五章)

课后习题二(第四章、第五章)课后习题二(第四章、第五章)1、计算机使用总线结构便于增加外设,同时( C )A. 减少了信息传输量B. 提高了信息的传输速度C. 减少了信息传输线的条数D. 以上均不对2、计算机使用总线结构的主要优点是便于实现积木化,缺点是( C )A. 地址信息、数据信息和控制信息不能同时出现B. 地址信息和数据信息不能同时出现C. 两种信息源的代码在总线中不能同时传送D. 数据信息不能双向传送3、总线中地址线的作用是( C )A. 用于选择存储器单元B. 用于选择进行信息传输的设备C. 用于指定存储器单元和I/O设备接口电路的选择地址D. 以上均不对4、微型机读/写控制信号的作用是( D )A. 决定数据总线上的数据流方向B. 控制存储器操作(读/写)的类型C. 控制流入、流出存储器信息的方向D. 以上的任一种作用5、在三种集中式总线控制中,响应时间最快的方式是( C )A. 链式查询B. 计数器定时查询C. 独立请求D. 以上三种均可6、在三种集中式总线控制中独立请求方式响应时间最快,是以( B )为代价的A. 增加处理机的开销B. 增加控制线数C. 增加存储器的容量D. 增加处理机的时钟频率7、同步通讯之所以比异步通讯具有较高的传输频率是因为( E )A. 同步通讯不需要应答信号B. 同步通讯方式的总线长度较短C. 同步通讯用一个公共的时钟信号进行同步D. 同步通讯各部件存取时间比较接近E. 以上各种因素综合的结果8、存储器是计算机系统的记忆设备,它主要用来( D )A. 存放程序B. 存放微程序C. 存放特殊的数据D. 存放数据和指令9、存储字是( A )A. 存放在一个存储单元的二进制代码组合B. 存放在一个存储单元的二进制代码个数C. 存储单元的集合D. 与存储器无关10、存储字长是指( B )A. 存放在一个存储单元的二进制代码组合B. 存放在一个存储单元的二进制代码个数C. 存储单元的集合D. 以上均不对11、存储周期是指( C )A. 存储器的写入时间B. 存储器进行连续写操作所允许的最短时间间隔C. 存储器进行连续读或写操作所允许的最短时间间隔D. 与存储器的具体实现技术无关12、和外存储器相比,内存的特点是( A )A. 容量小、速度快、成本高B. 容量小、速度快、成本低C. 容量大、速度快、成本高D. 容量大、速度慢、成本低13、一个16K×32位的存储器,其地址线和数据线的总和是( B )16214=14+32 = 46KA. 48B. 46C. 36D. 3214、一个512KB的存储器(按字节编址),其地址线根数是( D )512219=KA. 64B. 32C. 20D. 1915、某计算机字长为16位,它的存储容量是64KB,按字编址,则它的寻址范围是(C )216=16+16 = 32K64A. 64KB. 32KBC. 32KD. 无法确定16、某一RAM芯片,其容量为512×8位,如果考虑电源和接地引脚,则该芯片引出的引脚数最少是(A )29=9 + 8 + 4 = 21512A. 21B. 19C. 17D. 1517、若主存每个存储单元为16位,则( B )A. 其地址线也为16位B. 其地址线与16无关C. 其地址线最少为16位D. 其地址线与16有关18、通常计算机的内存可采用( A )A. RAM和ROMB. RAMC. ROMD. 磁盘19、EPROM是指( C )A. 只读存储器B. 可编程的只读存储器C. 可擦除的可编程的只读存储器D. 电可擦除的可编程的只读存储器20、可编程的只读存储器( A )A. 不一定是可改写的B. 一定是可改写的C. 一定是不可改写的D. 以上均不对21、下列说法中( D )是正确的A. 半导体RAM信息可读可写,且断电后仍能保持记忆B. 半导体RAM是易失性RAM,而静态RAM中的存储信息是不易失的C. 半导体RAM是易失性RAM,而动态RAM中的存储信息是不易失的D. 半导体RAM是易失性RAM,而静态RAM只有在电源不掉时,所存信息是不易失的22、下列说法中( B )是正确的A. EPROM是可改写的,但改写一次后不能再次改写B. EPROM是可改写的,且可多次改写C. EPROM是可改写的,是用电信号直接改写D. EPROM是可改写的,是用磁信号直接改写23、和动态MOS存储器相比,双极性半导体存储器的性能是( C )A. 集成度高、存取周期快、位平均功耗少B. 集成度高、存取周期快、位平均功耗大C. 集成度低、存取周期快、位平均功耗大D. 集成度低、存取周期快、位平均功耗少24、在磁盘和磁带两种磁表面存储器中,存取时间与存储单元的物理位置有关,按存储方式分( B )A. 二者都是顺序存取B. 磁盘是随机半顺序存取,磁带是顺序存取C. 磁带是随机半顺序存取,磁盘是顺序存取D. 二者都是随机半顺序存取25、磁盘的记录方式一般采用( A )A. 调频制B. 调相制C. NRZD. NRZ-126、在磁表面存储器的记录方式中( D )A. 不归零制和归零制的记录密度是一样的B. 不归零制的记录方式中不需要同步信号,故记录密度比归零制高C. 归零制的记录方式中需要同步信号,故记录密度高D. 不归零制记录方式由于磁头线圈中始终有电流,因此抗干扰性能好27、磁盘存储器的平均等待时间通常是指( B )A. 磁盘旋转一周所需的时间B. 磁盘旋转半周所需的时间C. 磁盘旋转2/3周所需的时间D. 磁盘旋转1/3周所需的时间28、相联存储器是按( B )进行寻址的存储器A. 地址指定方式B. 内容指定方式C. 堆栈存取方式D. 队列存取方式29、一个四体并行交叉存储器,每个模块的容量是64K×32位,单体的存储周期为200ns,在下述说法中( B )是正确的A. 在200ns内,存储器能向CPU提供256位二进制信息B. 在200ns内,存储器能向CPU提供128位二进制信息C. 在50ns内,存储器能向CPU提供32位二进制信息D. 在50ns内,存储器能向CPU提供128位二进制信息30、主存和CPU之间增加高速缓冲存储器的目的是( A )A. 解决CPU和主存之间的速度匹配问题B. 扩大主存容量C. 即扩大主存容量,又提高了存取速度D. 降低主存价格31、在程序的执行过程中,Cache与主存的地址映射是由( C )A. 操作系统来管理的B. 程序员调度的C. 由相应硬件自动完成的D. 主存自身即可完成32、采用虚拟存储器的目的是( C )A. 提高主存的速度B. 扩大外存的存取空间C. 扩大存储器的寻址空间D. 以上都正确33、常用的虚拟存储器寻址系统由( A )两级存储器组成A. 主存—外存B. Cache—主存C. Cache—外存D. 以上任意组合均可34、在虚拟存储器中,当程序正在执行时,由(C )完成地址映射A. 程序员B. 编译器C. 操作系统D. CPU以下为书上相关例题35、在系统总线的数据线上,不可能传输的是( C )A. 指令B. 操作数C. 握手(应答)信号D. 中断类型号36、假设某系统总线在一个总线周期内并行传送4字节信息,一个总线周期占用2个时钟周期,总线时钟频率为10MHz,则总线带宽是( B )÷)(104=202A. 10MB/sB. 20MB/sC. 40MB/sD. 80MB/s37、某同步总线的时钟频率为100 MHz,宽度为32位,地址/数据总线复用,每传输一个地址或数据占用一个时钟周期。
《编译原理》课后习题答案第5章

《编译原理》课后习题答案第5章《编译原理》课后习题答案第5章.pdf《编译原理》课后习题答案第5章.pdf第5章自顶向下语法分析方法第1题对文法G[S] S→a|∧|(T) T→T,S|S(1) 给出(a,(a,a))和(((a,a),∧,(a)),a)的最左推导。
(2) 对文法G,进行改写,然后对每个非终结符写出不带回溯的递归子程序。
(3) 经改写后的文法是否是LL(1)的?给出它的预测分析表。
(4) 给出输入串(a,a)#的分析过程,并说明该串是否为G的句子。
答案:(1) 对(a,(a,a)的最左推导为:S(T) (T,S) (S,S) (a,S) (a,(T)) (a,(T,S)) (a,(S,S)) (a,(a,S)) (a,(a,a))对(((a,a),∧,(a)),a) 的最左推导为:S(T) (T,S) (S,S) ((T),S) ((T,S),S) ((T,S,S),S) ((S,S,S),S) (((T),S,S),S) (((T,S),S,S),S) (((S,S),S,S),S) (((a,S),S,S),S) (((a,a),S,S),S) (((a,a),∧,S),S) (((a,a),∧,(T)),S)(((a,a),∧,(S)),S)《编译原理》课后习题答案第5章.pdf《编译原理》课后习题答案第5章.pdf(((a,a),∧,(a)),S) (((a,a),∧,(a)),a)(2) 改写文法为:0) S→a 1) S→∧ 2) S→( T ) 3) T→S N 4) N→, S N 5) N→ε非终结符FIRST集FOLLOW集S {a,∧,(} {#,,,)} T {a,∧,(} {)} N {,,ε} {)}对左部为N的产生式可知:FIRST (→, S N)={,} FIRST (→ε)={ε} FOLLOW (N)={)}由于SELECT(N →, S N)∩SELECT(N →ε) ={,}∩ { )}= 所以文法是LL(1)的。
C语言课后习题答案

void main()
{
int i=2,n,c;
c=0;
printf("守形数有:");
while(i<1001)
{
n=i*i;
if(n%10==i)
{
printf("%5d",i);
c++;
}
else if(n%100==i)
{
printf("%5d",i);
c++;
int main()
{
int i=0;
int nums[10];
int sum = 0;
int product = 1;
int sum_of_square = 0;
for( i=0; i<10; ++i )
{
printf( "请输入数据: " );
scanf( "%d", &nums[i] );
sum += nums[i];
#include<stdio.h>
void main()
{
int num1=1,num2=1,i=1;
printf("%3d%3d",num1,num2);
while(i<=20)
{
num1=num1+num2;
num2=num1+num2;
i++;
printf("%3d%3d",num1,num2);
{
n=a%10;
sum+=n;
C语言程序设计教程 第五章 课后习题参考答案

k++;
if(k%5==0)
printf("\n");
f1=f2;
f2=f;
}
printf("\n");
return 0;
}
P124 3统计一个整数的位数
#include<stdio.h>
int main()
{
int n,k=0;
printf("请输入n的值:");
int main()
{
int x,y,z,i=0;
for(x=1;x<=20;x++)
{
for(y=1;y<=33;y++)
{
for(z=3;z<=99;z=z+3)
{
if((5*x+3*y+z/3==100)&&(x+y+z==100))
i++;
}
}
}
printf("共有%d种买法:\n",i);
c语言程序设计教程第五章课后习题参考答案
P1242古典问题:兔子总数(斐波那契数列)
#include<stdio.h>
int main()
{
int f1=1,f2=1,f,i,k=0;
printf("%d\t %d\t",f1,f2);
k=k+2;
for(i=3;i<=20;i++)
{
f=f1+f2;
do
{
printf("请输入第%d个整数x=",i);
C语言第五章习题及答案

第五章习题答案一、选择题1) 有以下程序#include <stdio.h>main(){ int n=2,k=0;while(k++&&n++>2);printf("%d %d\n",k,n);}程序运行后的输出结果是A)0 2 B)1 3 C)5 7 D)1 22)有以下程序:main(){ int k=5;while(--k) printf("%d",k-=3);printf("\n");}执行后的输出结果是()。
A)1 B)2 C)4 D)死循环3)有以下程序#include<stdio.h>main(){int y=10;while(y--);printf(”y=%d\n”,y);}程序执行后的输出结果是A)y=0 B)y= -1 C)y=1 D)while构成无限循环4) 若变量已正确定义,有以下程序段i=0;do printf("%d,",i);while(i++);printf("%d\n",i)其输出结果是A)0,0 B)0,1 C)1,1 D)程序进入无限循环5)有以下程序:main(){ int i;for(i=1;i<=40;i++){ if(i++%5==0)if(++i%8==0) printf("%d",i); }printf("\n");}执行后的输出结果是()。
A)5 B)24 C)32 D)406) 有以下程序#includes <stdio.h>main(){ int a=1,b=2;for(;a<8;a++) {b+=a; a+=2;}printf ("%d,%d\n",a,b);}程序运行后的输出结果是(A)9,18 (B)8,11 (C)7,11 (D)10,147) 有以下程序#include<stdio.h>main(){int y=9;for( ; y>0;y--)if(y%3= =0) printf("%d",--y);}程序的运行结果是A)741 B)963 C)852 D)8754218) 一下程序段中的变量已正确定义for(i=0;i<4;i++,j++)for(k=1;k<3;k++); printf("*");程序段的输出结果是A)******** B)**** C)** D)*9) 有以下程序#iinclude <stdio.h>main(){ int i,j;for(i=3; i>=1; i--){ for (j=1;j<=2;j++) printf(“%d”,i+j);printf(“\n”);}}程序的运行结果是()A) 2 3 4 B) 4 3 2 C) 2 3 D) 4 53 4 5 5 4 3 3 4 3 44 5 2 3 答案:D 10)有以下程序main(){int i,j;for(i=1;i<4;i++){for(j=i;j<4;j++) printf(“%d*%d=%d “,i,j,i*j);printf(“\n”);}}程序运行后的输出结果是A) 1*1=1 1*2=2 1*3=3 B) 1*1=1 1*2=2 1*3=32*1=2 2*2=4 2*2=4 2*3=63*1=3 3*3=9C) 1*1=1 D) 1*1=11*2=2 2*2=4 2*1=2 2*2=41*3=3 2*3=6 3*3=9 3*1=3 3*2=6 3*3=911) 有以下程序#include<stdio.h>main(){int i,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++) m=m%j;printf("%d\n",m);}程序的运行结果是A)0 B)1 C)2 D)312) 有以下程序#include <stdio.h>main(){ int i=5;do{ if (i%3= =1)if (i%5= =2){printf(“*%d”,i); break; }i++;}while(i!=0);printf(“\n”);}程序的运行结果是A)*7 B)*3*5 C) *5 D)*2*6 答案:A13) 有以下程序#include <stdio.h>main(){ int c=0,k;for(k=1;k<3;k++)switch(k){ default:c+=k;case 2:c++;break;case 4:c+=2;break;}printf("%d\n",c);}程序运行后的输出结果是A)3 B)5 C)7 D)914) 设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是A)n=0;while((ch=getchar())!='\n')n++;B)n=0;while(getchar()!='\n')n++;C)for(n=0;getchar()!='\n';n++);D)n=0;for(ch=getchar();ch!='\n';n++);15)有以下程序#includemain(){int a=1,b=2;while(a<6){b+=a;a+=2;b%二10;}printf(”%d,%d\n”,a,b);}程序运行后的输出结果是A)5,11 B)7,1 C)7,11 D)6,116) 要求通过while循环不断读入字符,当读入字母N时结束循环。
C语言程序设计课后习题答案

C语言程序设计(第2版)课后习题答案第一章1.请参照本章例题,编写一个C程序,输出以下信息:**************************V ery good!**************************解:#include<stdio.h>void main(){printf(“**************************”);printf(“\n”);printf(“V ery good!\n”);printf(“\n”);printf(“**************************”);}2.编写一个C程序,输入a、b、c三个值,输出其中最大值。
解:#include<stdio.h>void main(){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);}第二章1.假如我国国民生产总值的年增长率为10%,计算10年后我国国民生产总值与现在相比增长多少百分比。
计算公式为P=(1+r)^n,r为年增长率;n为年数;P为与现在相比的百分比。
解:#include<stdio.h>#include<math.h>void main(){double P, r=0.1, n=10;P=pow((1+r), n);printf(“%lf\n”, P);}3.请编程序将“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‟,并输出。
算法分析与设计第二版习题答案-第三章到第五章

int bool=1;
int min;
int j;
int i;
int k;
int flag;
for(i=0;i<count;i++)
{
if(buf[i]=='(')
push(buf[i],i);
if(buf[i]==')')
{
flag=pop();
算法设计与分析(第二版)习题答案 主编:吕国英
算法设计与分析(第二版)习题答案(第三章)
第三章:
1.#include<stdlib.h>#include<stdio.h>int main(int argc,char **argv){int n;int i,j,k;int *buf;printf("请输入n的数值:");
;}for(i=0;i<N;i++){ for(j=0;j<N;j++) printf("]",buf[i][j]); printf("\n");}return
0;}6.#include<stdio.h>#include<stdlib.h>typedef struct s_node s_list;typedef s_list *link;struct s_node{char ch;int flag;link next;};link top;void push(char ch,int flag){link newnode;newnode=(link)malloc(sizeof(s_list));newnode->ch=ch;newnode- >flag=flag;newnode-
2024领导干部学法用法习题及答案(第五章)

第一节推动全社会树立法治意识课后习题阅读字体缩小字体放大一、单选1、法律的权威要靠(D )。
2、把( C)作为依法治国的长期基础性工作。
3、弘扬社会主义法治精神必需从(C )。
4、各级党委和政府要把( A)作为全面推动依法治国的一项基础性工程。
5、各级执法、司法部门要落实(D )的普法责任制。
二、多选1、法律的权威源自(AB )。
2、人民的内心拥护和真诚信仰是( ACD)。
3、从法制宣扬教化到法治宣扬教化,内涵发生了深刻变更,包括(AC )。
4、仔细实行党的十八界四中全会精神,须要(ABCD )。
5、国家工作人员是(ABCD )。
6、立法机关要通过(AB )等多种形式,动员社会各方面广泛参及立法。
三、推断1、法律的权威源自人民的内心拥护和真诚信仰。
(2)2、宪法的根基在于人民发自内心的拥护,宪法的伟力出自人民真诚的信仰。
(2)3、法律的生命力在于实施。
(2)4、党的十八届四中全会明确提出,要坚持把全民普法和遵守法律作为依法治国的长期基础性工作,深化开展法治宣扬教化。
(2)5、在当前我国社会,信权不信法、信钱不信法、信访不信法的现象已经不存在(1)6、党中心历来高度重视国家工作人员学法用法工作。
(2)7、《确定》提出“健全普法宣扬教化机制”,没有对深化开展全民普法工作提出新的要求。
(1)8、执法人员的法治观念、执法水同等对社会成员影响不大。
(1)9、形成遵守法律光荣、违法可耻的社会氛围,既是建设法治社会的重要条件,也是建设法治社会的重要任务。
(2)其次节推动多层次多领域依法治理课后习题阅读字体缩小字体放大一、单选1、( A)是改革发展的基础和前提。
2、习近平总书记深刻指出,和谐社会本质上是(C )。
3、( C)是深化开展法治创建活动的重点。
4、要把在(B)开展法治创建活动作为深化开展基层法治创建活动的重要组成部分。
二、多选1、推动多层次多领域依法治理是(ABC)的必定要求2、党的十八届四中全会强调,要坚持(ABCD)提高社会治理法治水平。
c语言程序设计第五版课后答案谭浩强第五章课后答案

c语⾔程序设计第五版课后答案谭浩强第五章课后答案c语⾔程序设计第五版课后答案谭浩强1.请画出例5.6中给出的3个程序段的流程图流程图1:流程图2:流程图3:2.请补充例5. 7程序,分别统计当“fabs(t)>= le- 6”和“fabs(t)> = le- 8”时执⾏循环体的次数。
fabs(t)>= le- 6 ,⽰例代码# include <stdio.h># include <math.h>int main(){int sign = 1;double pi = 0.0, term = 1.0;int n = 0;while (fabs(term) >= 1e-6){n++;term = 1.0 / (2 * n - 1)*sign;pi += term;sign = -sign;}pi *= 4;printf("pi的近似值是%lf\n", pi);printf("循环体循环了%d次\n", n);return 0;}运⾏截图:fabs(t)> = le- 8,⽰例代码# include <stdio.h># include <math.h>int main(){int sign = 1;double pi = 0.0, term = 1.0;int n = 0;while (fabs(term) >= 1e-8){n++;term = 1.0 / (2 * n - 1)*sign;pi += term;sign = -sign;}pi *= 4;printf("pi的近似值是%lf\n", pi);printf("循环体循环了%d次\n", n);return 0;}运⾏截图:3.输⼈两个正整数m和n,求其最⼤公约数和最⼩公倍数答案解析:该题题⽬直接使⽤“辗转相除法”来求解最⼤公约数,以除数和余数反复做除法运算,当余数为 0 时,就取得当前算式除数为最⼤公约数。
数据结构---C语言描述-(耿国华)-课后习题答案

第一章习题答案2、××√3、(1)包含改变量定义的最小范围(2)数据抽象、信息隐蔽(3)数据对象、对象间的关系、一组处理数据的操作(4)指针类型(5)集合结构、线性结构、树形结构、图状结构(6)顺序存储、非顺序存储(7)一对一、一对多、多对多(8)一系列的操作(9)有限性、输入、可行性4、(1)A(2)C(3)C5、语句频度为1+(1+2)+(1+2+3)+…+(1+2+3+…+n)第二章习题答案1、(1)一半,插入、删除的位置(2)顺序和链式,显示,隐式(3)一定,不一定(4)头指针,头结点的指针域,其前驱的指针域2、(1)A(2)A:E、AB:H、L、I、E、AC:F、MD:L、J、A、G或J、A、G(3)D(4)D(5)C(6)A、C3、头指针:指向整个链表首地址的指针,标示着整个单链表的开始。
头结点:为了操作方便,可以在单链表的第一个结点之前附设一个结点,该结点的数据域可以存储一些关于线性表长度的附加信息,也可以什么都不存。
首元素结点:线性表中的第一个结点成为首元素结点。
4、算法如下:int Linser(SeqList *L,int X){ int i=0,k;if(L->last>=MAXSIZE-1){ printf(“表已满无法插入”);return(0);}while(i<=L->last&&L->elem[i]<X)i++;for(k=L->last;k>=I;k--)L->elem[k+1]=L->elem[k];L->elem[i]=X;L->last++;return(1);}5、算法如下:#define OK 1#define ERROR 0Int LDel(Seqlist *L,int i,int k){ int j;if(i<1||(i+k)>(L->last+2)){ printf(“输入的i,k值不合法”);return ERROR;}if((i+k)==(L->last+2)){ L->last=i-2;ruturn OK;}else{for(j=i+k-1;j<=L->last;j++)elem[j-k]=elem[j];L->last=L->last-k;return OK;}}6、算法如下:#define OK 1#define ERROR 0Int Delet(LInkList L,int mink,int maxk){ Node *p,*q;p=L;while(p->next!=NULL)p=p->next;if(mink<maxk||(L->next->data>=mink)||(p->data<=maxk)) { printf(“参数不合法”);return ERROR;}else{ p=L;while(p->next-data<=mink)p=p->next;while(q->data<maxk){ p->next=q->next;free(q);q=p->next;}return OK;}}9、算法如下:int Dele(Node *S){ Node *p;P=s->next;If(p= =s){printf(“只有一个结点,不删除”);return 0;}else{if((p->next= =s){s->next=s;free(p);return 1;}Else{ while(p->next->next!=s)P=p->next;P->next=s;Free(p);return 1;}}}第三章习题答案2、(1)3、栈有顺序栈和链栈两种存储结构。
数据结构(C语言)第二版慕课版王海艳课后习题答案

数据结构(C语言)第二版慕课版王海艳课后习题答案第一章:绪论1.1 什么是数据结构数据结构是指相互之间存在着一种或多种特定关系的数据元素的集合,它包括数据的逻辑结构和物理结构。
1.2 数据结构的分类数据结构可以分为线性结构和非线性结构两种。
线性结构包括顺序表、链表、栈、队列等。
非线性结构包括树、图等。
1.3 抽象数据类型(Abstract Data Type,ADT)ADT是指一个数学模型及定义在该模型上的一组基本操作。
ADT包括三个要素:数据对象、数据关系和基本操作。
第二章:线性表2.1 线性表的定义和特点线性表是指n个数据元素的有限序列。
线性表的特点:数据元素之间存在一对一的线性关系。
2.2 顺序表顺序表是指用一段地址连续的存储单元依次存储数据元素的线性结构。
2.2.1 顺序表的结构顺序表的结构包括两部分:表头信息和表元素区。
表头信息包括表长和表容量两个属性。
表元素区包括具体存储的数据元素。
2.2.2 顺序表的基本操作•初始化顺序表:InitList(&L)•判断顺序表是否为空:ListEmpty(L)•获取顺序表长度:ListLength(L)•插入数据元素到顺序表:ListInsert(&L, i, e)•删除顺序表中的数据元素:ListDelete(&L, i, &e)•获取顺序表中的数据元素:GetElem(L, i, &e)•查找顺序表中元素的位置:LocateElem(L, e)•清空顺序表:ClearList(&L)•销毁顺序表:DestroyList(&L)2.3 链表链表是通过一组地址不连续的存储单元来存储数据元素的线性结构。
2.3.1 链表的结构链表的结构包括两部分:头结点和数据结点。
头结点保存链表的基本信息,数据结点存储数据元素本身以及指向下一个结点的指针。
2.3.2 链表的基本操作•初始化链表:InitList(&L)•判断链表是否为空:ListEmpty(L)•获取链表长度:ListLength(L)•插入数据元素到链表:ListInsert(&L, i, e)•删除链表中的数据元素:ListDelete(&L, i, &e)•获取链表中的数据元素:GetElem(L, i, &e)•查找链表中元素的位置:LocateElem(L, e)•清空链表:ClearList(&L)•销毁链表:DestroyList(&L)第三章:栈和队列3.1 栈栈是一种只能在表头进行插入和表头删除操作的线性表。
大学有机化学课后习题答案

徐寿昌编《有机化学》第二版习题参考答案第二章烷烃1、用系统命名法命名下列化合物(1)2,3,3,4-四甲基戊烷(2)3-甲基-4-异丙基庚烷(3)3,3,-二甲基戊烷(4)2,6-二甲基-3,6-二乙基辛烷(5)2,5-二甲基庚烷(6)2-甲基-3-乙基己烷(7)2,2,4-三甲基戊烷(8)2-甲基-3-乙基庚烷2、试写出下列化合物的结构式(1) (CH3)3CC(CH3)2CH2CH3(2) (CH3)2CHCH(CH3)CH2CH2CH2CH3(3) (CH3)3CCH2CH(CH3)2(4) (CH3)2CHCH2C(CH3)(C2H5)CH2CH2CH3(5)(CH3)2CHCH(C2H5)CH2CH2CH3(6)CH3CH2CH(C2H5)2(7) (CH3)2CHCH(CH3)CH2CH3(8)CH3CH(CH3)CH2CH(C2H5)C(CH3)33、略4、下列各化合物的系统命名对吗?如有错,指出错在哪里?试正确命名之。
均有错,正确命名如下:(1)3-甲基戊烷(2)2,4-二甲基己烷(3)3-甲基十一烷(4)4-异丙基辛烷(5)4,4-二甲基辛烷(6)2,2,4-三甲基己烷5、(3)>(2)>(5)>(1) >(4)6、略7、用纽曼投影式写出1,2-二溴乙烷最稳定及最不稳定的构象,并写出该构象的名称。
交叉式最稳定重叠式最不稳定8、构象异构(1),(3)构造异构(4),(5)等同)2),(6)9、分子量为72的烷烃是戊烷及其异构体(1) C(CH3)4(2) CH3CH2CH2CH2CH3 (3) CH3CH(CH3)CH2CH3(4) 同(1)10、分子量为86的烷烃是己烷及其异构体(1)(CH3)2CHCH(CH3)CH3(2) CH3CH2CH2CH2CH2CH3 , (CH3)3CCH2CH3(3)CH3CH2CH(CH3)CH2CH3(4)CH3CH2CH2CH(CH3)214、(4)>(2)>(3)>(1)第三章 烯烃1、略2、(1)CH 2=CH — (2)CH 3CH=CH — (3)CH 2=CHCH 2— CH 2CH CH 3MeH H i-PrEt Men-PrMe Me Et i-Prn-Pr (4)(5)(6)(7)3、(1)2-乙基-1-戊烯 (2) 反-3,4-二甲基-3-庚烯 (或(E)-3,4-二甲基-3-庚烯 (3) (E)-2,4-二甲基-3-氯-3-己烯 (4) (Z)-1-氟-2-氯-2-溴-1-碘乙烯(5) 反-5-甲基-2-庚烯 或 (E)-5-甲基-2-庚烯 (6) 反-3,4-二甲基-5-乙基-3-庚烯 (7) (E) -3-甲基-4-异丙基-3-庚烯 (8) 反-3,4-二甲基-3-辛烯 4、略 5、略 6、CH 3CH 2CHCH 2CH 3CH 3CH 2CCHCH 3CH 3CH 3CH 2CCHCH 3CH 3CH 3CH 2C CHCH 3CH 3CH 3CH 2CH CHCH 3CH 3CH 3CH 2COCH 3CH 3CHOCH 3CH 2CH CHCH 3CH 3(1)(2)(3)(4)(5)(6)(7)7、活性中间体分别为:CH 3CH 2+ CH 3CH +CH 3 (CH 3)3C + 稳定性: CH 3CH 2+ > CH 3CH +CH 3 > (CH 3)3C + 反应速度: 异丁烯 > 丙烯 > 乙烯8、略9、(1)CH 3CH 2CH=CH 2 (2)CH 3CH 2C(CH 3)=CHCH 3 (有顺、反两种) (3)CH 3CH=CHCH 2CH=C(CH 3)2 (有、反两种)用KMnO 4氧化的产物: (1) CH 3CH 2COOH+CO 2+H 2O (2)CH 3CH 2COCH 3+CH 3COOH (3) CH 3COOH+HOOCCH 2COOH+CH 3COCH 310、(1)HBr ,无过氧化物 (2)HBr ,有过氧化物 (3)①H 2SO 4 ,②H 2O (4)B 2H 6/NaOH-H 2O 2 (5)① Cl 2,500℃ ② Cl 2,AlCl 3(6)① NH 3,O 2 ② 聚合,引发剂 (7)① Cl 2,500℃,② Cl 2,H 2O ③ NaOH 11、烯烃的结构式为:(CH 3)2C=CHCH 3 。
鲁科版高考化学一轮复习课后习题 第五章 物质结构与性质 元素周期律 课时规范练17 化学键

课时规范练17 化学键一、选择题:本题共11小题,每小题只有一个选项符合题目要求。
1.(北京东城区期末)宏微结合是重要的化学学科素养。
下列对物质的微观认识正确的是( )A.1 mol HC≡CH分子中所含σ键数约为5×6.02×1023B.1 L 0.1 mol·L-1 Na2CO3溶液中,n(Na+)=2n(C O32-)=0.2 molC.共价化合物中,电负性大的成键元素表现为负价D.两个p轨道之间只能形成π键,不能形成σ键2.(山东潍坊期末)硅和碳是重要的非金属元素,有关化学键键能如下表所示:下列说法正确的是( )A.热稳定性:CH4<SiH4B.金刚石的熔点低于晶体硅C.共价键的键能与成键原子的核间距一定成反比D.硅烷在种类和数量上都不如烷烃多3.(辽宁葫芦岛期末)下列模型分别表示C2H2、S8、SF6的分子结构,下列说法错误的是( )A.32 g S8分子中含有0.125 mol σ键B.SF6分子中只含极性键C.1 mol C2H2分子中有3 mol σ键和2 mol π键D.1 mol S8中含有8 mol S—S键4.(山东菏泽期末)[Co(NH3)4(N3)2]ClO4(简称DACP)是我国科研工作者合成的一种新型起爆药,结构如图所示。
下列关于该物质的说法正确的是( )A.1 mol DACP中含有6 mol配位键B.1 mol DACP中N3-内所含σ键的物质的量为6 molC.NH3和Cl O4-中心原子的杂化方式不同D.DACP中含有的共价键都是极性共价键5.(辽宁丹东一模)下列关于配合物(NH4)2[PtCl6]、[Cd(NH3)4](OH)2的说法正确的是( )A.两种配合物均含有两种配位体B.两种配合物中的中心离子的配位数均为6C.1 mol [Cd(NH3)4]2+含有4 mol配位键D.向(NH4)2[PtCl6]的水溶液中加入硝酸银稀溶液,立即生成大量白色沉淀6.(山东青岛十七中阶段检测)下列关于C、Si及其化合物结构与性质的论述错误的是( )A.键能:C—C键>Si—Si键、C—H键>Si—H键,因此C2H6稳定性大于Si2H6B.SiH4中Si的化合价为+4,CH4中C的化合价为-4,因此SiH4还原性小于CH4C.Si原子间难形成双键而C原子间可以,是因为Si的原子半径大于C,难形成p-p π键D.立方型SiC是与金刚石成键、结构均相似的共价晶体,因此具有很高的硬度7.(山东济宁期末)已知大π键是3个或3个以上原子彼此平行的p轨道从侧面相互重叠形成的π键。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
T(T &d)
{cout<<"调用构造函数2."<<endl;
cout<<d.a<<'\t'<<d.b<<endl;
}
~T() {cout<<"调用析构函数."<<endl;}
int add(int x,int y=10){ return x+y;}
private:
int a,b;
};
void main()
}
答案:
Mary
Jack
Jim
Mary
4.#include<iostream.h>
class A
{public:
int f1();
int f2();
void setx(int m){ x=m;cout<<x<<endl;}
void sety(int n){ y=n;cout<<y<<endl;}
int getx(){return x;}
}
答案:
点(3,4)到点(4,5)的距离是:2.82843
8.#include <iostream.h>
class A
{public:
A(){ a=5; }
voidprinta(){ cout<<"A:a="<<a<<endl;}
private:
int a;
friend class B;
};
class B
C++作业答案
C
第
5.1
第7章1.在下列结构变量的定义中,不正确的是(d)。
(a)struct employee
{char name[20];
long code;
}emp;
(b)struct
{char name[20];
longcode;
}emp;
(c)struct employee
{charname[20];
cout<<a.f1()<<'\t'<<a.f2()<<endl;
}
答案:
10
5
10 5
15 5
5.#include <iostream.h>
class T
{ public:
T(int x,int y)
{a=x;b=y;
cout<<"调用构造函数1."<<endl;
cout<<a<<'\t'<<b<<endl;
long code;
};
employee emp;
(d) struct
{char name[20];
long code;
}employee;
employee emp;
2.已知有职工情况结构变量emp定义为:
struct employee
{char name[20];
long code;
struct
{int year;
(a)w.no(b)p->no(c)(*p).no(d)*p.no
6.若有以下声明和定义,则下列引用非法的是(d)。
struct data
{intn;
floatscore;
data*q;
};
data a[3]={1001,87,&a[1],1002,75,&a[2],1003,90,&a[0]};
data*p=a;
(a)p->num(b)(p++).num(c)(p++)->num(d)(*p).num
4.下列四个运算符中,优先级最低的是(a)。
(a)++(b).(c)->(d)()
5.若有以下声明和定义,则下列错误的引用是(d)。
struct worker
{int no;
char name[20];
}w,*p=&w;
node *q;
};
void main()
{node a[]={{"Mary",a+1},{"Jack",a+2},{"Jim",a}};
node *p=a;
cout<<p->s<<endl;
cout<<p->q->s<<endl;
cout<<p->q->q->s<<endl;
cout<<p->q->q->q->s<<endl;
int month;
int day;
}birth;
}emp;
下列对emp的 birth正确赋值方法是(d)。
(a)year=1980;month=5;day=1;
(b)birth.year=1980;birth.month=5;birth.day=1;
(c)emp.year=1980;emp.month=5;emp.day=1;
{T d1(4,8);
T d2(d1);
cout<<d2.add(10)<<endl;
}
答案:
调用构造函数1.
4 8
调用构造函数2.
48
20
调用析构函数.
调用析构函数.
6.#include <iostream.h>
class T
{ public:
T(int x){ a=x; b+=x;};
static void display(T c)
{ cout<<"a="<<c.a<<'\t'<<"b="<<c.b<<endl; }
private:
int a;
static int b;
};
int T::b=5;
void main()
{T A(3),B(5);
T::display(A);
T::display(B);
}
答案:
a=3 b=13
a=5 b=13
(a)成员函数(b)构造函数(c)析构函数(d)复制构造函数
11.下面对构造函数的不正确描述是( b )。
第8章(a)系统可以提供默认的构造函数
(b)构造函数可以有参数,所以也可以有返回值
(c)构造函数可以重载
(d)构造函数可以设置默认参数
12.下面对析构函数的正确描述是( a,c )。
(a)系统可以提供默认的析构函数(b)析构函数必须由用户定义
obj1.printa();
obj2.display1(obj1);
obj2.display2(obj1);
obj1.printa();
}
答案:
A:a = 5
display1:a = 6
display2:a = 4
A:a = 5
5.3
1.使用结构类型表示复数。设计程序输入两个复数,可以选择进行复数的+、-、×或÷运算,并输出结果。
解答:略。
3.使用结构表示X—Y平面直角坐标系上的点,程序顺序读入一个四边形的四个顶点坐标,判别由这四个顶点的连线构成的图形是否正方形、矩形或其它四边形。要求定义求两个点距离的函数使用结构参数。
break;
default: cout << "input error!" << endl;
return;
}
cout << "c=" << c.re;
cout << setiosflags( ios::showpos );
cout << c.im << "i" << endl;
return;
}
2.把一个班的学生姓名和成绩存放到一个结构数组中,寻找和输出最高分者。
struct data
{int n;
float score;
};
void main()
{data a[3]={1001,87,1002,72,1003,90},*p=a;
cout<<(p++)->n<<endl;
cout<<(p++)->n<<endl;
cout<<p->n++<<endl;
cout<<(*p).n++<<endl;
(c)析构函数没有参数(d)析构函数可以设置默认参数
13.对静态成员的不正确描述是( c,d )。
(a)静态成员不属于对象,是类的共享成员
(b)静态数据成员要在类外定义和初始化
(c)调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
(d)只有静态成员函数可以操作静态数据成员
14.下面选项中,不是类的成员函数为( c )。
{public:
void display1(A t)
{t.a++; cout<<"display1:a="<<t.a<<endl;};