您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 自考c++程序设计课后答案参考
第一章三、改错题1.没有定义变量num;2.不能给变量x,声明指向常量的指针constint*p=&x;如果吧x定义为常量const,*p不能当作“左值”。3.p为常量指针,不能吧p作为“左值”,p=&y,错误。四、编程题1.分别用字符和ASCII码形式输出整数值65和66.#includeiostreamusingnamespacestd;voidmain(){chara='A',b='B';intascii_1=53,ascii_2=54;//ASCII码中的,5和6cout字符输出:(int)a,(int)bendl;coutASCII码输出:(char)ascii_2(char)ascii_1,;cout(char)ascii_1(char)ascii_1endl;}2.编写一个int型变量分配100个整形空间的程序。#includeiostreamusingnamespacestd;voidmain(){int*p;p=newint[100];for(inti=0;i100;i++){*(p+i)=i;}for(i=0;i100;i++){cout*(p+i),;}deletep;}3.编写完整的程序,它读入15个float值,用指针把它们存放在一个存储快里,然后输出这些值和以及最小值。#includeiostream#includealgorithm//用于数组排列的头文件usingnamespacestd;voidmain(){float*p;p=newfloat[15];cout输入15个float类型的值:endl;for(inti=0;i15;i++){cin*(p+i);}for(i=0;i15;i++){cout*(p+i),;}sort(p,p+15);cout\n最小的是:*(p)endl;deletep;}4.声明如下数组:inta[]={1,2,3,4,5,6,7,8};先查找4的位置,讲数组a复制给数组b,然后将数组a的内容反转,再查找4的位置,最后分别输出数组a和b的内容。#includeiostream#includealgorithm#includefunctionalusingnamespacestd;voidmain(){inta[]={1,2,3,4,5,6,7,8},b[8];cout数组a中‘4’的位置是:find(a,a+8,4)endl;//查找4的位置copy(a,a+8,b);//将数组a复制给数组breverse_copy(b,b+8,a);//把数组b,逆向复制给a,完成a的逆转cout数组a反转后,‘4’的位置是:find(a,a+8,4)endl;//在查找4的位置cout数字a的内容:endl;for(inti=0;i8;i++)couta[i],;cout\n数组b中的内容:endl;for(i=0;i8;i++)coutb[i],;}第二章三、编程题1.使用多种方法编写将两个字符串连接在一起的程序。#includeiostream#includestringusingnamespacestd;voidmain(){//使用string类定义字符串,完成字符串连接stringstr1(C++),str2(程序设计);stringstr3;str3=str1+str2;//连接方式1coutstr3endl;//使用char数组定义字符串,完成连接charc1[]={c++},c2[]={program};charc3[20];inti=0,k=0;for(i=0;i20;i++)//初始化c3c3[i]='\0';i=0;while(c1[i]!='\0'){c3[k]=c1[i];i++;k++;}i=0;while(c2[i]!='\0'){c3[k]=c2[i];i++;k++;}coutc3endl;}2.已知一个string的对象str的内容为“Wearehere!”,使用多种方法输出“h”。#includeiostream#includefunctional#includealgorithm#includestringusingnamespacestd;voidmain(){stringstr1(Wearehere!);coutstr1[7]endl;//通过数组stringstr2=str1.substr(7,1);//通过得到子字符串coutstr2endl;char*p=find(str1.begin(),str1.end(),'h');//通过find函数if(p)cout*pendl;}第三章四、编程题1.编写一个求方程ax2+bx+c=0的根的程序,用3个函数分别求当b2-4ac大于零、等于零、和小于零时的方程的根。要求从主函数输入a,b,c的值并输出结果。#includeiostream.h#includemath.hvoidequation_1(inta,intb,intc){doublex1,x2,temp;temp=b*b-4*a*c;x1=(-b+sqrt(temp))/(2*a*1.0);x2=(-b-sqrt(temp))/(2*a*1.0);cout两个不相等的实根endl;coutx1=x1,x2=x2endl;}voidequation_2(inta,intb,intc){doublex1,x2,temp;temp=b*b-4*a*c;x1=(-b+sqrt(temp))/(2*a*1.0);x2=x1;cout两个相等的实根endl;coutx1=x1,x2=x2endl;}voidequation_3(inta,intb,intc){doubletemp,real1,real2,image1,image2;temp=-(b*b-4*a*c);real1=-b/(2*a*1.0);real2=real1;image1=sqrt(temp);image2=-image1;cout两个虚根endl;coutx1=real1+image1jendl;coutx2=real2+image2jendl;}voidmain(){inta,b,c;doubletemp;cout输入a,b,c的值endl;cinabc;cout方程为:ax*x+bx+c=0endl;temp=b*b-4*a*c;if(temp0)equation_1(a,b,c);if(temp==0)equation_2(a,b,c);if(temp0)equation_3(a,b,c);}2.定义函数up(ch),如字符变量ch是小写字母就转换成大写字母并通过up返回,否则字符ch不改变。要求在短小而完全的程序中显示这个程序是怎样被调用的。#includeiostreamusingnamespacestd;charup(charc){if(c=97&&c=123)return(c-32);elsereturnc;}voidmain(){inti;charc[15]={'A','v','e','t','E','T','%','&','4','Y','e','i','@','9','^'};for(i=0;i15;i++)coutup(c[i]),;coutendl;}3.编写主程序条用带实数r和整数n两个参数的函数并输出r的n次幂。#includeiostream.h#includemath.hdoublepower(doublea,intb){inti;doubleresult=1.0;for(i=0;ib;i++)result=result*a;returnresult;}voidmain(){doubler;intn;coutr=;cinr;coutn=;cinn;coutr的n次幂是:power(r,n)endl;}4.编写有字符型参数C和整形参数N的函数,让他们显示出由字符C组成的三角形。其方式为第1行有1个字符C,第2行有2个字符C,等等。#includeiostreamusingnamespacestd;voidprint_triangle(charc,intn){inti,j;for(i=0;in;i++){for(j=0;j=i;j++){coutc;}coutendl;}}voidmain(){print_triangle('a',10);}5.编写一个ieqiu字符串长度的函数,strlen(),再用strlen()函数编写一个函数revers(s)的倒序递归程序,使字符串s逆序。#includeiostream#includestringusingnamespacestd;intstrlen(char*str){intlen=0;while(str[len]!='\0'){len++;}returnlen;}voidrevers(char*b){charc;intj,len;len=strlen(b);j=len/2-1;while(j=0){c=*(b+j);*(b+j)=*(b+len-j-1);*(b+len-j-1)=c;j--;}b[len]='\0';}voidmain(){charstr[]={1234567890};coutstr----的长度:strlen(str)endl;coutstrendl;//倒序前revers(str);//coutstrendl;//倒序后}6.用函数模板实现3个数值中按最小值到最大值排序的程序。#includeiostreamusingnamespacestd;templatevoidsort(Ta,Tb,Tc){Tarray[3],temp;inti,j;array[0]=a;array[1]=b;array[2]=c;for(i=0;i3;i++){for(j=0;j2;j++)if(array[j]array[j+1]){temp=array[j];array[j]=array[j+1];array[j+1]=temp;}}coutarray[0]array[1]array[2]endl;}voidmain(){sort(5,1,9);}7.利用函数模板设计一个求数组元素中和的函数,并检验之。#includeiostreamusingnamespacestd;templateTsum(Ta[],intn){inti;Ts=0;for(i=0;in;i++)s=s+a[i];returns;}voidmain(){inta[5]={1,2,3,4,5};ints=sum(a,5);coutsendl;}8.重载上题中的函数模板,使他能够进行两个数组的求和。#includeiostreamusingnamespacestd;templateTsum(Ta[],intn){inti;Ts=0;for(i=0;in;i++)s=s+a[i];returns;}template//重载上面的模板Tsum(Ta[],intn,Tb[],intm){returnsum(a,n)+sum(b,m);}voidmain(){inta[5]={1,2,3,4,5};intb[10]={1,2,3,4,5,6,7,8,9,10};ints1=sum(a,5);ints2=sum(b,10);i
本文标题:自考c++程序设计课后答案参考
链接地址:https://www.777doc.com/doc-3861612 .html