📄 multiple.cpp
字号:
#include <stdio.h>
#include <string.h>
#define MAX 100
struct Node{
int data;
struct Node *next;
};
void output(struct Node *head, int pos)
{
if(!head) return;
if(!head->next && !head->data) return;//
output(head->next, pos - 1);
printf("%d", head->data);
if(!pos) printf("%s", ".");
}
void Mul(char* a, char* b)
{
Node *pHead, *pNode, *pNodeTmp;
char *aCur, *bCur, *aEnd, *bEnd, *p;
int pos;
if(!(*a) || !(*b)) return;
pos = 0;
if(p=strchr(a, '.'))
{
pos += strlen(a) - (p - a) - 1;
do
{
p++;
*(p-1)=*p;
}while(*p);
}
if(p = strchr(b, '.'))
{
pos += strlen(b) - (p-b) - 1;
do
{
p++;
*(p-1)=*p;
}while(*p);
}
aCur = aEnd = a;
bCur = bEnd = b;
while(*(aCur++)) aEnd++;
while(*(bCur++)) bEnd++;
aCur = --aEnd;
bCur = --bEnd;
pHead = new Node;
pHead->data = 0;
pHead->next = NULL;
pNode = pHead;
while(aCur >= a)
{
int high = 0;
bCur = bEnd;
pNodeTmp = pNode;
while(bCur >= b || high > 0)
{
int tmp = ((bCur >= b) ? (*bCur - '0') * (*aCur - '0') : 0)
+ pNodeTmp->data + high;
int low =tmp % 10;
high = tmp / 10;
pNodeTmp->data = low;
if(!pNodeTmp->next)
{
Node* pNod = new Node;
pNod->data = 0;
pNod->next = NULL;
pNodeTmp->next = pNod;
pNodeTmp = pNod;
}
else pNodeTmp = pNodeTmp->next;
bCur--;
}
pNode = pNode->next;
aCur--;
}
output(pHead, pos);
}
int main(int argc, char *argv[])
{
char f[MAX] = "15.51";
char e[MAX] = "5.8";
Mul(f, e);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -