? ? 来自http://www.voidcn.com/article/p-qwqzhqvk-po.html
- #include?<stdio.h>??
- #include?<stdlib.h>??
- #include?<string.h>??
- ??
- #define?N?100??
- ?
- ?
- */??
- void?getdigits(int?*a,char?*s)??
- {??
- ?????int?i;??
- ?????char?digit;??
- int?len?=?strlen(s);??
- ??
- ???????
- ?????for(i?=?0;?i?<?N;?++i)??
- ???????????*(a?+?i)?=?0;??
- for(i?=?0;?i?<?len;?++i){??
- ???????????digit?=?*(s?+?i);??
- ???????????*(a?+?len?-?1?-?i)?=?digit?-?'0';??
- ?????}??
- }??
- ?*将数组a与数组b逐位相乘以后存入数组c?
- ?*/??
- void?multiply(int?*b,87); font-weight:bold; background-color:inherit">int?*c)??
- int?i,j;??
- //数组初始化??
- for(i?=?0;?i?<?2?*?N;?++i)??
- ???????????*(c?+?i)?=?0;??
- ??????
- ??????*比如,12345*12345,a中的5与12345逐位相乘?
- ??????*对于数组c:*(c+i+j)在i=0,j=0,1,2,3,4时存的是5与各位相乘的结果?
- ??????*而在i=1,4时不光会存4与各位相乘的结果,还会累加上上次相乘的结果.这一点是需要注意的!!!?
- ?????*/??
- ???????????for(j?=?0;?j?<?N;?++j)??
- ?????????????????*(c?+?i?+?j)?+=?*(a?+?i)?*?*(b?+?j);??
- /*?
- ??????*这里是移位、进位?
- for(i?=?0;?i?<?2?*?N?-?1;?++i)??
- ?????{??
- ???????????*(c?+?i?+?1)?+=?*(c?+?i)/10;??
- ???????????*(c?+?i)?=?*(c?+?i)%10;??
- ?????}??
- }??
- int?main()??
- ????int?a[N],b[N],c[2*N];??
- ????char?s1[N],s2[N];??
- int?j?=?2*N-1;??
- int?i;??
- ??????
- ????printf("input?the?first?number:");??
- ????scanf("%s",s1);??
- ????printf("/ninput?the?second?number:");??
- ??????
- ????getdigits(a,s1);??
- ????getdigits(b,s2);??
- ????multiply(a,b,c);??
- ????while(c[j]?==?0)??
- ???????????????j--;??
- for(i?=?j;i?>=?0;?--i)??
- ???????????printf("%d",c[i]);??
- ????printf("/n");??
- ????return?0;??
- }??
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|