#include
#include
#include
typedef struct _polynodepolynode,*polyptr;
void createpoly(polynode **p, char ch);//建立多項式鍊錶
polyptr polyadd(polynode *a,polynode *b);//多項式加
polyptr polyminus(polynode *a,polynode *b);//減
polyptr polymulti(polynode *a,polynode *b);//乘
polyptr polydiv(polynode *a,polynode *b);//除
void order(polynode **p);//排序
void display(polynode *p);//展示多項式
void destroy(polynode **p);//銷毀多項式
void menu();//命令選單
int isput(char ch);
//選單
void menu()
//判斷選單選擇
int ischoice(int choice)
int isput(char ch)}}
return 1;
}void createpoly(polynode **p, char ch)
while('/0' != *t)
while('+' != *t && '-' != *t && '*' != *t && '/' != *t &&
'/0' != *t)
//抽取數字
if(1 == iscoef && 0 != i)
if(0 == iscoef)
*t;}
else
i = 0;
}//while 遍歷到加減乘除,則退出迴圈,到下一新的節點
printf("係數:%f,指數:%d/n",q->coef,q->exp);
iscoef = 1;
if('/0' != *t)
if(0 == j)
if(null == *p)
else
l = q;
}//while遍歷整個字串
}polyptr polyadd(polynode *a,polynode *b)
while(null != p)
p = b;
while(null != p)
l->next = copya;//把copya,copyb兩個多項式連線起來,整理一下 就ok了.
order(©b);
// order(©b);
// printf("相加結果為:");
// display(copyb);
return copyb;
// destroy(©b);
}polyptr polyminus(polynode *a,polynode *b)
while(null != p)
p = b;
while(null != p)
l->next = copya;//把copya,copyb兩個多項式連線起來,整理一下 就ok了.
order(©b);
// order(©b);
// printf("相減結果為:");
// display(copyb);
return copyb;
// destroy(©b);
}polyptr polymulti(polynode *a,polynode *b)
while(null != pa)
pa=pa->next;
}order(©ab);
// printf("相乘結果為:");
// display(copyab);
return copyab;
// destroy(©ab);
}polyptr polydiv(polynode *a,polynode *b)
while(null != p)
p = b;
while(null != p)
order(©a);
order(©b);
while(copya->coef !=0 && copya->exp > -5)
// printf("相除結果為:");
// display(result);
return result;
// destroy(©ab);
void display(polynode *p)
if(1 == p->coef)
else
p = p->next;
while(null != p)
else
}else
else
}p = p->next;
}printf("/n");
}void destroy(polynode **p)
}void order(polynode **p)
}if(null == *p || null == (*p)->next)//如果只剩1項或空,則不 需要整理,退出函式
return;
//氣泡排序
out = incurr = *p;
while(null != out->next)
}out = out->next;
incurr = *p;
}//去除0項
prev = curr = *p;
curr = curr->next;
while(null != curr)
else
}//合併同類項
out = incurr = *p;
while(null != out->next)
}incurr = out = out->next;
if(null == out)
return;}}
void main()
while(8 != choice)
printf("輸入多項式a:/n");
scanf("%s",&ch);
printf("/n%s/n",&ch); /
while(!isput(ch))
createpoly(&polya,ch);//建立多項式a鍊錶
display(polya);//
printf("輸入多項式b:/n");
scanf("%s",&ch);
while(!isput(ch))
createpoly(&polyb,ch);//建立多項式b鍊錶
order(&polyb);
order(&polya);//整理排序多項式
printf("建立多項式成功!多項式:/na為:");
display(polya);
printf("b為:");
display(polyb);
break;
case 2:
result=polyadd(polya,polyb);
printf("相加結果為:");
display(result);
//destroy(&result);
break;
case 3:
result=polyminus(polya,polyb);
printf("相減結果為:");
display(result);
//destroy(&result);
break;
case 4:
result=polymulti(polya,polyb);
printf("相乘結果為:");
display(result);
//destroy(&result);
break;
case 5:
result=polydiv(polya,polyb);
printf("相除結果為:");
display(result);
//destroy(&result);
break;
case 6:
printf("------顯示多項式------/na :");
display(polya);
printf("b :");
display(polyb);
break;
case 7:
destroy(&polya);
destroy(&polyb);
printf("此多項式已被清空./n");
break;
default:
return ;
}choice = 0;
menu();
scanf("%d",&choice);
while(!ischoice(choice) || 0 == choice)}}
大數加減乘除法
逆序函式 void rev char str,int len 大數加法 首先將兩個大數儲存到陣列中,然後對陣列逆序後進行逐位分別相加,相加後判斷是否有進製 用carry變數來記錄 實現 加法 int main if carry 1 putchar 1 for int i len 1 i 0 i pu...
web加減乘除法c C 實現簡單的加減乘除計算器
第一次學習c 做了個簡單的加減乘除計算器,只能實現兩個因數的運算。主要是練習下c 程式設計,和以前用過的vb差不多。與vb6不同的是,c 區分大小寫。windows視窗程式主要也是由一些控制項組成,響應響應的事件 event 實現具體的功能。1.效果圖如下所示 2.如下所示 using system...
多項式除法
給一n次多項式f x m次多項式g x 求一多項式q x r x 滿足 令f r x 表示函式f x 係數翻轉後的函式 because f x a 0x n a 1x a n therefore f r x a nx n a x a 0 x n a n a frac a 0 frac x nf fr...