突发奇想 别打我啊
int a[3]={1,2,3}
int b[3]={4,5,6}
怎么才能 a[]*b[] 实现 123*456
问题点数:0、回复次数:21Top
1 楼peter9606( 荷尔蒙一失效 人就清醒了)回复于 2004-08-01 15:38:44 得分 0
应该到c++版面去
因为c不能重载运算符
用c++中的运算符重载就可以了
其实数学真得不难Top
2 楼leonchew(安静(静哥哥,找寻黄蓉中...))回复于 2004-08-01 15:43:36 得分 0
c++可以搞定Top
3 楼niece(薇 我有新女人了)回复于 2004-08-01 15:45:14 得分 0
哥哥用C有办法吗Top
4 楼peter9606( 荷尔蒙一失效 人就清醒了)回复于 2004-08-01 15:46:11 得分 0
问题是在c中 数组的乘法是没有定义的Top
5 楼niece(薇 我有新女人了)回复于 2004-08-01 15:51:59 得分 0
加也可以 比如 实现 123+456Top
6 楼peter9606( 荷尔蒙一失效 人就清醒了)回复于 2004-08-01 15:55:17 得分 0
加也可以 比如 实现 123+456
????
c语言没有实现数组的任何运算吧~!除了[]
楼主怎么实现的?Top
7 楼niece(薇 我有新女人了)回复于 2004-08-01 15:58:20 得分 0
我是问大家啊Top
8 楼wlj1800(跑步进入原始社会)回复于 2004-08-01 16:01:22 得分 0
不明白什么意思,怎么是123+456咯
要是数组的运算加或乘也不是这样子的啊
是不是要现将数组(数组大小为n)里面的数字变成一个n位数,然后与另一个数组构成的n位数相乘啊 ?
那c实现一点也不难啊
Top
9 楼hellwolf(地狱狼)(活着)(死磕)回复于 2004-08-01 16:01:25 得分 0
c++ ,c++的运算符重载可以解决Top
10 楼UPCC(杂食动物)回复于 2004-08-01 16:18:21 得分 0
本人只是无聊搞搞,高人不要拍我砖头,因为我知道我错了......我用了个愚蠢的方法!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* change(int* a,int n)
{
char* ch = new char[n+1];
for(int i=0; i<n; i++)
{
if(i==0)
{
char c=a[0]+48;
strcpy(ch,&c);
}
else
{
char cc=a[i]+48;
strcpy(ch+i,&cc);
}
}
ch[n]='\0';
return ch;
}
int main(void)
{
int a[4]={1,2,3};
int b[4]={4,5,6};
char *c1=change(a,3);
char *c2=change(b,3);
int c=atoi(c1)+atoi(c2);
printf("%d\n",c);
return 0;
}Top
11 楼UPCC(杂食动物)回复于 2004-08-01 16:20:17 得分 0
if(i==0)
{
char c=a[0]+48;
strcpy(ch,&c);
}
else
可以省列掉。Top
12 楼UPCC(杂食动物)回复于 2004-08-01 16:24:41 得分 0
用简单的吧..........哎又连续发帖了.....sorry
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int change(int* a,int n)
{
char* ch = (char*)malloc(sizeof(char)*(n+1));
for(int i=0; i<n; i++)
{
char cc=a[i]+48;
strcpy(ch+i,&cc);
}
ch[n]='\0';
int temp=atoi(ch);
free(ch);
return temp;
}
int main(void)
{
int a[4]={1,2,3};
int b[4]={4,5,6};
int c1=change(a,3);
int c2=change(b,3);
int c=c1+c2;
printf("%d\n",c);
return 0;
}Top
13 楼micty(你说世界可以被我们平分?)回复于 2004-08-01 17:36:35 得分 0
分别用两个循环算出a和b把
算法,用第一个元素乘100然后循环到第二个乘10然后又循环到第三个乘一,不是123了吗
同样算出b啊Top
14 楼KingI(我现在很热!!!)回复于 2004-08-01 18:25:23 得分 0
main()
{
int a[3]={1,2,3};
int b[3]={4,5,6};
int i;
int m,n;
m=a[0]*100+a[1]*10+a[2];
n=b[0]*100+b[1]*10+b[2];
printf ("a*b=%ld", m*n);
return 0;
}
Top
15 楼niece(薇 我有新女人了)回复于 2004-08-01 22:38:10 得分 0
楼上几位的程序 都不行啊Top
16 楼yzguoz(小虾=猪头秦王=天上的星星不说话,地上的娃娃笑哈哈)回复于 2004-08-01 22:52:25 得分 0
真的很麻烦
没有实际意义Top
17 楼sunjx119(睿锐)回复于 2004-08-02 00:02:06 得分 0
C当然可以实现!
有什么用C++实现的了,但是用C实现不了的,搞笑~
C++只不过的C的超集而已Top
18 楼sunjx119(睿锐)回复于 2004-08-02 00:04:15 得分 0
给楼主个思路:
1.想办法把数组转化为字符串。
2.用atoi函数将字符串转化为int。
3.用转化好的int去做你想做的事。Top
19 楼milozy1983(Detective)回复于 2004-08-02 00:16:00 得分 0
超长整数的算法我写过,思路主要是用第三个数组来存放结果,123*456=6*123+50*123+400*123,用循环就可以得出结果,别忘记处理下进位问题。就这么简单。Top
20 楼cthiro123(小米稀饭)回复于 2004-08-02 16:47:31 得分 0
dingTop
21 楼niece(薇 我有新女人了)回复于 2004-08-02 21:07:58 得分 0
UPTop




