數據結構c語言版實驗報告
❶ 關於數據結構的實驗報告
#include <stdio.h>
#include <string.h>
#include <math.h>
typedef int Length;
typedef struct {
int x;
int y;
}coordinate;
typedef struct cityInfo {
char cityName[10];
coordinate cityCoor;
struct cityInfo* next;
}citylink;
void addCity(citylink*);
void insertCity(citylink*);
void delCity(citylink);
void amendCity(char*);
void list(void);
void coordinateSureCityname(void);
void nearerCity(coordinate,Length);
void shortestCitys(void);
citylink *head;
citylink *end;
void addCity(citylink* newCity)
{
end-> next = newCity;
end = newCity;
newCity-> next = NULL;
}
void insertCity(citylink* newcity)
{
int number,i;
citylink *p,*q;
p = head;
printf( "insert where\n ");
scanf( "%d ",&number);
for(i = 1;i < number;i++)
{
p = p-> next;
}
q = p-> next;
p-> next = newcity;
newcity-> next = q;
}
void delCity()
{
int number,i;
citylink *p;
p = head;
printf( "please input the number of city you want to del\n ");
scanf( "%d ",&number);
if(1 == number)
{
head = head-> next;
}
for(i = 2;i < number;i++)
{
p = p-> next;
}
p-> next = p-> next-> next;
}
void amendCity()
{
int x,y,result;
citylink *p;
char cityName[10];
printf( "please in put city 』s old name\n ");
scanf( "%s ",cityName);
fflush(stdin);
p = head;
while (p)
{
result = strcmp(p-> cityName,cityName);
if (0 == result)
{
printf( "please input city 』s new name!!\n ");
scanf( "%s ",&p-> cityName);
fflush(stdin);
printf( "please input city 』s new coordinate like this 88,99!!\n ");
scanf( "%d,%d ",&x,&y);
p-> cityCoor.x = x;
p-> cityCoor.y = y;
break;
}
p = p-> next;
}
if (result != 0)
{
printf( "There have not this city ");
}
}
void coordinateSureCityname(void)
{
int result;
citylink *p;
char cityName[10];
p = head;
printf( "please in put city 』s name\n ");
scanf( "%s ",cityName);
fflush(stdin);
while (p)
{
result = strcmp(p-> cityName,cityName);
if (0 == result)
{
printf( "city 』s coordinate is %d,%d ",p-> cityCoor.x,p-> cityCoor.y);
}
p = p-> next;
}
if (result != 0)
{
printf( "There has not such city ");
}
}
void nearerCity()
{
citylink* p;
int temp,x,y;
coordinate coord;
int Length;
printf( "please input coordinate like this 88,99\n ");
scanf( "%d,%d ",&x,&y);
coord.x = x;
coord.y = y;
fflush(stdin);
printf( "please input length\n ");
scanf( "%d ",&Length);
p = head;
while(p)
{
temp = sqrt(pow((coord.x - p-> cityCoor.x),2) + pow((coord.y - p-> cityCoor.y),2));
if (temp < Length)
{
printf( "city name : %s\n ",p-> cityName);
}
p = p-> next;
}
}
void list(void)
{
citylink *p;
p = head;
while(p)
{
printf( "city 』s name = %s,citys coordinate = %d , %d\n ",p-> cityName,p-> cityCoor.x,p-> cityCoor.y);
p = p-> next;
}
}
void main(void)
{
citylink city1;
citylink city2;
citylink city3;
citylink city4;
citylink city5;
citylink city6;
citylink city7
head = &city1;
city1.cityCoor.x = 12;
city1.cityCoor.y = 22;
strcpy(city1.cityName, "city1 " );
city1.next = &city2;
city2.cityCoor.x = 28;
city2.cityCoor.y = 95;
strcpy(city2.cityName, "city2 " );
city2.next = &city3;
city3.cityCoor.x = 32;
city3.cityCoor.y = 17;
strcpy(city3.cityName, "city3 " );
city3.next = &city4;
city4.cityCoor.x = 58;
city4.cityCoor.y = 98;
strcpy(city4.cityName, "city4 " );
city4.next = &city5;
city5.cityCoor.x = 31;
city5.cityCoor.y = 67;
strcpy(city5.cityName, "city5 " );
city5.next = &city6;
city6.cityCoor.x = 21;
city6.cityCoor.y = 99;
strcpy(city6.cityName, "city6 " );
city6.next = NULL;
head = &city1;
end = &city6;
city7.cityCoor.x = 19;
city7.cityCoor.y = 84;
strcpy(city7.cityName, "city7 " );
list();
printf( "\n ");
}
滿意請採納。
❷ 求助:數據結構實驗報告(c語言版)
/* 標准文檔模板 */
#include "Stdio.h"
#include "Conio.h"
#define SIZE 50
struct student
{
int ID;
char name[20];
int score[3];//三門課的成績
float avg;
};
int count=4; //用來記錄總條數 因為已有四條記錄所以初始化為4,再錄入記錄時從第四條開始記錄
void input(struct student stu[]) /*實現信息錄入功能*/
{
int i;
int sum; //總分
char ch;
do
{
sum=0;
printf("請輸入學生ID:\n");
scanf("%d",&stu[count].ID);
printf("請輸入學生name:\n");
scanf("%s",&stu[count].name);
for(i=0;i<3;i++)
{
printf("請輸入第%d門成績",i+1);
scanf("%d",&stu[count].score[i]);
sum=sum+stu[count].score[i];//計算總分
}
stu[count].avg=sum/3.0f; //計算平均分
count++; //累計總記錄條數
printf("是否繼續錄入信息?(y/n)");
fflush(stdin);
scanf("%c",&ch);
}while(ch=='Y'||ch=='y');
}
void view(struct student stu[]) /*實現信息瀏覽功能*/
{
int i;
printf("\nID \tNAME \t\tSTB\tC語言\tSQL\tAVG\n");
for(i=0;i<count;i++)
{
printf("%d\t%-15.7s %d\t%d\t%d\t%-.2f\n",stu[i].ID,stu[i].name,stu[i].score[0],
stu[i].score[1],stu[i].score[2],stu[i].avg);
}
}
void sort_ID(struct student stu[]) //按學號進行排序
{
int i,j;
struct student temp;//定義結構體變數來實現整條記錄交換
for(i=0;i<count-1;i++) //選擇排序法進行排序
{
for(j=i+1;j<count;j++)
{
if(stu[i].ID<stu[j].ID)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
}
view(stu);
}
void sort_Name(struct student stu[]) //按姓名進行排序
{
int i,j;
struct student temp;
for(i=0;i<count-1;i++)//選擇排序法進行排序
{
for(j=i+1;j<count;j++)
{
if(strcmp(stu[i].name,stu[j].name)>0) //用strcmp比較名字的大小
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
}
view(stu);
}
void sort_Avg(struct student stu[]) //按平均分大小進行排序
{
int i,j;
struct student temp;//定義結構體變數來實現整條記錄交換
for(i=0;i<count-1;i++) //選擇排序法進行排序
{
for(j=i+1;j<count;j++)
{
if(stu[i].avg<stu[j].avg)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
}
view(stu);
}
void sort(struct student stu[])
{
int option;
do
{
printf("\n========1.按學號排序==========2.按姓名排序=======\n");
printf("\n========3.按平均分排序========0.退出=============\n");
printf("請選擇:\n");
scanf("%d",&option);
switch(option)
{
case 0:printf("謝謝!");break;
case 1:sort_ID(stu);break;
case 2:sort_Name(stu);break;
case 3:sort_Avg(stu);break;
default:printf("請重新選擇!"); break;
}
}while(option!=0);
}
/* 按學號查詢*/
void findID(struct student stu[])
{
int tempID;//要查找的臨時學號
char flag='n'; //默認沒有找到狀態
int i;
printf("請輸入要查詢的學號:");
scanf("%d",&tempID);
printf("\n\t 學號 \t姓名\tSTB \tC成績\tSQL成績 平均分\n");
for(i=0;i<count;i++)
{
if(tempID==stu[i].ID) //找到
{
printf("\t%d\t%s\t%d\t%d\t%df\t%-.2f\n",stu[i].ID,stu[i].name,
stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg);
flag='y'; //找到的狀態
}
}
if(flag!='y')
printf("找不到學號是%d的記錄\n",tempID);
}
/* 按姓名查詢*/
void findName(struct student stu[])
{
char tempName[15]; //要查找的臨時姓名
int flag=0; //默認沒有找到狀態
int i;
printf("請輸入要查詢的姓名:");
fflush(stdin);
scanf("%s",tempName);
printf("\n\t 學號 \t姓名\tSTB \tC成績\tSQL成績 平均分\n");
for(i=0;i<count;i++)
{
if(strcmp(tempName,stu[i].name)==0) //找到
{
printf("\t%d\t%s\t%d\t%df\t%df\t%-.2f\n",stu[i].ID,stu[i].name,
stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg);
flag=1; //找到的狀態
}
}
if(flag!=1)
printf("找不到姓名是%s的記錄\n",tempName);
}
/* 按學號,姓名,平均分查詢 */
void find(struct student stu[])
{
int option;
printf("\n********************************************************\n");
printf("\n****** 1. 退出 2.按學號 3.按姓名 ****************\n");
printf("\n********************************************************\n");
printf("請選擇: ");
scanf("%d",&option);
switch(option)
{
case 1: break;
case 2: findID(stu);break;
case 3: findName(stu);break;
default: printf("選項無效!! \n");break;
}
}
int main(void)
{
/* 此處添加你自己的代碼 */
struct student stu[SIZE]={{1002,"LiLan",70,80,90,80},{1004,"WangHai",75,85,95,85},
{1003,"LiYang",60,80,73,81},{1001,"JackChen",95,90,100,95}}; //初始化四條信息
int option;
do
{
printf("\n======0.退出===========1.信息錄入==========2.信息瀏覽=====\n");
printf("\n======3.信息排序========4.信息查詢========================\n");
printf("請選擇:\n");
scanf("%d",&option);
switch(option)
{
case 0:printf("歡迎下次再使用!");break;
case 1:input(stu);break;
case 2:view(stu);break;
case 3:sort(stu);break;
case 4:find(stu);break;
default:printf("請重新選擇!");
}
}while(option!=0);
getch();
return 0;
}
❸ 數據結構 我要寫的實驗報告
這么簡單的作業都不自己做···
還要懸賞0分的···
❹ 數據結構題集 c語言版 第一章實驗報告怎麼寫
清華嚴蔚敏的數據結構(C語言版)習題答案網上很多免費提供下載的,有免費的不用為什麼要買呢……?呵呵
這里有免費下的:
=============================================================
職稱論文寫作和發表,誠信迅捷,負責到底,有意者加用戶名!
❺ c語言程序設計實驗報告
五、 課程設計小結心得體會
1設計思想
1)、設定一個一維數組,可先按員工序號設定每位員工的工資
2)、利用While語句和Prinft語句完成用戶菜單的設計
功能為:第1項 設為員工編號和工資數據
第2項 設為修改員工工資數據
第3項 設為查詢員工工資數據
第4項 設為結束系統
3)、當用戶選擇1、2項時,需輸入員工編號,所以需要設計編號校正功能,如果出錯可輸出「The error employe number」
4)、當選擇2時,進行工資數據的修改,並將新數據存回該員工的工資數組中
5)、利用for循環中判斷語句,將用戶工資數與數組中的工資數進行比較,如相同則輸出,將計數器加1,如此下去,直到把整個數組遍歷一遍
6)、判斷計數器是否為0, 是0表示找不到相符的工資,如果不為0,則輸出共查出幾比相符的工資
以上當然裡面也涉及了「函數的模塊化」理念,可以避免但需要重復列印頭文件時重復編寫列印信頭的語句。像這樣的程序是多見的,這樣不但降低了程序還發效率,而且耗時浪費資源「共用體」的使用簡化了程序的「復雜」性,正如(4)中,學號與姓名同時表示一個人,但在函數使用了「共用體」,從而程序的簡單可以便於糾錯,查找問題,避免了代碼的重復,這樣就給編譯時帶來了一定的難度與「量」的繁雜。一般不採取這樣的做法,力求「簡單、明了、清晰」。
❻ 數據結構完整版實驗報告
(一)實驗目的和要求
實驗目的:熟練掌握線性表的基本操作在順序存儲結構上的實現。
實驗要求:任選一種高級程序語言編寫源程序,並調試通過,測試正確。
(二)實驗主要內容
1. 建立n個元素的順序表SqList,實現順序表的基本操作;
2. 在SqList的元素i之後插入一個元素,實現順序表插入的基本操作;
3. 在sqList中刪除指定位置i上的元素,實現順序表刪除的操作。
4.
(三)主要儀器設備
PC機,Windows XP操作平台,Visual C++
(四)實驗原理
順序表操作:定義一個順序表類,該類包括順序表的存儲空間、存儲容量和長度,以及構造、插入、刪除、遍歷等操作的方法
(五)實驗步驟與調試分析:
順序表操作:先構造有四個數據的順序表,在第4個位置插入9,再讀取並刪除第3個元素。
(六)實驗結果與分析:
順序表操作:
(七)附錄(源程序):
#include<iostream>
using namespace std;
const int LIST_INIT_SIZE=10; //順序表初始長度
const int LISTINCREMENT=5; //順序表長度增值
class SqList
{
int *L; //定義存儲空間起始地址
int length; //順序表當前長度
int listsize; //順序表當前存儲容量
bool flag; //設立標志值記錄操作成敗
public:
SqList(int v1,int v2,int v3,int v4); //構造函數構造並初始化順序表
void ListInsert(int i,int e); //實現將e插入到順序表中第i個位置
void ListDelete(int i,int &e); //實現刪除順序表第i個元素
void ListVisit(); //實現順序表的遍歷
};
SqList::SqList(int v1,int v2,int v3,int v4) //構造並初始化順序表
{
L=new int[LIST_INIT_SIZE];
if(!L) //分配失敗
{
flag=false;
cout<<"ERROR"<<endl;
}
else //分配成功,進行初始化
{
*L=v1;
*(L+1)=v2;
*(L+2)=v3;
*(L+3)=v4;
length=4;
listsize=LIST_INIT_SIZE;
flag=true;
}
}
void SqList::ListInsert(int i,int e) //插入元素
{
int *p,*q;
int t;
if(i<1||i>length+1) cout<<"ERROR"<<endl; //插入位置錯誤
else
{
if(length==listsize) //空間不足,增加分配
{
p=new int[listsize+LISTINCREMENT];
if(!p) cout<<"ERROR"<<endl; //分配失敗
else //分配成功,復制順序表
{
for(t=0;t<length;t++)
*(p+t)=*(L+t);
q=L;L=p;p=q;
delete q;
listsize+=LISTINCREMENT;
}
}
for(t=length;t>=i;t--)
*(L+length)=*(L+length-1);
*(L+i-1)=e;
length++; //插入成功,表長加1
}
}
void SqList::ListDelete(int i,int &e)
{
if(i<1||i>length) cout<<"ERROR"<<endl; //刪除位置錯誤
else
{
e=*(L+i-1);
while(i<length)
{
*(L+i-1)=*(L+i);
i++;
}
length--; //刪除成功表長減1
}
}
void SqList::ListVisit() //遍歷
{
int i;
for(i=0;i<length;i++)
cout<<" "<<*(L+i);
cout<<endl;
}
int main()
{
int e=0;
SqList list(2,3,4,5);
list.ListVisit();
list.ListInsert(4,9);
list.ListVisit();
list.ListDelete(3,e);
list.ListVisit();
cout<<"e="<<e<<endl;
return 0;
}
❼ 急求c語言數據結構簡單計算器實驗報告!!!
似乎不全面啊!
當年上學的時候編過,優先順序比較沒這么簡單!
❽ C語言實驗報告
我寫了個,不知道行不,有什麼不妥的請指出哈,如要格式請加我,將之發給你
四 川 大 學 計 算 機 學 院、軟 件 學 院
實 驗 報 告
學號: 姓名: 專業:計算機科學與技術 班級:5 第 13 周
課程名稱 c/C++ 實驗課時 2
實驗項目 字元串的復制與追加 實驗時間 08.5. 16
實驗目的 1.掌握字元串的基本操作和理解數據結構
實驗環境 VC 6.0
實驗內容(演算法、程序、步驟和方法) 先計算出S1和S2的字元個數,為S3分配好空間,利用已有庫函數先將S1復制到S3中,再將S2追加到S3中,當顯示完後要記住收回空間,做好善後處理。
源代碼如下:
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char *s1="abcdef";
char *s2="123456f";
int n=strlen(s1)+strlen(s2);//計算s1,和s2的總長度n
char *s3=new char[n+1]; //定義S3並分配空間大小為n
strcpy(s3,s1); //將s1復制到s3中
strcat(s3,s2); //將s2追加到s3後面
cout<<"s3="<<s3<<endl;
delete []s3; //收回空間
s3=NULL; //將指針指向空
return 0;
}
(接上)
實驗內容(演算法、程序、步驟和方法)
結構是順序存儲結構,演算法順序鏈接法
數據記錄
和計算 數據有:字元串S1 ,S2;和一未知字元串S3
只需計算前兩個字元串長度之和
結 論
(結 果) 利用字元數組可以順序存儲字元數據,並且能夠順序處理數據;
演算法復雜度O(n+m);處於中性
小 結 字元數組能夠帶來很好的存儲結構,便於操作,但是演算法不是很好,只能順序遍歷數組,故復雜度不是很小
指導老師評 議
成績評定: 指導教師簽名:
❾ 數據結構實驗報告(c語言版)。急急急!!!
除以上功能外,還有乘法和除法的計算和導數計算呢。
這是我以前做的數據結構課程設計。希望能幫上你的忙。
#include<stdio.h>
#include<malloc.h>
typedef struct Polynomial{
float coef;
int expn;
struct Polynomial *next;
}*Polyn,Polynomial; //Polyn為結點指針類型
void Insert(Polyn p,Polyn h){
if(p->coef==0) free(p); //系數為0的話釋放結點
else{
Polyn q1,q2;
q1=h;q2=h->next;
while(q2&&p->expn<q2->expn){ //查找插入位置
q1=q2;
q2=q2->next;
}
if(q2&&p->expn==q2->expn){ //將指數相同相合並
q2->coef+=p->coef;
free(p);
if(!q2->coef){ //系數為0的話釋放結點
q1->next=q2->next;
free(q2);
}
}
else{ //指數為新時將結點插入
p->next=q2;
q1->next=p;
}
}
}//Insert
Polyn CreatePolyn(Polyn head,int m){//建立一個頭指針為head、項數為m的一元多項式
int i;
Polyn p;
p=head=(Polyn)malloc(sizeof(struct Polynomial));
head->next=NULL;
for(i=0;i<m;i++){
p=(Polyn)malloc(sizeof(struct Polynomial));//建立新結點以接收數據
printf("請輸入第%d項的系數與指數:",i+1);
scanf("%f %d",&p->coef,&p->expn);
Insert(p,head); //調用Insert函數插入結點
}
return head;
}//CreatePolyn
void DestroyPolyn(Polyn p){//銷毀多項式p
Polyn q1,q2;
q1=p->next;
q2=q1->next;
while(q1->next){
free(q1);
q1=q2;//指針後移
q2=q2->next;
}
}
void PrintPolyn(Polyn P){
Polyn q=P->next;
int flag=1;//項數計數器
if(!q) { //若多項式為空,輸出0
putchar('0');
printf("\n");
return;
}
while (q){
if(q->coef>0&&flag!=1) putchar('+'); //系數大於0且不是第一項
if(q->coef!=1&&q->coef!=-1){//系數非1或-1的普通情況
printf("%g",q->coef);
if(q->expn==1) putchar('X');
else if(q->expn) printf("X^%d",q->expn);
}
else{
if(q->coef==1){
if(!q->expn) putchar('1');
else if(q->expn==1) putchar('X');
else printf("X^%d",q->expn);
}
if(q->coef==-1){
if(!q->expn) printf("-1");
else if(q->expn==1) printf("-X");
else printf("-X^%d",q->expn);
}
}
q=q->next;
flag++;
}//while
printf("\n");
}//PrintPolyn
int compare(Polyn a,Polyn b){
if(a&&b){
if(!b||a->expn>b->expn) return 1;
else if(!a||a->expn<b->expn) return -1;
else return 0;
}
else if(!a&&b) return -1;//a多項式已空,但b多項式非空
else return 1;//b多項式已空,但a多項式非空
}//compare
Polyn AddPolyn(Polyn pa,Polyn pb){//求解並建立多項式a+b,返回其頭指針
Polyn qa=pa->next;
Polyn qb=pb->next;
Polyn headc,hc,qc;
hc=(Polyn)malloc(sizeof(struct Polynomial));//建立頭結點
hc->next=NULL;
headc=hc;
while(qa||qb){
qc=(Polyn)malloc(sizeof(struct Polynomial));
switch(compare(qa,qb)){
case 1:
{
qc->coef=qa->coef;
qc->expn=qa->expn;
qa=qa->next;
break;
}
case 0:
{
qc->coef=qa->coef+qb->coef;
qc->expn=qa->expn;
qa=qa->next;
qb=qb->next;
break;
}
case -1:
{
qc->coef=qb->coef;
qc->expn=qb->expn;
qb=qb->next;
break;
}
}//switch
if(qc->coef!=0){
qc->next=hc->next;
hc->next=qc;
hc=qc;
}
else free(qc);//當相加系數為0時,釋放該結點
}//while
return headc;
}//AddPolyn
Polyn SubtractPolyn(Polyn pa,Polyn pb){//求解並建立多項式a+b,返回其頭指針
Polyn h=pb;
Polyn p=pb->next;
Polyn pd;
while(p){ //將pb的系數取反
p->coef*=-1;
p=p->next;
}
pd=AddPolyn(pa,h);
for(p=h->next;p;p=p->next) //恢復pb的系數
p->coef*=-1;
return pd;
}//SubtractPolyn
float ValuePolyn(Polyn head,float x){//輸入x值,計算並返回多項式的值
Polyn p;
int i;
float sum=0,t;
for(p=head->next;p;p=p->next){
t=1;
for(i=p->expn;i!=0;){
if(i<0){t/=x;i++;}//指數小於0,進行除法
else{t*=x;i--;}//指數大於0,進行乘法
}
sum+=p->coef*t;
}
return sum;
}//ValuePolyn
Polyn Derivative(Polyn head){//求解並建立a的導函數多項式,並返回其頭指針
Polyn q=head->next,p1,p2,hd;
hd=p1=(Polyn)malloc(sizeof(struct Polynomial));//建立頭結點
hd->next=NULL;
while(q){
if(q->expn!=0){ //該項不是常數項時
p2=(Polyn)malloc(sizeof(struct Polynomial));
p2->coef=q->coef*q->expn;
p2->expn=q->expn-1;
p2->next=p1->next;//連接結點
p1->next=p2;
p1=p2;
}
q=q->next;
}
return hd;
}//Dervative
Polyn MultiplyPolyn(Polyn pa,Polyn pb){//求解並建立多項式a*b,返回其頭指針
Polyn hf,pf;
Polyn qa=pa->next;
Polyn qb=pb->next;
hf=(Polyn)malloc(sizeof(struct Polynomial));//建立頭結點
hf->next=NULL;
for(;qa;qa=qa->next){
for(qb=pb->next;qb;qb=qb->next){
pf=(Polyn)malloc(sizeof(struct Polynomial));
pf->coef=qa->coef*qb->coef;
pf->expn=qa->expn+qb->expn;
Insert(pf,hf);//調用Insert函數以合並指數相同的項
}
}
return hf;
}//MultiplyPolyn
void DevicePolyn(Polyn pa,Polyn pb){//求解並建立多項式a*b,返回其頭指針
Polyn hf,pf,af,temp1,temp2,q;
Polyn qa=pa->next;
Polyn qb=pb->next;
hf=(Polyn)malloc(sizeof(struct Polynomial));//建立頭結點,存儲商
hf->next=NULL;
pf=(Polyn)malloc(sizeof(struct Polynomial));//建立頭結點,存儲余數
pf->next=NULL;
temp1=(Polyn)malloc(sizeof(struct Polynomial));
temp1->next=NULL;
temp2=(Polyn)malloc(sizeof(struct Polynomial));
temp2->next=NULL;
temp1=AddPolyn(temp1,pa);
while(qa!=NULL&&qa->expn>=qb->expn){
temp2->next=(Polyn)malloc(sizeof(struct Polynomial));
temp2->next->coef=(qa->coef)/(qb->coef);
temp2->next->expn=(qa->expn)-(qb->expn);
Insert(temp2->next,hf);
pa=SubtractPolyn(pa,MultiplyPolyn(pb,temp2));
qa=pa->next;
temp2->next=NULL;
}
pf=SubtractPolyn(temp1,MultiplyPolyn(hf,pb));
pb=temp1;
printf("商是:");
PrintPolyn(hf);
printf("余數是:");
PrintPolyn(pf);
}//DevicePolyn
int main(){
int m,n,flag=0;
float x;
Polyn pa=0,pb=0,pc,pd,pe,pf;//定義各式的頭指針,pa與pb在使用前付初值NULL
printf("請輸入a的項數:");
scanf("%d",&m);
pa=CreatePolyn(pa,m);//建立多項式a
printf("請輸入b的項數:");
scanf("%d",&n);
pb=CreatePolyn(pb,n);//建立多項式a
//輸出菜單
printf("**********************************************\n");
printf("操作提示:\n\t1.輸出多項式a和b\n\t2.建立多項式a+b\n\t3.建立多項式a-b\n");
printf("\t4.計算多項式a在x處的值\n\t5.求多項式a的導函數\n\t6.建立多項式a*b\n");
printf("\t7.建立多項式a/b\n\t8.退出\n**********************************************\n");
for(;;flag=0){
printf("執行操作");
scanf("%d",&flag);
if(flag==1){
printf("多項式a:");PrintPolyn(pa);
printf("多項式b:");PrintPolyn(pb);continue;
}
if(flag==2){
pc=AddPolyn(pa,pb);
printf("多項式a+b:");PrintPolyn(pc);
DestroyPolyn(pc);continue;
}
if(flag==3){
pd=SubtractPolyn(pa,pb);
printf("多項式a-b:");PrintPolyn(pd);
DestroyPolyn(pd);continue;
}
if(flag==4){
printf("輸入x的值:x=");
scanf("%f",&x);
printf("多項式a的值%g\n",ValuePolyn(pa,x));continue;
}
if(flag==5){
pe=Derivative(pa);
printf("多項式a的導函數:");PrintPolyn(pe);
DestroyPolyn(pe);continue;
}
if(flag==6){
pf=MultiplyPolyn(pa,pb);
printf("多項式a*b:");PrintPolyn(pf);
DestroyPolyn(pf);continue;
}
if(flag==7){
DevicePolyn(pa,pb);
continue;
}
if(flag==8) break;
if(flag<1||flag>8) printf("Error!!!\n");continue;
}//for
DestroyPolyn(pa);
DestroyPolyn(pb);
return 0;
}