1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【例5.28】编写一个程序,实现两个长整数相加的过程。 分析:这里的长整数是指无法用long型存储的数,为此用两个字符数组s1和s2进行存储,其和放在字符数组sum中。相加时,个位对齐,对应位相加,相加前将每位字符转换成数字,加后再转换为字符,用一个数字记录进位。 因为相加的两个串长度不同,个位对齐有困难,可以将字符串反转逆序,s1[0]和s2[0]就是个位,自然对齐了。 5 6 7 8 9 4 初始s1 4 9 8 7 6 5 反转s1 1 8 3 9 初始s2 9 3 8 1 反转s2 计算结果 i=0 j=13 jw=1 3 3 7 5 6 9 i=1 j=13 jw=1 i=2 j=17 jw=1 i=3 j=9 jw=0 i=4 j=6 jw=0 i=5 j=5 jw=0 \0 输出: 5 6 9 7 3 3 \0 void nsort(char str[ ]); void add(char s1[ ],char s2[ ],char sum[ ]); void main(){ char s1[40]={\0}, s2[40]={\0}, sum[50]={0}; cout被加数:; cins1; //输入被加数 cout加数:;cins2; //输入加数 nsort(s1); nsort(s2); //加数和被加数反转 add(s1,s2,sum); //相加 nsort(sum); //和反转 cout相加结果:sum\n; } void add(char s1[ ],char s2[ ],char sum[ ]) { int jw=0, i=0, j, l1, l2, len; //jw为进位 l1=strlen(s1);l2=strlen(s2); //求数字位数 len=l1l2?l1:l2; //len为位数大者 while(ilen) { j=s1[i]+s2[i]-96+jw; //计算第i位的和 if(j0)j+=48; //防止s1或s2中的某位为\0 if(j9) //有进位 sum[i]=j+38,jw=1; else //无进位 sum[i]=j+48,jw=0; i++; } if(jw) sum[i]=1; //处理最高位的进位 else sum[i]=\0; sum[i+1]=\0; //设置和的字符串结束符 } 字符转数字 void nsort(char str[ ]) { int i=0, j=strlen(str)-1; char t; while(ij) { t=str[i]; str[i]=str[j]; str[j]=t; i++; j--; } } 交换i、j位置字符 i、j相向变化 i指向串头,j指向串尾 【例5.29】有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。 分析: 用字符数组str存放一行文字,nstr存放删去字符ch后的新串。 扫描str,若当前字符不等于ch,则将该字符复制到nstr中,如此循环直到str扫描完毕。 #includeiostream.h #define N 50 void main() { char str[N],nstr[N],ch; int i=0,j=0; cout文字:; cin.getline(str,N); //输入一行字符 cout字符:; cinch; //输入待删除的字符 while(str[i]!=\0){ if(str[i]!=ch){ //如果不是要删除的字符 nstr[j]=str[i]; //就复制到新字符串 j++; } i++; } nstr[j]=\0; cout新串:nstrendl; } 【例5.30】编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。 #includeiostream.h //判断字符ch是否在字符串str中 int in(char ch,char str[ ]) { int i=0; while(str[i]!=\0) { if(str[i]==ch) return 1; i++; }

文档评论(0)

rovend + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档