《C++程序设计教程(第2版)》例题源码_第1页
《C++程序设计教程(第2版)》例题源码_第2页
《C++程序设计教程(第2版)》例题源码_第3页
《C++程序设计教程(第2版)》例题源码_第4页
已阅读5页,还剩187页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章C++语言简介例1」第一个C++程序,在计算机屏幕上显示:HelloWorld!//Example1-1:屏幕上显示:HelloWorld!#include<iostream>usingnamespacestd;intmain(){cout«”HelloWorld!"«endl;return0;)例1・2按照欧几里德算法,编写ー个程序来求解任意两个正整数的最大公因数。“Example1・2:计算两个正整数的最大公因数#include<iostream>usingnamespacestd;intmain(){/Z说明三个整型变量p,q,rintp,q,r;//提示用户由键盘输入两个正整数cout«"Pleaseinputtwointegers:"«endl;cin»p»q;//如果p<q,交换p和qif(P<q){r=p;p=q;q=r;/Z计算p除以q的余数rr=p%q;/Z只要r不等于0.重复进行下列计算while(r!=0){p=q;q=r;r=p%q;}/Z输出结果cout«'Themaximumcommondivisoris"«q« «endl;return0;)例レ3加法计算器程序。//Example1-3:加法计算器程序#include<iostream>usingnamespacestd;intmain(){doublea,b,c;cout«nPleaseinputtwonumbers:";cin»a»b;c=a+b;cout«a«"+"«b«"="«c«endl;return0;}例1d显示生R卡。该程序首先耍求输入收信人和发信人的姓名,然后在屏幕上显示出完整的生日卡来。//Example1-4:显示生日卡#include<iostream>usingnamespacestd;intmain()(charname1[41],name2[41];cout«endl«”Pleaseinputyourfriend'sname:cin»name1;cout«endl«"Pleaseinputyourname:M;cin»name2;cout«endl«"========================="«endl;cout«"Mydear"«name1«","«endl;cout«"Happybirthdaytoyou!"«endl;cout«” yours>"«endl;cout«" "«name2«endl;cout«"========================"«endl;return0;)例1-5使用梯形法计算定积分『,(x)厶,其中。=0,b=l,被积函数为sin(x),取积分区间等分数为1000。//Example1-5:用梯形法计算定积分#include<iostream>#include<cmath>usingnamespacestd;intmain()doublea,b;doubleh;doublesum;intn;inti;a=0.0;b=1.0;n=1000;h=(b-a)/n;sum=(sin(a)+sin(b))/2;for(i=l;i<n;i=i+l)sum=sum+sin(a+i*h);sum=sum*h;cout«HTheresultisM«sum«endl;return0;)例1-6计算星球之间的万有引力。//Example1-6:计算星球之间的万有引力#include<iostream>usingnamespacestd;doublegrav(doubleml,doublem2,doubledistance)(doubleg,G=6.67E-11;g=G*m1*m2/(distance*distance);returng;intmain()doubleGse,Gme,Msun,Mearth,Mmoon,Dme;Msun=1.987E30;〃太阳质量1.987x1()3。千克Mearth=5.975E24; 〃地球质量5.975x1024rp^Gse=grav(Msun,Mearth,1.495E11); 〃太阳与地球两者间距1.495x10い米cout«'ThegravitationbetweensunandearthisM«Gse«MN."«endl;Mmoon=7.348E22;〃月亮质量7.348x1()22千克Dme=3.844E5; 〃月亮与地球两者间距3.844x1()5米Gme=grav(Mmoon,Mearth,Dme);cout«叮hegravitationbetweenmoonandearthisn«Gme«*'N."«endl;return0;}第2章基本数据类型例2-1取ー个整型变量的最低4位。//Example2-1;取整型量的最低4位#include<iostream>usingnamespacestd;inti;coutvv”请输入ー个整数:";cin»i;coutvvivv”的最低4位对应的十进制数是:H«(i&0X0F)«endl;return0;)例2・2根据三边长求三角形面积。//Example2-2:求三角形面积#include<iostream>#include<cmath>usingnamespacestd;intmain(){doublea,b,c,s,area;cout«”Pleaseinputa,b,c=*';cin»a»b»c;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));cout«"area="«area«endl;return0;}例2・3求一元二次方程ax,bx+B。的根,其中系数a,b,c为实数,由键盘输入。IIExample2-3:解一元二次方程#include<iostream>#include<cmath>usingnamespacestd;intmain(){doublea,b,c,delta,p,q;cout«"Pleaseintputa,b,c=cin»a»b»c;delta=b*b-4*a*c;p=-b/(2*a);q=sqrt(fabs(delta))/(2*a);if(delta>=0)cout«"x1="«p+q«endl«"x2="«p-q«endl;else|cout«"xl="«p«"4-j"«q;cout«endl«"x2="«p«"-j"«q«endl;)return0;)例2T温度转换:输入一个华氏温度,计算并输出对应的摄氏温度值。//Example2-4:温度转换#include<iostream>usingnamespacestd;intmain()(doublec,f;coutvv”请输入ー个华氏温度:”;cin»f;c=5.0/9.0*(f-32);coutvv”对应于华氏温度“vvkv”的摄氏温度为"vvcvvendl;return0;}例2-5输入一个四位无符号整数,反序输出这四位数。//Example2-5:反序输出#include<iostream>usingnamespacestd;intmain()(unsignedintn;charcl,c2,c3,c4;coutvv”请输入一个界于1000与9999之间的数:”;cin»n;coutvv”反序输出前的数为:',«n«endl;cl=n%10+0;〃分离个位数字c2=n/10%10+,0,;〃分离十位数字c3=n/100%10+'0‘;〃分离百位数字c4=n/1000+,0,;〃分离千位数字coutvv”反序输出后的数为:*'«cI<<c2<<c3«c4«endl;return0;}例2・6大小写转换:输入一个字符,判断它是否为大写字母,如是,将其转换为对应的小写字母输出;否则,不用转换直接输出。//Example2-6:大小写转换#include<iostream>usingnamespacestd;intmain()charch;coutvv”请输入ー个字母:";cin»ch;if(ch>=,A,&&ch<=,Z,)ch=ch-,A,+,a,;coutvv”将大写转换为小写后,该字母为:"«ch«endl;)例2-7找零钱问题:假定有伍角、壹角、伍分、贰分和壹分共五种硬币,在给顾客找硬币时,一般都会尽可能的选用硬币个数最小的方法。例如,当要给某顾客找七角二分钱时,会给他ー个伍角,2个壹角和1个贰分的硬币。请编写一个程序,输入的是要找给顾客的零钱(以分为单位),输出的是应该找回的各种硬币数目,并保证找回的硬币数最少。//Example2-7!找零钱问题#include<iostream>usingnamespacestd;intmain(){intchange; 〃存放零钱的变量coutvぐ请输入要找给顾客的零钱(以分为单位)”;cin»change;coulvv”找给顾客的五角硬币个数为:“vvchange/50<vendl;change=change%50;coutvv"找给顾客的壹角硬币个数为:"〈〈changeハ0«endl;change=change%10;coul〈ぐ找给顾客的伍分硬币个数为:"«change/5«endl;change=change%5;cout〈〈”找给顾客的贰分硬币个数为:“〈〈change/2«endl;change=change%2;cout〈ぐ找给顾客的壹分硬币个数为:“〈〈change〈〈endl;

第3章控制结构例3・1编程实现分段函数TOC\o"1-5"\h\zfx+l, x<0y=<1, 0<x<lX3 1<XIIExample3-1:分段函数#include<iostream>usingnamespacestd;intmain()(doublex,y;cout«MPleaseinputx=";cin»x;if(x<0){y=x+l;cout«',x=,'«x«H,y=x+1=M«y«endl;}elseif(x<l)//0<x<1elseif(x<l)//0<x<1y=l;cout«,,x=,,«x«n,y=,'«y«endl;)else //1<x{y=x*x*x;coutvv”x="vvx<v",y=x*x*x="«y«end1;)return0;)例3・2编写一个程序,将百分制的学生成绩转换为优秀、良好、中等、及格和不及格的5级制成绩。标准为:优秀:100.90分;良好:80-89分;中等:70-79分;及格:60-69分;不及格:60分以下。//Example3-2:将百分制的分数转换为5级制分数#include<iostream>usingnamespacestd;intmain()intold_grade,new_grade;cout«HPleaseinputthescore:cin»oldegrade;switch(old_grade/10)/Z根据转换值进行分支选择(case10:case9:new_grade=5;break;case8:new_grade=4;break;case7:new_grade=3;break;case6:new_grade=2;break;default:new_grade=1;cout«nBeforetransformed,thescoreisH«old_grade«endl;cout«''Aftertransformed,thescoreis"«new_grade«endl;return0;)例3-3计算e=l+丄+丄+...+丄+...,当通项丄〈IO”时停止计算。

1!2!n\ n\//Example3-3:计算常数e的值#include<iostream>usingnamespacestd;intmain()(doublee=1.0;doubleu=1.0;intn=1;while(u>=1.0E-7)(u=u/n;e=e+u;n=n+1;}cout«"e=n«e«M(n=°«n«"«endl;例3・4使用do-while结构重新编写例3-3的程序。//Example3-4:计算常数e的值#include<iostream>usingnamespacestd;intmain()(doublee=1.0;doubleu=1.0;intn=1;do{u=u/n;e=e+u;n=n+l;}while(u>=1.0E-7);cout«"e=M«e«'*(n=H«n«"«endl;return0;)例3-5计算1+2+3+...+100//Example3-5r计算1+2+3+...+100usingnamespacestd;intmain(){intsum=O;for(inti=l;i<=100;i++)sum=sum+i; //累加求和cout«M1+2+3+..100=n«sum«endl;return0;}例3・6编写一个求绝对值的函数。//Example3-6:求双精度类型量的绝对值doublemydabs(doublex)(returnx>0?x:-x;)例3-7利用迭代公式求平方根。设x= ,则迭代公式为(ん+。ん+1= 2X-X迭代结束条件取相对误差上<£./+1//Example3-7:用迭代公式求平方根#include<iostream>#include<cmath>usingnamespacestd;constdoubleEPS=1.0e-10;intmain(){doublea,x;cout«"Pleaseinputthevalue:";cin»a;doublexO,xl;xl=1.0;if(a>0.0) /Z避免负数开方(do(x0=x1;xl=(x0+a/x0)/2;}while(fabs((xO-xl)/xl)>=EPS);〃fabs()函数为求绝对值的库函数x=xl;)elseX—a;if(x<0)cout«"Thenegativedoesnothavesquareroot!"«endl;elsecout«'*Thesquarerootof"«a«"is"«x«endl;return0;}例3・8求兀的近似值。//Example3-8:求兀的近似值#include<iostream>#include<cmath>usingnamespacestd;intmain()(ints=1;doublen=1.0,u=1.0,pi=0.0;while(fabs(u)>=1.0e-4){pi=pi+u;//累加通项n=n+2;s=-s; 〃符号位的生成u=s/n; /Z通项}cout«"pi="«4*pi«endl;return0;)例3・9求水仙花数。如果一个三位数的个位数、十位数和百位数的立方和等于该数自身,则称该数为水仙花数。编ー程序求出所有的水仙花数。//Example3-9:打印所有的水仙花数#include<iostream>usingnamespacestd;intmain(){intn,i,j,k;for(n=100;n<=999;n++)(i=n/100; //取出n的百位数j=(n/10)%10;/Z取数n的十位数k=n%10; /Z取出n的个位数if(n=i*i*i+j*j*j+k*k*k)cout«n«M="«i«,,A3+M<<j«,,A3+“v<kvv"A3"vvendl;}return0;)例3・10编写程序制作九九乘法表。//Example3-10:制作乘法表#include<iostream>usingnamespacestd;inti,j;for(i=l;i<10;i++){for(j=l;j<=i;j++)cout«j«H*n«ivv"=”<vi*j«n\tM;cout«endl;}return0;}例3・U对于任意给定的ー个正整数n,统计其阶乘n!的末尾中〇的个数。//Example3-11:统计阶乘n!的末尾中。的个数#include<iostream>usingnamespacestd;intmain()(intn;intsum=0;inti,k; 〃循环控制变量cout«"Pleastinputapositivenumber:cin»n;fbr(i=5;i<=n;i=i+5)〃只有5的倍数オ含5的因子intm=i;for(k=0;m%5==0;k++)m=m/5;sum=sum+k;)cout«"Thenumberofzeroinn«n«"!is:,'«sum«endl;return0;)第4章数组与字符串例4」给ー维数组输入7个整数,找出该数组中的最大数。//Example4-1:求数组中的最大元素#include<iostream>usingnamespacestd;intmain()(inta[7];cout«nPleaseinputanarraywithsevenelements:H«endl;〃输入每个数组元素的值fdr(inti=0;i<7;i++)cin»a[i];intbig=a[0];/Z遍历整个数组/Z遍历整个数组if(a|j]>big)big=a|j];cout«"max="«big«endl;return0;)例4-2将矩阵M置成单位阵//Example4-2:生成单位阵#include<iostream>usingnamespacestd;intmain()(intM[5][5];inti,j;/Z初始化数组for(i=0;i<5;i++)(for(j=0;j<5;j++)M[i][j]=0;/Z输出整个数组元素fbr(i=0;i<5;i++)(for(j=0;j<5;j++)cout«endl;}return0;}例4・3编写ー个用来计算字符串长度的函数mystrlen。,并用主函数验证。//Example4-3I求字符串的长度#include<iostream>usingnamespacestd;〃计算字符串的长度的函数intmystrlen(charstring1])(intlen=0;while(string[len]!=、。')len=len+1;returnlen;〃测试计算字符串长度的主函数charstring[100];cout«"Pleaseinputastring(within99characters):n«endl;cin»string;cout«"Thelengthofthestringis:,,«mystrlen(string)«endl;return0;)例4-4string类的运算符操作//Example4-4string类的运算符操作#include<iostream>#include<string>usingnamespacestd;intmain(){stringstrl("Alpha");stringstr2("Beta*');stringstr3("Omega");stringstr4;/Z字符串赋值str4=strl;cout«strl«endl«str4«endl;/Z字符串连接str4=strl+str2;cout«str4«endl;str4=strl+nto'*+str3;cout«str4«endl;/Z字符串比较if(str3>strl)cout«"str3>strlM«endl;if(str3=strl+str2)cout«nstr3==strl+str2M«endl;//使用null结束的字符用赋值strl='ThisisaNULL-terminatedstring.";cout«strl«endl;//使用字符串对象构造另一个字符串stringstr5(strl);cout«str5«endl;/Z输入字符串cout«"Enterastring:";cin»str5;cout«str5«endl;return0;)例4-5编写程序用于计算如下两个矩阵之和。123456789101112147102581136912//Example4-5-1:矩阵相加(使用二维数组来存储矩阵)#include<iostream>usingnamespacestd;intmain()(constintM=3;constintN=4;doublea[M][N]={2,3,4,6,7,8,9,10,11,12);doubleb[M][N]={4,7,10,5,8,11,6,9,12);/Z结果矩阵cout«"矩阵a和矩阵b的和的矩阵c为:"«endl;/Z两个矩阵的加减是对应矩阵元素的加减for(inti=0;i<M;i=i+l){for(intj=0;j<N;j=g+l)(c[i][j]=a[i]U]+b[i][j];cout«c[i]|j]«"\t";)cout«endl;)return0;)//Example4-5-2:矩阵相加(使用ー维数组来存储矩阵)#include<iostream>usingnamespacestd;intmain()(constintM=3;constintN=4;/Z定义三个ー一维数组,其元素数与矩阵元素数相同doublea[M*N]=2,3,4,6,7,8,9,10,11,12);doubleb[M*N]=(4,7,10,5,8,11,6,9,12);doublec[M*N]; /Z结果矩阵cout«"矩阵a和矩阵b的和的矩阵c为:"«endl;/Z两个矩阵的加减是对应矩阵元素的加减for(inti=0;i<M;i=i+l)(for(intj=0;j<N;j=j+l)(/Z二维数组中下标为「田]的元素对应ー维数组下标为i・列数+j的元素c[i*N+j]=a[i*N+j]+b[i*N+j];cout«c[i*N+j]«"\t";cout«endl;)return0;}例4-6编写ー个用于对整型数组进行排序的程序,排序方法使用简单的交换排序法。//Example4-6I交换排序#include<iostream>usingnamespacestd;intmain(){constintCOUNT=16;intlist[]=(503,87,512,61,908,170,897,275,653,426,154,509,612,677,765,703};for(inti=0;i<COUNT;i++)for(intj=COUNT-l;j>i;j-)if(list[j-l]>list(j])inttmp=list|j-l];list|j-l]=Ust|j];listfj]=tmp;)cout«'Theresultisゾ«endl;/Z输出排序后的数组for(intk=0;k<16;k++)cout«list[k]«Hn;cout«endl;return0;)例4・7计算50!//Example4-7:利用数组计算阶乘#include<iostream>usingnamespacestd;intmain()(constintMAXSIZE=100;intanay[MAXSIZE];intn;cout«Mn=M;cin»n;intsum,sc;inti,j;for(i=0;i<MAXSIZE;i++)array[i]=O;array[O]=l;for(i=2;i<=n;i++)(sc=O;for(j=0;j<MAXSIZE;j++)(sum=array[j]*i+sc; 〃上一次进位值和当前计算结果求和sc=sum/10; 〃存放进位数值array[j]=sum%10; 〃将余数存入对应数组元素)Icout«n«H!=M;for(i=MAXSIZE-l;i>=0;i—)cout«array[i];cout«endl;return0;)例4・8编写ー个字符串处理程序,将一个字符串之中的所有小写字母转换为相应的大写字母。//Example4-8:将字符串中所有的小写字母转换为大写字母#include<iostream>usingnamespacestd;intmain()(charstr[]="Thisisasample";cout«nTheoriginalstringis:"«str«endl;inti=0;while(str[i]!=0)(if(str[i]>='a,&&str[i]<='z')str[i]=str[i]・'a'+'A';i=i+l;}cout«"Aftertransform:M«str«endl;return0;)例4・9字符串连接。//Example4-9:连接两个字符串#include<iostream>#include<cstring>usingnamespacestd;chardestination[81]=,,abcdefghijklmnopqrstuvwxyzH;charsource。="ABCDEFGHIJKLMNOPQRSTUVWXYZ”;inti=strlen(destination);intj=0;while(source[j]!=0)destination[i++]=source[j++];destination)iI=0;cout«nTheresultis:n«destination«endl;return0;)第5章函数例5・1编写ー个求阶乘n!的函数。//Example5-1:函数fac()计算阶乘n!intfac(intn)(intresult=1;if(n<0)return-1;elseif(n==0)return1;while(n>l)result*=n;n--;}returnresult;)例5-2阶乘函数的调用。//Example5-2:测试阶乘计算函数的主程序#include<iostream>usingnamespacestd;intmain()(intn;cout«”Pleaseinputanumberntocalculten!:cin»n;cout«n«n!="«fac(n)«endl;return0;)例5-3交换两个变量的值。//Example5-3:交换两个变量的值(不成功)#include<iostream>usingnamespacestd;voidswap(intx,inty){inttmp;tmp=x;x=y;y=tmp;/Z测试函数swap()用的主函数intmain(){inta=2,b=3;cout«”Beforeexchange:a="«a«n,b="«b«endl;swap(a,b);cout«"Afterexchange:a="«a«",b="«b«endl;return0;)例5・4利用引用编写交换函数swap()。//Example5-4:交换两个整形变量的值#include<iostream>usingnamespacestd;voidswap(int&x,int&y){inttmp=x;x=y;y=tmp;)〃测试函数swap()用的主函数intmain(){inta=2,b=3;cout«"Beforeexchange:a="«a«ヽb="«b«endl;swap(a,b);cout«"Afterexchange:a="«a«H,b="«b«endl;return0;)例5-5编写ー个用于对整型数组进行排序的函数,排序方法使用例4-6的简单交换排序法。//Example5-5:交换排序#include<iostream>usingnamespacestd;〃函数bubble_up():冒泡法排序voidbubble_up(intlist[],intcount)(for(inti=0;i<count;i=i+l)fbr(intj=count-l;j>i;j=j-l)if(list|j-l]>list|j])(inttmp=list[j-l];list[j-l]=list[j];list[j]=tmp;))〃测试冒泡法排序的主程序inti;intarray[16]=(503,87,512,61,908,170,897,275,653,426,154,509,612,677,765,703};cout«”原数组是:"«endl;for(i=0;i<16;i++)cout«array[i]«"”;cout«endl;bubble_up(array,5)J 〃函数调用cout«”对数组前5项进行排序后的结果是:“<<endl;for(i=0;i<16;i++)cout«array[i]«"”;cout«endl;bubble_up(array,16);cout«”对整个数组排序后的结果是:"«endl;for(i=0;i<16;i++)cout«array[i]«"”;cout«endl;return0;例5-6全局变量和局部变量。//Example5-6:全局变量和局部变量#include<iostream>usingnamespacestd;intx; 〃声明全局变量intfiincl(intx)/Z函数funcl()有一个名为x的参数(return(x+5)*(x+5);)intfunc2(inty)(intx=y+5; //函数func2()中声明了一个名为x的局部变量returnx*x;)intmain()!x=0; //在主函数中为全局变量x赋值cout«nTheresultinfund:H«funcl(5)«endl;cout«nTheresultinfunc2:H«func2(2)«endl;cout«"x="«x«endl;return0;)例5-7一元作用域运算符::的使用//Example5-7:一元作用域运算符::的使用#include<iostream>usingnamespacestd;intx=0;/Z声明全局变量intx=0;intmain(){intx=5; 〃声明局部变量cout«Mglobalvariable:"«::x«endl;cout«nlocalvariable:"«x«endl;return0;}例5・8求任意两个整数的最大数(函数原型声明的使用)。//Example5-8:求两数中的大数#include<iostream>usingnamespacestd;intmax(intx,inty); 〃函数原型声明intmain()(cout«'Entertwointegers:inta,b;cin»a»b;cout«'Themaxiumnumberis"«max(a,b)«endl;return0;}/Z函数定义intmax(intx,inty)returnx>y?x:y;例5-9静态局部变量的使用//Example5-9:静态局部变量的使用#include<iostream>usingnamespacestd;intfunc()|staticintcount=0; //声明静态局部变量并初始化return++count;/Z本函数每执行ー次,变量值加1}intmain()(/Z分别调用!0次func()函数for(inti=0;i<10;i++)cout«func()«^tn;cout«endl;return0;)例5・10打印1000〜10000之间的回文数。所谓回文数是指其各位数字左わ对称的整数,例如1232k789987、1等都是十进制回文数。//Example5-10:打印回文数#include<iostream>〃函数原型声明usingnamespacestd;〃函数原型声明boolIspalindrome(intn);/Z找出并显示100〇〜10000间的回文数for(inti=1000;i<10000;i++)!if(Ispalindrome(i))cout«i«n\tn;)cout«endl;return0;)〃判断是否回文数函数boolIspalindrome(intn)(intk,m=0;k=n;while(k){m=m*10+k%10;k=k/10;)return(m==n);)//Example5-11:字符串比较函数intmystrcmp(charsi[],chars2[]){inti=0;while(sl[i]==s2[i]&&sl[i]!=0&&s2[i|!=0)i++;returnsi[i]-s2[i];}例5・12编写一个函数,实现矩阵相乘运算。//Example5-12:计算两个矩阵的乘积#include<iostream>usingnamespacestd;/Z函数matrix_multi():计算两个矩阵的乘积voidmatrix_multi(doublea[],doublebロ,doublec[],int1,intm,intn)(inti,j,k;for(i=0;i<l;i++)fbr(j=O;j<n;j++)(c[i*n+j]=0;for(k=0;k<m;k++)c[i*n+j]=c[i*n+j]+a[i*m+k]*b[k*n+j];)}/Z测试上述矩阵相乘函数的主程序doublea[20]=1.0,3.0,-2.0,0.0,4.0,-2.0,-1.0,5.0,-7.0,2.0,0.0,8.0,4.0,1.0,-5.0,3.0,-3.0,2.0,-4.0,1.0};doubleb[15]=!4.0,5.0,-1.0,2.0,-2.0,6.0,7.0,8.0,1.0,0.0,3.0,-5.0,9.0,8.0,-6.0};doublec[12];matrix_multi(a,b,c,4,5,3);cout«"Theresultisc=n«endl;for(inti=0;i<4;i++)(for(intj=0;j<3;j++)cout«c[i*3+j]«Mcout«endl;}

第6章指针例6-1编写用于交换两个整型变量的值的函数。//Example6-1I函数swap():交换两个整形变量的值voidswap(int*xp,int*yp)(inttmp;imp=*xp;*xp=*yp;*yp=tmp;)例6-2编写ー个字符串复制函数mystrcpy()//Example6-2:复制字符串voidmystrcpy(char*destin,char*source)(while(*source!=0)//如果・source==0则表示原字符串结束{*destin=*source;/Z复制字符source++; //source移向原字符串中的下ー个字符destin++; //destin移向新字符数组的下一位置*destin=0;*destin=0;//在新字符串尾部添写ー个结束符。例6・3编写ー个函数用于将一个float类型的数组清零(即将其所指定前!en项的所有元素全部置为0)〇//Example6-3:数组清零voidclear_array(float*ptr,intlen)(〃ptr指向数组的首地址,len是准备清零的数组元素个数float*qtr=ptr+len; 〃qtr指向被清零的最后ー个数组元素之后的下一位置while(ptr<qtr)(*ptr=0.0; //将指针所对应的数组元素置。ptr++; //指针向后移动ー个单位I)例6«利用动态数组来求斐波那挈数列的前n项。//Example6-4:用动态数组来求斐波那挈数列的前n项#include<iostream>usingnamespacestd;intmain()(intn;cout«HPleaseinputn"?”;cin»n;int*p=newint[n+l];〃如果没有申请到内存或数据输入有误,则返回if(p==0IIn<=0)(cout«',Error!,'«endl;return-1;)p[0]=0;cout«p[0]«endl;cout«p[1]«endl;for(inti=2;i<=n;i++)|p[i]=p[i-2]+p[i-l];cout«p[i]«endl;)delete[]p; 〃释放数组空间return0;)例6-5编写ー个查字典的函数。//Example6-5:二分法査词典

char*search_word(char*word,char*dict[],intn)intlow=0,high=n-1,mid,searchpos,wordlen=strlen(word);domid=(low+high)/2;//算出表中点元素的下标searchpos=strnicmp(word,dict[mid],wordlen);〃利用字符串比较库函数if(searchpos=0)returndict[mid];elseif(searchpos<0)high=mid-1;elseif(searchpos=0)returndict[mid];elseif(searchpos<0)high=mid-1;elselow=mid+1;}while(high>low);returnNULL;/Z查找成功/Z把表缩小为原表的前一半/Z把表缩小为原表的后・半/Z查找失败)例6・6编写ー个字符串比较函数,仅比较两个字符串的前面若干个字符,且在比较时不区分大小写字母。//Example6-6:不区分大小写字母的部分字符串比较intmystmicmp(char*strl,char*str2,intn)while(toupper(*strl)=toupper(*str2)&&*strl!=0&&*str2!=0&&n>0)strl++;str2++;n-;)returntoupper(*strl)-toupper(*str2);)例6・7将字符串反序输出。//Example6-7I反序输出#include<iostream>usingnamespacestd;intmain(){charstr[]=t,abcdefM;char*p=&str[5];〃指针指向str数组的下标为5的元素,即字符,『while(p>=str) 〃当指针没

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论