久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

求解Josephus問題實驗總結(用C語言循環單鏈表實現)(精選5篇)

時間:2019-05-12 04:29:16下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《求解Josephus問題實驗總結(用C語言循環單鏈表實現)》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《求解Josephus問題實驗總結(用C語言循環單鏈表實現)》。

第一篇:求解Josephus問題實驗總結(用C語言循環單鏈表實現)

求解Josephus問題實驗總結

1實驗題目: josephus問題可描述如下:

設有n個人圍成一個環,現從第s個人開始報數,數到第m的人出列,然后從出列的下一個人從新開始報數,數到第m的人又出列,如此重復,直至所有人均出列為止。求這些人出列的順序。

2實驗目的:

熟練掌握線性表的順序實現和鏈式實現的基本操作。

3實驗方法:

通過運用已學的向量和循環單鏈表編寫程序,并在電腦上運行,實現josephus問題的求解。4實驗過程與結果:

(1)輸入n值為6,s值為3,m值為2,輸入A[i]的值為1 2 3 4 5 6 輸出結 果為:4 6 2 5 3 1 截圖如下:

(2)

1、輸入n值為-1, s值為3,m值為2,顯示:ERROR。截圖如下:

2、輸入n值為6, s值為0,m值為3,顯示:ERROR。截圖如下:

3、輸入n值為6, s值為3,m值為0,顯示:ERROR。截圖如下

5試驗體會與收獲:

(1)寫程序是要隨時注意縮進,使得程序層次清晰,便于尋找錯誤,同時也讓別人看的更加方便。(2)構造循環單鏈表,要以單鏈表為單元指針指向把最后個單元與第一個即可(3)建立好循環單鏈表后,通過三個指針(p,q,tmp)的指示,來確定報數,出列人的位置,得以完成。具體過程如下:p指向head頭指針,通過s次循環將p指向報數的起始位置s,用q記錄p的位置,再經過m次循環另p指向出列者的位置,將其數值保存在一維數組中,并將其從鏈表中刪除,p指向下一次起始位置,結束時返回數組A[j]。(4)刪除節點時,注意要釋放節點。

(5)構造函數時,一定要明確函數的類型,即返回行還是不返回型,以免出現不必要的錯誤。

第二篇:職工信息管理系統 單鏈表實現 C語言源程序(范文)

#include #include #include int saveflag=0;

/* 單鏈表內容有無發生改變,是否需要存盤的標志變量 */ struct employee {

};

typedef struct Node {

void InitList(LinkList *head)

/*將單鏈表初始化為空。動態生成一個頭結點,并將頭結點的指針域置為空*/ {

}

ListNode *Locatenum(LinkList head,char find[])

//通過職工工號查找,返回定位指針。{ LinkList p;if((*head=(LinkList)malloc(sizeof(ListNode)))==NULL)

/*為頭結點分配一 printf(“系統分配存儲空間失敗!n”);個存儲空間*/ exit(-1);(*head)->next=NULL;

/*將頭結點的指針域置為空*/ struct employee data;struct Node *next;char num[10];

/* 工號 */ char name[15];

/* 姓名 */ char sex[7];

/* 性別 */ int age;

/* 年齡 */ char education[15];

/* 學歷 */ int salary;

/* 工資 */ char phone[20];

/* 電話號碼 */ char address[30];

/* 住址 */ }ListNode,*LinkList;

} p=head->next;if(!p)

//如果職工信息記錄為空,返回NULL。

{

} return NULL;if(strcmp(p->data.num,find)==0)return p;p=p->next;return NULL;while(p)ListNode *Locatename(LinkList head,char find[])

//通過職工姓名查找,返回定位指針。{

}

ListNode *Locatesalary(LinkList head,int salary)

//通過職工工資查找,返回定位指針。{

LinkList p;p=head->next;if(!p)

//如果職工信息記錄為空,返回NULL。

return NULL;while(p){ LinkList p;p=head->next;if(!p)

//如果職工信息記錄為空,返回NULL。

{

} return NULL;if(strcmp(p->data.name,find)==0)return p;p=p->next;return NULL;while(p)

}

} if(p->data.salary==salary)return p;p=p->next;return NULL;void Nofind(){ }

void Modify(LinkList L)

//修改功能。{

ListNode *p;

char find[20];

if(!L->next)

{

printf(“請你輸入要修改的職工工號:”);

scanf(“%s”,find);

p=Locatenum(L,find);

if(p)

{

printf(“請你輸入新的工號(原來是%s):”,p->data.num);

scanf(“%s”,p->data.num);

getchar();

printf(“n”);

printf(“請你輸入新的姓名(原來是%s):”,p->data.name);

scanf(“%s”,p->data.name);

getchar();

printf(“n”);

printf(“n***提示***:沒有資料可以修改!n”);

return;printf(“n***提示***:沒有找到該職工!n”);

}

printf(“請你輸入新的性別(原來是%s):”,p->data.sex);

scanf(“%s”,p->data.sex);

getchar();

printf(“n”);

printf(“請你輸入新的年齡(原來是%d):”,p->data.age);

scanf(“%d”,&p->data.age);

printf(“n”);

printf(“請你輸入新的學歷(原來是%s):”,p->data.education);

scanf(“%s”,p->data.education);

getchar();

printf(“n”);

printf(“請你輸入新的工資(原來是%d):”,p->data.salary);

scanf(“%d”,&p->data.salary);

printf(“n”);

printf(“請你輸入新的電話(原來是%s):”,p->data.phone);

scanf(“%s”,p->data.phone);

getchar();

printf(“n”);

printf(“請你輸入新的住址(原來是%s):”,p->data.address);

scanf(“%s”,p->data.address);

getchar();

printf(“n”);

printf(“n***提示***:資料修改成功!n”);

saveflag=1;

}

else

Nofind();//if(p)結束

} //void Modify(LinkList L)

//修改功能結束 void Add(LinkList head)

/* 錄入職工信息 */ {

system(“cls”);ListNode *p,*r,*s;

/* 實現添加操作的臨時的結構體指針變量 */ int sign;

/* 標記重復工號的變量 */ char num[10];r=head;s=head->next;

/* 鏈表沒有節點時,s=NULL;鏈表有節點時,指向while(r->next!=NULL)/* 如果存在后繼結點時,r指針后移一個 */ r=r->next;

/* 將指針移至于鏈表最末尾,準備添加記錄 */ printf(“輸入‘#’將退出職工信息錄入,退回至主菜單!nn”);while(1){

printf(“(PS:職工號為‘#’即退出錄入功能)nn”);printf(“請輸入職工號:”);fflush(stdin);

//清除緩沖區。gets(num);if(strcmp(num,“#”)==0)/* 輸入‘0’,跳出while(1),即跳出Add()函數 */ break;s=head->next;

/* 每次從第一個節點開始找,看num是否重

while(s){

if(strcmp(s->data.num,num)==0){

} s=s->next;printf(“***提示***n工號為:‘%s’的職工信息已經存在!printf(”若要修改請按‘4’,放棄請按‘0’!n“);scanf(”%d“,&sign);if(sign==4)

Modify(head);return;else 第一個職工節點 */ 復。*/ n”,num);}//while(s)if((p=(LinkList)malloc(sizeof(ListNode)))==NULL)//生成沒賦值的新節點 p。

{

} strcpy(p->data.num,num);printf(“n”);printf(“請輸入該職工姓名:”);scanf(“%s”,p->data.name);getchar();printf(“n”);printf(“請輸入該職工的性別:(注:男性:male;女性:female)”);scanf(“%s”,p->data.sex);getchar();printf(“n”);printf(“請輸入該職工的年齡:”);scanf(“%d”,&p->data.age);printf(“n”);printf(“請輸入該職工的學歷:”);scanf(“%s”,p->data.education);getchar();printf(“n”);printf(“請輸入該職工的工資:”);scanf(“%d”,&p->data.salary);printf(“n”);printf(“請輸入該職工的電話號碼:”);scanf(“%s”,p->data.phone);getchar();printf(“n”);printf(“請輸入該職工的住址:”);gets(p->data.address);printf(“n”);p->next=NULL;

/* 表明這是鏈表的尾部結點 */ r->next=p;

/* 將新建的結點加入鏈表尾部中 */ r=p;saveflag=1;printf(“n”);printf(“系統分配存儲空間失敗!n”);printf(“退出程序!n”);exit(-1);}//while(1)}//void Add函數結束。

void printline()

//打印橫線。{ }

void printsubject()

//打印各分類標題。{ }

void printLinkList(LinkList p)

//打印p結點各個數據成員的值。{ printf(“ %s

%s %s

%d %s %d

%s

%sn”,p->data.num,p->data.name,p->data.sex,p->data.age,p->data.education,p->data.salary,p->data.phone,p->data.address);}

void Allemployeeinfo(LinkList head)//顯示所有職工信息。{

int count=0;ListNode *p;p=head->next;if(!p){

} printf(“tttt顯示結果n”);printline();printsubject();printf(“n”);while(p)printf(“***提示***:目前沒有存儲任何職工記錄!n”);printf(“返回主菜單,請重新選擇功能!n”);return;printf(“ 工 號t 姓 名

性 別

年 齡

學 歷

工 資

電 話tt 住 址n”);printf(“------------------n”);

} {

} printline();printf(“n”);printf(“已經存儲了%d條職工信息!n”,count);printLinkList(p);p=p->next;count++;void Wrong(){ }

void menu()

//主菜單。{

printf(“n”);printf(“t**********************************************************printf(”t*

printf(“t*

printf(”t*

< 職工信息管理系統_單鏈表實現 >

printf(“t*

printf(”t*

[1]

錄入職工信息

[2]

刪除職工信息

printf(“t*

[3]

查詢職工信息

[4]

修改職工信息

printf(”t*

[5]

插入職工記錄

[6]

統計職工信息

printf(“t*

[7]

排序

[8]

保存職工信息

printf(”t*

[9]

顯示所有職工記錄

[0]

退出系統

printf(“n***提示***:輸入錯誤!n”);*********n“);*n”);*n“);*n”);*n“);*n”);*n“);*n”);*n“);*n”);

printf(“t*

printf(”t*

printf(“t*

版權所有人:printf(”t*

電子132班

printf(“t*

printf(”t***********************************************************n“);*n”);彭林

*n“);*n”);1319200063

*n“);*********n”);} //void menu菜單結束。

void Del(LinkList L)//刪除職工信息。{

int select;

//刪除方式選擇記錄變量。ListNode *p,*r;char find[20];if(!L->next)

//當list無后繼結點時,提示和結束Del()函數。{

}

printf(“n按工號刪除,請按‘1’n按姓名刪除,請按‘2’n”);printf(“n=====>功能選擇:”);scanf(“%d”,&select);if(select==1){

printf(“請輸入要刪除的職工工號:”);scanf(“%s”,find);getchar();p=Locatenum(L,find);if(p){ r=L;printf(“n***提示***:沒有記錄可以刪除!n”);return;

} while(r->next!=p)r=r->next;//從第一個結點找起,直到發現r->next=p, 是待刪除結點,跳出循環。

r->next=p->next;free(p);printf(“n***提示***:該職工信息已成功刪除!n”);saveflag=1;else Nofind();}//if(select==1).else if(select==2){

printf(“請輸入要刪除的職工姓名:”);scanf(“%s”,find);getchar();p=Locatename(L,find);if(p){

} else Nofind();r=L;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf(“n***提示***:該職工信息已成功刪除!n”);saveflag=1;}//if(select==2).else Wrong();

//顯示輸入錯誤的話

}//void Del()刪除函數結束。

void Search(LinkList L)

//查詢職工信息。{ int select;

int salary;int sign=0;char find[20];ListNode *p;

//實現查詢操作的臨時結構體指針變量。if(!L->next){

} printf(“n按工號查找,請按‘1’n按工資查找,請按‘2’n按姓名查找,printf(”n=====>功能選擇:“);scanf(”%d“,&select);printf(”n“);if(select==1)

//工號。{

} else if(select==2)

//工資。{

printf(”請輸入要查找的工資:“);scanf(”%d“,&salary);p=Locatesalary(L,salary);printf(”請輸入要查找的工號:“);scanf(”%s“,find);getchar();p=Locatenum(L,find);if(p){

} else Nofind();printf(”tttt

查找結果n“);printline();

//打印橫線。printsubject();

//打印各分類標題。

printLinkList(p);

//打印p結點各個數據成員的值。printline();

//打印橫線。printf(”n***提示***:沒有職工信息資料可以查詢!n“);printf(”返回主菜單,請重新選擇功能!n“);return;請按‘3’n”);

} if(p){

} while(p){

{

} } if(sign==0)Nofind();printf(“tttt查找結果n”);printline();printsubject();printLinkList(p);printline();sign++;p=Locatesalary(p,salary);if(p)printf(“tttt查找結果n”);printline();printsubject();printLinkList(p);printline();sign++;else if(select==3)

//姓名。{

printf(“請輸入要查找的姓名:”);scanf(“%s”,find);getchar();p=Locatename(L,find);if(p){

printf(“tttt查找結果n”);printline();printsubject();printLinkList(p);

} } printline();else Nofind();else Wrong();}//void Search()查詢函數結束。

void Save(LinkList L)

//信息保存到文件中。{

FILE *fp;ListNode *p;int count=0;int flag=1;fp=fopen(“Employeeinfo.txt”,“wb”);if(fp==NULL){

} p=L->next;while(p){

if(fwrite(p,sizeof(ListNode),1,fp)==1)

//將第一個記錄結點值寫入文

{

p=p->next;

//依次寫入下一個結點的 count++;

//文件的記錄數+1。printf(“n***提示***:打開文件時發生錯誤!n”);return;件。

值。

}

else

{

flag=0;

printf(“寫入文件過程發生錯誤!n”);

break;

}

}//while(p).if(count>0){

} else {

} fclose(fp);system(“cls”);//清屏。

printf(“文件保存失敗!‘0’條記錄被保存。n”);printf(“n***提示***:文件保存成功。(有%d條記錄已經保存。)n”,count);saveflag=0;

}//void Save()函數結束。

void Sort(LinkList L)

//排序功能函數。{

ListNode *p,*m,*n;int i,j,count=0;p=L->next;if(!p){

} system(“cls”);

//清屏。printf(“按工資從低到高排序:n”);printf(“***以下為排序前的所有職工記錄***n”);Allemployeeinfo(L);while(p){

} for(i=0;i

//不包含頭結點的職工信息結點的總個數。p=p->next;system(“cls”);

//清屏。printf(“無任何職工信息!n”);printf(“返回主菜單!n”);return;

}

{

} printf(“***以下為排序后的所有職工記錄***n”);Allemployeeinfo(L);saveflag=1;printf(“排序成功!n”);n=L;p=L->next;m=p->next;while(m){

} if(p->data.salary>m->data.salary){

} else {

} n=p;p=m;m=m->next;n->next=p->next;p->next=m->next;m->next=p;n=m;m=p->next;void Statistics(LinkList L)//統計職工中的最高工資和最低工資。{

ListNode *Max,*Min;int i;ListNode *t=L->next;if(!t){ system(“cls”);

//清屏。printf(“沒有儲存任何職工記錄!n”);

}

} printf(“返回主菜單,請先錄入職工信息!n”);return;system(“cls”);Max=Min=t;t=t->next;while(t){

} printf(“最高工資為:%dn”,Max->data.salary);printf(“最低工資為:%dn”,Min->data.salary);printf(“若要查看最低,最高工資的相關職工信息,n”);printf(“請按‘1’,然后按照提示進行相關操作,n”);printf(“否則,請按‘1’除外的任何數字鍵以退出統計功能,返回主菜單。n”);printf(“n=====>功能選擇:”);scanf(“%d”,&i);if(i==1)Search(L);

//顯示符合要求的職工信息。return;else if(Max->data.salarydata.salary)Max=t;

//Max指針指向最高工資的職工結點。Min=t;

//Min指針指向最低工資的職工結點。if(Min->data.salary>t->data.salary)t=t->next;void Insert(LinkList L)

//插入新的職工信息。{

printf(“本功能可以通過姓名和工號查找到符合要求的n”);//功能介紹。printf(“相關職工信息,然后將您希望添加進去的新的n”);printf(“職工信息插入到該職工信息記錄的后面。n”);ListNode *p,*s;char find[20];

//存放工號和姓名的變量。int i;printf(“通過姓名查找,請按‘1’。n”);printf(“通過工號查找,請按‘2’。n”);

printf(“返回主菜單,請按‘3’。n”);printf(“n=====>功能選擇:”);scanf(“%d”,&i);printf(“n”);if(i==3){

} else if(i==1){

printf(“請輸入已在存儲記錄中的職工姓名:”);scanf(“%s”,find);getchar();p=Locatename(L,find);//定位。if(!p){

} s=(LinkList)malloc(sizeof(ListNode));if(!s){

} printf(“請輸入新職工工號:”);gets(s->data.num);printf(“n”);printf(“請輸入新職工姓名:”);scanf(“%s”,s->data.name);getchar();printf(“n”);printf(“請輸入新職工的性別:(注:男性:male;女性:female)”);scanf(“%s”,s->data.sex);printf(“系統分配存儲空間失敗!n”);system(“cls”);return;printf(“您輸入的該職工姓名不在信息記錄中,請重新核審!n”);printf(“返回主菜單。n”);return;system(“cls”);

//退出插入功能,返回主菜單。return;

} getchar();printf(“n”);printf(“請輸入新職工的年齡:”);scanf(“%d”,&s->data.age);printf(“n”);printf(“請輸入新職工的學歷:”);scanf(“%s”,s->data.education);getchar();printf(“n”);printf(“請輸入新職工的工資:”);scanf(“%d”,&s->data.salary);printf(“n”);printf(“請輸入新職工的電話號碼:”);scanf(“%s”,s->data.phone);getchar();printf(“n”);printf(“請輸入新職工的住址:”);scanf(“%s”,s->data.address);getchar();printf(“n”);s->next=p->next;p->next=s;printf(“姓名為:%s的新職工信息已成功插到姓名為:%s的職工信息記saveflag=1;

//資料已改動的存儲變量。錄后面。n”,s->data.name,p->data.name);else if(i==2){

printf(“請輸入已在存儲記錄中的職工工號:”);scanf(“%s”,find);getchar();p=Locatenum(L,find);//定位。if(!p){

printf(“您輸入的該職工工號不在信息記錄中,請重新核審!n”);printf(“返回主菜單。n”);return;

} s=(LinkList)malloc(sizeof(ListNode));if(!s){

} printf(“請輸入新職工工號:”);gets(s->data.num);printf(“n”);printf(“請輸入新職工姓名:”);scanf(“%s”,s->data.name);getchar();printf(“n”);printf(“請輸入新職工的性別:(注:男性:male;女性:female)”);scanf(“%s”,s->data.sex);getchar();printf(“n”);printf(“請輸入新職工的年齡:”);scanf(“%d”,&s->data.age);printf(“n”);printf(“請輸入新職工的學歷:”);scanf(“%s”,s->data.education);getchar();printf(“n”);printf(“請輸入新職工的工資:”);scanf(“%d”,&s->data.salary);printf(“n”);printf(“請輸入新職工的電話號碼:”);scanf(“%s”,s->data.phone);getchar();printf(“n”);printf(“請輸入新職工的住址:”);scanf(“%s”,s->data.address);getchar();printf(“n”);printf(“系統分配存儲空間失敗!n”);system(“cls”);return;

}

} s->next=p->next;p->next=s;printf(“姓名為:%s的新職工信息已成功插到姓名為:%s的職工信息記saveflag=1;錄后面。n”,s->data.name,p->data.name);else {

} printf(“功能選擇有誤!返回主菜單。n”);return;void main(){

LinkList L;/*定義鏈表*/ // struct Node *list;

FILE *fp;/* 文件指針 */

int choose;/*保存選擇結果變量*/

char ch;

/*保存(y,Y,n,N)*/

int count=0;/*保存文件中的記錄條數(或結點個數)*/

struct Node *p,*r;

/*定義記錄指針變量*/

printf(“tttt職工信息管理系統nttttn”);

L=(struct Node*)malloc(sizeof(struct Node));

if(!L)

{

printf(“n系統分配存儲空間失敗!n”);/*如沒有申請到,打印提示信

return;

/*返回菜單*/ 息*/

}

L->next=NULL;

r=L;

fp=fopen(“Employeeinfo.txt”,“rb”);

if(fp==NULL)

{

printf(“n***提示***:存儲職工信息的文件還不存在,是否創建?

scanf(”%c“,&ch);(y/n)n”);

*/

if(ch=='y'||ch=='Y')

{

fp=fopen(“Employeeinfo.txt”,“ab+”);

printf(“文件創建成功!n”);

}

else

{

printf(“文件沒有創建,無法寫入職工信息!nn”);

printf(“<-----退 出 職 工 信 息 管 理 系 統----->n”);

exit(0);

}

} // if(fp==NULL)

printf(“n=====>提示:文件已經打開,正在導入記錄......n”);

while(!feof(fp))//沒有到文件尾時,循環

{

fclose(fp);/* 關閉文件 */

printf(“n=====>提示:記錄導入完畢,共導入%d條記錄。n”,count);

while(1)

p=(struct Node*)malloc(sizeof(struct Node));

if(!p)

{

if(fread(p,sizeof(struct Node),1,fp))/* 讀文件的已有內容放入結點中

{

p->next=NULL;

r->next=p;

r=p;/* 將該結點掛入鏈表中, r指向最后的節點 */

count++;

printf(“ memory malloc failure!n”);

/*沒有申請成功*/

exit(0);

/*退出*/

}

}

} //while(!feof(fp))

{

menu();

printf(“tt====>請選擇:”);

scanf(“%d”,&choose);

if(choose==0)

{

if(saveflag==1)

{

getchar();

printf(“n=====>提示:資料已經改動,是否將改動保存到文件

scanf(”%c“,&ch);

if(ch=='y'||ch=='Y')

Save(L);中(y/n)?n”);

} //if

printf(“n***提示***:您已經退出系統,歡迎再次使用!~n”);

break;

}//if switch(choose){ case 1:Add(L);

break;break;break;break;break;break;Sort(L);break;Save(L);case 2:Del(L);case 3:Search(L);case 4:Modify(L);case 5:Insert(L);case 6:Statistics(L);case 7: case 8:

break;system(“cls”);Allemployeeinfo(L);break;case 9: default:

} } } Wrong();break;

第三篇:C語言用指針和鏈表讀寫文件

#include

#include

#include

#include

#define MAXLEN_OF_KEYWORD 50

#define MAXLEN_OF_KEYWORDTYPE 30

char i,ch[5];

struct KeyWordBox

{

char Name[MAXLEN_OF_KEYWORD];

intId;

char Type[MAXLEN_OF_KEYWORDTYPE];//該單詞的類型struct KeyWordBox *next;//指針

};

void write();

void read();

void main()

{

write();

read();

}

void write()

{

char *FileName=“FileName.txt”;

KeyWordBox transport;

memset(&transport,0,sizeof(struct KeyWordBox));

FILE *out=NULL;

FILE *test=NULL;

test=fopen(FileName,“a”);

if(test==NULL)

{

out=fopen(FileName,“w”);

printf(“ 1 continue,0 exitn”);

i=getchar();

while(i=='1')

{

printf(“請輸入關鍵字n”);

scanf(“%s”,transport.Name);

printf(“請輸入IDn”);

scanf(“%d”,&transport.Id);

printf(“請輸入Typen”);

scanf(“%s”,transport.Type);

fwrite(&transport,sizeof(struct KeyWordBox),1,out);

printf(“ 1 continue,0 exitn”);

scanf(“%c”,&i);

}

fclose(out);

}

else

{

out=fopen(FileName,“a”);

printf(“ 1 continue,0 exitn”);

scanf(“%c”,&ch);

//i=getchar();

//while(i=='1')

while(strcmp(ch,“1”)==0)

{

printf(“請輸入關鍵字n”);

scanf(“%s”,transport.Name);

printf(“請輸入IDn”);

scanf(“%d”,&transport.Id);

printf(“請輸入Typen”);

scanf(“%s”,transport.Type);

fwrite(&transport,sizeof(KeyWordBox),1,out);

printf(“ 1 continue,0 exit.n”);

scanf(“%s”,ch);

}

fclose(out);

}

}

void read()

{

char *FileName=“FileName.txt”;

KeyWordBox *Head=NULL,*q=NULL;

KeyWordBox *Body=NULL;

KeyWordBox *p=NULL;

FILE *in=NULL;

in=fopen(FileName,“r”);

if(in==NULL)

{

printf(“can't open the file!n”);

exit(0);

}

else

{

Head=(struct KeyWordBox*)malloc(sizeof(struct KeyWordBox));Head->next =NULL;

}}q=Head;while(!feof(in)){Body=(struct KeyWordBox*)malloc(sizeof(struct KeyWordBox));Body->next=NULL;fread(Body,sizeof(struct KeyWordBox),1,in);if(feof(in)){q->next=NULL;break;}q->next=Body;q=Body;printf(“%st%dt%sn”,Body->Name,Body->Id,Body->Type);} fclose(in);p=Head->next;while(p!=NULL){printf(“%st%dt%sn”,p->Name,p->Id,p->Type);p=p->next;}

第四篇:C語言課程設計 職工信息管理系統 單鏈表實現程序源代碼

//C語言課程設計 職工信息管理系統—單鏈表實現 #include “stdio.h” #include “stdlib.h” #include “string.h”

int saveflag=0;/*是否需要存盤的標志變量*/

struct employee { char name[15];char num[10];/* 工號 */ char sex[4];char bm[15];char zc[20];int gz;

};

typedef struct node { struct employee data;struct node *next;}Node,*Link;

//Link l(注意是:字母l不是數字1)void add(Link l);void disp(Link l);//查看職工所有信息 void del(Link l);//刪除功能

Node* Locate(Link l,char findmess[],char nameornum[]);

void Qur(Link l);//查詢功能 void Tongji(Link l);//統計 void Sort(Link l);//排序 void Modify(Link l);//修改功能

void save(Link l);//將單鏈表l中的數據寫入文件

void printe(Node *p);//本函數用于打印鏈表中某個節點的數據內容 */

//以下4個函數用于輸出中文標題 void printstart();void Wrong();void Nofind();void printc();

void menu(){ printf(“t*****************************************************************n”);printf(“t* *n”);printf(“t*

職工信息管理系統_結構體數組實現 *n”);printf(“t* *n”);printf(“t* [1] 增加職工信息 [2] 刪除職工信息 *n”);printf(“t* [3] 查詢職工信息 [4] 修改職工信息 *n”);printf(“t* [5] 插入職工記錄 [6] 統計職工記錄 *n”);printf(“t* [7] 排序 [8] 保存職工信息 *n”);printf(“t* [9] 顯示數據 [0] 退出系統 *n”);printf(“t* *n”);printf(“t*****************************************************************n”);} //void menu菜單結束

void Disp(Link l)//顯示單鏈表l中存儲的職工記錄,內容為employee結構中定義的內容 { int count=0;Node *p;p=l->next;// l存儲的是單鏈表中頭結點的指針,該頭結點沒有存儲職工信息,指針域指向的后繼結點才有職工信息

if(!p)/*p==NULL,NUll在stdlib中定義為0*/ {

printf(“n=====>提示:沒有職工記錄可以顯示!n”);

return;}

printf(“tttt顯示結果n”);printstart();//打印橫線

printc();//打印各學科標題

printf(“n”);

while(p)//逐條輸出鏈表中存儲的職工信息

{

printe(p);

p=p->next;} printstart();printf(“n”);} //void Disp結束

void printstart(){ printf(“---------n”);}

void Wrong(){ printf(“n=====>提示:輸入錯誤!n”);}

void Nofind(){ printf(“n=====>提示:沒有找到該職工!n”);}

void printc()/* 本函數用于輸出中文 */ { printf(“ 工號t 姓名 性別 部門 職稱 工資 總工資平均工資n”);}

void printe(Node *p)/* 本函數用于打印鏈表中某個節點的數據內容 */ { printf(“%-12s%st%st%dt%dt%dt %dt %dn”,p->data.num,p->data.name,p->data.sex,p->data.bm,p->data.zc,p->data.gz);}

//Locate(l,findmess,“num”);/* 該函數用于定位連表中符合要求的結點,并返回該指針 */ Node* Locate(Link l,char findmess[],char zcornum[]){ Node *r;if(strcmp(zcornum,“num”)==0)/* 按工號查詢 */ {

r=l->next;

while(r!=NULL)

{

if(strcmp(r->data.num,findmess)==0)/*若找到findmess值的工號*/

return r;

r=r->next;

} } else if(strcmp(zcornum,“zc”)==0)/* 按職稱查詢 */ {

r=l->next;

while(r!=NULL)

{

if(strcmp(r->data.zc,findmess)==0)/*若找到findmess值的職工職稱*/

return r;

r=r->next;

} } return 0;/*若未找到,返回一個空指針*/ }

//add()函數中,無節點時,r指向list頭,有節點時,r指向末尾節點 void Add(Link l)/* 增加職工 */ { Node *p,*r,*s;/*實現添加操作的臨時的結構體指針變量*/ char num[10];int flag=0;r=l;s=l->next;//鏈表沒有節點時,s=null;/鏈表有節點時,指向第一個職工節點

while(r->next!=NULL)//如果存在后繼結點時,r指針后移一個

r=r->next;/*將指針移至于鏈表最末尾,準備添加記錄*/

while(1){

printf(“請你輸入工號(以'0'返回上一級菜單:)”);

scanf(“%s”,num);

if(strcmp(num,“0”)==0)//輸入'0',跳出while(1),即跳出add()函數

break;

s=l->next;//作用? 每次從第一個節點開始找,看num是否重復。

while(s)//工號重復時,返回主菜單

{

if(strcmp(s->data.num,num)==0)

{

printf(“=====>提示:工號為'%s'的職工已經存在,若要修改請你選擇'4 修改'!n”,num);

flag=1;//break;

return;

}

s=s->next;

} //while(s)

p=(Node *)malloc(sizeof(Node));//生成沒賦值的新節點 p

strcpy(p->data.num,num);

printf(“請你輸入姓名:”);

scanf(“%s”,p->data.name);

getchar();

printf(“請你輸入性別:”);

scanf(“%s”,p->data.sex);

getchar();

printf(“請你輸入職工所在部門:”);

scanf(“%d”,&p->data.bm);

getchar();

printf(“請你輸入職工職稱:”);

scanf(“%d”,&p->data.zc);

getchar();

printf(“請你輸入職工工資:”);

scanf(“%d”,&p->data.gz);

getchar();

/* 信息輸入已經完成 */

p->next=NULL;/*表明這是鏈表的尾部結點*/

r->next=p;/*將新建的結點加入鏈表尾部中*/

r=p;

saveflag=1;} //while(1)} //void Add增加結束

void Del(Link l)/* 刪除 */ { int sel;Node *p,*r;/*實現刪除操作的臨時的結構體指針變量*/ char findmess[20];

if(!l->next)//當list無后繼結點時,提示和結束返回del(){

printf(“n=====>提示:沒有記錄可以刪除!n”);

return;}

printf(“n=====>1按工號刪除n=====>2按姓名刪除n”);scanf(“%d”,&sel);if(sel==1)//按工號刪除

{

printf(“請你輸入要刪除的工號:”);

scanf(“%s”,findmess);

p=Locate(l,findmess,“num”);

if(p)

{

r=l;

while(r->next!=p)

r=r->next;//從第一個結點找起,直到發現r->next=p, 刪除結點,跳出循環

r->next=p->next;//r r->next(p)p->next

free(p);

printf(“n=====>提示:該職工已經成功刪除!n”);

saveflag=1;

}

else

Nofind();//顯示一句話

} //if(sel==1)else if(sel==2)//按姓名刪除

{

是待

printf(“請你輸入要刪除的姓名:”);

scanf(“%s”,findmess);

p=Locate(l,findmess,“name”);

if(p)

{

r=l;

while(r->next!=p)

r=r->next;

r->next=p->next;//r r->next(p)p->next

free(p);

printf(“n=====>提示:該職工已經成功刪除!n”);

saveflag=1;

}

else

Nofind();} //if(sel==2)else

Wrong();//顯示輸入錯誤的話 } //void Del刪除結束

void Qur(Link l)//查詢功能 { int sel;char findmess[20];Node *p;//實現查詢操作的臨時的結構體指針變量

if(!l->next){

printf(“n=====>提示:沒有資料可以查詢!n”);

return;}

printf(“n=====>1按工號查找n=====>2按職稱查找n”);scanf(“%d”,&sel);

if(sel==1)/* 工號 */ {

printf(“請你輸入要查找的工號:”);

scanf(“%s”,findmess);

p=Locate(l,findmess,“num”);

if(p)

{

printf(“tttt查找結果n”);

printstart();//打印橫線

printc();//打印各學科標題

printe(p);//打印p結點各個數據成員的值

printstart();//打印橫線

}

else

Nofind();} //if(sel==1)

else if(sel==2)/* 職稱 */ {

printf(“請你輸入要查找的職稱:”);

scanf(“%s”,findmess);

p=Locate(l,findmess,“zc”);

if(p)

{

printf(“tttt查找結果n”);

printstart();

printc();

printe(p);

printstart();

}

else

Nofind();} else

Wrong();} //void Qur查詢結束

void Modify(Link l)//修改功能 { Node *p;char findmess[20];if(!l->next){

printf(“n=====>提示:沒有資料可以修改!n”);

return;}

printf(“請你輸入要修改的職工工號:”);scanf(“%s”,findmess);p=Locate(l,findmess,“num”);

if(p){

printf(“請你輸入新工號(原來是%s):”,p->data.num);

scanf(“%s”,p->data.num);

printf(“請你輸入新姓名(原來是%s):”,p->data.name);

scanf(“%s”,p->data.name);

getchar();

printf(“請你輸入新性別(原來是%s):”,p->data.sex);

scanf(“%s”,p->data.sex);

getchar();

printf(“請你輸入新的部門(原來是%s):”,p->data.bm);

scanf(“%d”,&p->data.bm);

printf(“請你輸入新的職稱(原來是%s):”,p->data.zc);

scanf(“%d”,&p->data.zc);

getchar();

printf(“請你輸入新的工資(原來是%d):”,p->data.gz);

scanf(“%d”,&p->data.gz);

printf(“n=====>提示:資料修改成功!n”);

//shoudsave=1;} else

Nofind();//if(p)結束

} //void Modify(Link l)//修改功能結束

//插入記錄:按工號查詢到要插入的節點的位置,然后在該工號之后插入一個新節點。

void Insert(Link l){ Node *s,*r,*p;/*p指向插入位置,p指新插入記錄節點*/ char ch,new_num[10],old_num[10];//old_num[]保存插入點位置之前的工號,new_num[]保存輸入的新記錄的工號

int flag=0;s=l->next;system(“cls”);Disp(l);

while(1){

//stringinput(s,10,“please input insert location after the Number:”);

printf(“請你輸入已存在的工號(以'0'返回上一級菜單:)”);

scanf(“%s”,old_num);

if(strcmp(old_num,“0”)==0)//輸入'0',跳出while(1),即跳出Insert()函數

return;

s=l->next;//作用? 每次從第一個節點開始找

flag=0;

while(s)/*查詢該工號是否存在,flag=1表示該工號存在*/

{

if(strcmp(s->data.num,old_num)==0)

{

flag=1;

break;

}

s=s->next;

}

if(flag==1)

break;/*若工號存在,則進行插入之前的新記錄的輸入操作*/

else

{

getchar();

printf(“n=====>The number %s is not existing,try again?(y/n):”,old_num);

scanf(“%c”,&ch);

if(ch=='y'||ch=='Y')

{continue;}

else

{return;} //回主菜單

}

}//while(1)/*以下新記錄的插入新節點,工號不能跟已存在的工號相同,操作與Add()相同*/

printf(“請你輸入待插入的工號(以'0'返回上一級菜單:)”);scanf(“%s”,new_num);if(strcmp(new_num,“0”)==0)//輸入'0',跳出while(1),即跳出add()函數

return;s=l->next;//作用? 每次從第一個節點開始找,看num是否重復。

while(s)//工號重復時,返回主菜單

{

if(strcmp(s->data.num,new_num)==0)

{

printf(“=====>提示:工號為'%s'的職工已經存在'!n”,new_num);

flag=1;

return;

}

s=s->next;} //while(s)

p=(Node *)malloc(sizeof(Node));if(!p){

printf(“n allocate memory failure ”);/*如沒有申請到,打印提示信息*/

return;/*返回主界面*/ }

strcpy(p->data.num,new_num);printf(“請你輸入姓名:”);scanf(“%s”,p->data.name);getchar();printf(“請你輸入性別:”);scanf(“%s”,p->data.sex);getchar();printf(“請你輸入部門:”);scanf(“%d”,&p->data.bm);getchar();printf(“請你輸入職稱:”);scanf(“%d”,&p->data.zc);getchar();printf(“請你輸入工資:”);scanf(“%d”,&p->data.gz);getchar();// 信息輸入已經完成

p->next=NULL;/*表明這是鏈表的尾部結點*/

saveflag=1;/*在main()有對該全局變量的判斷,若為1,則進行存盤操作*/ /*將指針賦值給r,因為l中的頭節點的下一個節點才實際保存著學生的記錄*/

r=l->next;while(1){

if(strcmp(r->data.num,old_num)==0)/*在鏈表中插入一個節點*/

{

p->next=r->next;

r->next=p;

break;

}

r=r->next;}// while(1),r作為查詢指針,依次從第一個節點找起,找到后 跳出 while(1)循環

Disp(l);printf(“nn”);// getchar();

}

void Tongji(Link l)//統計 { Node *max,*min;/*用于指向工資最高的節點*/ Node *t=l->next;if(!t){

system(“cls”);

printf(“n=====>Not employee record!n”);

getchar();

return;} system(“cls”);Disp(l);max=min=t;while(t){

if(t->data.gz>=max->data.gz)max=t;

if(t->data.gz<=min->data.gz)min=t;

t=t->next;

printf(“最高工資為:%dn”,max);

printf(“t%st%st%st%st%st%dnn”,t->data.num,t->data.name,t->data.sex,t->data.bm,t->data.zc,t->data.gz);printf(“最低工資為:%dn”,min);

printf(“t%st%st%st%st%st%dnn”,t->data.num,t->data.name,t->data.sex,t->data.bm,t->data.zc,t->data.gz);} }

void Sort(Link l)//排序 { Link ll;Node *p,*rr,*s;int i=0;if(l->next==NULL){ system(“cls”);printf(“n=====>Not employee record!n”);getchar();return;} ll=(Node*)malloc(sizeof(Node));/*用于創建新的節點*/ if(!ll){

printf(“n allocate memory failure ”);/*如沒有申請到,打印提示信息*/

return;/*返回主界面*/ } ll->next=NULL;system(“cls”);Disp(l);/*顯示排序前的所有職工記錄*/ p=l->next;while(p)/*p!=NULL*/ {

s=(Node*)malloc(sizeof(Node));/*新建節點用于保存從原鏈表中取出的節點信息*/

if(!s)/*s==NULL*/

{

printf(“n allocate memory failure ”);/*如沒有申請到,打印提示信息*/

return;/*返回主界面*/

}

s->data=p->data;/*填數據域*/

s->next=NULL;/*指針域為空*/

rr=ll;

/*rr鏈表于存儲插入單個節點后保持排序的鏈表,ll是這個鏈表的頭指針,每次從頭開始查找插入位置*/

while(rr->next!=NULL && rr->next->data.gz>=p->data.gz)

{rr=rr->next;} /*指針移至總分比p所指的節點的總分小的節點位置*/

if(rr->next==NULL)/*若新鏈表ll中的所有節點的總分值都比p->data.gz大時,就將p所指節點加入鏈表尾部*/

rr->next=s;

else /*否則將該節點插入至第一個總分字段比它小的節點的前面*/

{

s->next=rr->next;

rr->next=s;

}

p=p->next;/*原鏈表中的指針下移一個節點*/ }

l->next=ll->next;/*ll中存儲是的已排序的鏈表的頭指針*/

Disp(l);saveflag=1;printf(“n =====>sort complete!n”);}

void Save(Link l){ FILE* fp;Node *p;//實現保存操作的臨時的結構體指針變量

int flag=1,count=0;

fp=fopen(“employee.txt”,“wb”);if(fp==NULL){

printf(“n=====>提示:重新打開文件時發生錯誤!n”);

return;}

p=l->next;//p指向第一個記錄結點

while(p){

if(fwrite(p,sizeof(Node),1,fp)==1)//將第一個記錄結點值寫入文件

{

p=p->next;//依次寫入第二個結點的值,count++;//文件的記錄數+1

}

else

{

flag=0;

break;

} } //while(p)

if(count>0){

printf(“n=====>提示:文件保存成功.(有%d條記錄已經保存.)n”,count);

saveflag=0;} else {

system(“cls”);

printf(“保存文件失敗,'0'條記錄被保存!n”);} fclose(fp);} // void Save結束

void main(){ Link list;/*定義鏈表*/ // struct node *list;FILE *fp;/* 文件指針 */ int choose;/*保存選擇結果變量*/ char ch;/*保存(y,Y,n,N)*/

int count=0;/*保存文件中的記錄條數(或結點個數)*/ struct node *p,*r;/*定義記錄指針變量*/ printf(“tttt職工信息管理系統nttttn”);

list=(struct node*)malloc(sizeof(struct node));

if(!list){

printf(“n allocate memory failure ”);/*如沒有申請到,打印提示信息*/

return;/*返回主界面*/ }

list->next=NULL;r=list;

fp=fopen(“employee.txt”,“rb”);if(fp==NULL){

printf(“n=====>提示:文件還不存在,是否創建?(y/n)n”);

scanf(“%c”,&ch);

if(ch=='y'||ch=='Y')

fp=fopen(“employee.txt”,“ab+”);

else

exit(0);} // if(fp==NULL)

printf(“n=====>提示:文件已經打開,正在導入記錄......n”);

while(!feof(fp))//沒有到文件尾時,循環

{

p=(struct node*)malloc(sizeof(struct node));

if(!p)

{

printf(“ memory malloc failure!n”);/*沒有申請成功*/

exit(0);/*退出*/

}

if(fread(p,sizeof(struct node),1,fp))/* 讀文件的已有內容放入結點中 */

{

p->next=NULL;

r->next=p;

r=p;/* 將該結點掛入鏈表中, r指向最后的節點 */

count++;

} } //while(!feof(fp))

fclose(fp);/* 關閉文件 */ printf(“n=====>提示:記錄導入完畢,共導入%d條記錄.n”,count);

while(1){

menu();

printf(“tt====>請選擇:”);

scanf(“%d”,&choose);

if(choose==0)

{

if(saveflag==1)

{

getchar();

printf(“n=====>提示:資料已經改動,是否將改動保存到文件中(y/n)?n”);

scanf(“%c”,&ch);

if(ch=='y'||ch=='Y')

Save(list);

} //if

printf(“n=====>提示:你已經退出系統,再見!n”);

break;

}//if

switch(choose)

{

case 1:Add(list);

break;/* 增加職工記錄 */

case 2:

Del(list);

break;/* 刪除職工記錄 */

case 3:

Qur(list);

break;/* 查詢職工記錄 */

case 4:

Modify(list);

break;/* 修改職工記錄 */

case 5:

Insert(list);

break;/*插入職工記錄*/

case 6:

Tongji(list);

break;/*統計職工記錄*/

case 7:

Sort(list);

break;/*排序職工記錄*/

case 8:

Save(list);

break;/* 保存職工記錄 */

case 9:

system(“cls”);

Disp(list);

break;/*顯示職工記錄*/

default:

Wrong();

getchar();

break;

} //switch(choose)}//while(1)} //main()/* */

第五篇:串的模式匹配問題實驗總結(用C實現)

串的模式匹配問題實驗總結

1實驗題目:

實現Index(S,T,pos)函數。其中,Index(S,T,pos)為串T在串S的第pos個字符后第一次出現的位置。

2實驗目的:

熟練掌握串模式匹配算法。

3實驗方法:

分別用樸素模式匹配和

KMP快速模式匹配來實現串的模式匹配問題。具體方法如下:

樸素模式匹配:輸入兩個字符串,主串S和子串T,從S串的第pos個位置開始與T的第一個位置比較,若不同執行 i=i-j+2;j=1兩個語句;若相同,則執行語句 ++i;++j;一直比較完畢為止,若S中有與T相同的部分則返回主串(S字符串)和子串(T字符串)相匹配時第一次出現的位置,若沒有就返回0。

KMP快速模式匹配:構造函數get_next(char *T,int *next),求出主串S串中各個字符的next值,然后在Index_KMP(char *S,char *T,int pos)函數中調用get_next(char *T,int *next)函數并調用next值,從S串的第pos 位置開始與T的第一個位置進行比較,若兩者相等或j位置的字符next值等于0,則進行語句++i;++j;即一直向下進行。否則,執行語句 j=A[j];直到比較完畢為止。若S中有與T相同的部分則返回主串(S字符串)和子串(T字符串)相匹配時第一次出現的位置,若沒有就返回0

4實驗過程與結果:

(1)、選擇1功能“輸入主串、子串和匹配起始位置”,輸入主串S:asdfghjkl, 輸入子串T:gh,輸入pos的值為:2。選擇2功能 “樸素的模式匹配算法”,輸出結果為 5; 選擇3功能 “KMP快速模式匹配算法”,輸出結果為 5; 選擇0功能,退出程序。截圖如下:

(2)、選擇1功能“輸入主串、子串和匹配起始位置”,輸入主串S:asdfghjkl, 輸入子串T:wp, 輸入pos的值為:2。選擇2功能 “樸素的模式匹配算法”,輸出結果為 0; 選擇3功能 “KMP快速模式匹配算法”,輸出結果為 0; 選擇1功能“輸入主串、子串和匹配起始位置”,輸入主串S:asdfghjkl, 輸入子串T:sd, 輸入pos的值為:4。選擇2功能 “樸素的模式匹配算法”,輸出結果為 0; 選擇3功能 “KMP快速模式匹配算法”,輸出結果為 0;

選擇0功能,退出程序。截圖如下:

5實驗體會與收獲:

(1)C語言中無法用string型直接定義字符串,所以要用char型的數組來實現字符串的定義。

(2)在char S[]數組,數組的首位即S[0]表示數組長度,用stolen()計算長度,輸入的字符串逐步后移一位,此時S[1]存放第一個字符。

(3)在主函數中,用get(S+1);get(T+1);兩個語句無法同時實現字符的輸入,最后改用C++語句 cin>>S+1;cin>>T+1;使字符的輸入得到了實現。(4)程序用有必要的文字說明,以便運行時更加清晰明了。

下載求解Josephus問題實驗總結(用C語言循環單鏈表實現)(精選5篇)word格式文檔
下載求解Josephus問題實驗總結(用C語言循環單鏈表實現)(精選5篇).doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    黑馬程序員C語言教程:如何實現一個優美的鏈表

    如何實現一個優美的鏈表 面向對象的語言更接近人的思維方式,而且在很大程度上降低了代碼的復雜性,同時提高了代碼的可讀性和可維護性,傳統的 C 代碼同樣可以設計出比較易讀,易維......

    c語言迷宮問題代碼實現

    C語言迷宮問題代碼如下:#include#include#define LEN sizeof(SEAT)#define MAXSIZE 100#define LENGTH 30typedef struct{int x;//橫坐標int y;//縱坐標int di;//表示方向,0-3......

    用c語言實現單純形法的編程

    用c語言實現單純形法的編程 #include "stdio.h" #include "math.h" #include int M,N; float c[100],a[100][100],b[100],CZ[100],Dn[100],th[100],x[100]; int Fn[100]; i......

    C語言實驗實習總結

    2012年下學期C語言實驗實習總結 賀秀山 在科技高度發展的今天,計算機在人們之中的作用越來越突出。而c語言作為一種計算機的語言,我們學習它,有助于我們更好的了解計算機,與計算......

    C語言實驗程序、總結 實驗六 函數(★)

    一 實驗目的 1 掌握定義函數的方法; 實驗六 函數 2 掌握函數實參與形參的對應關系以及“值傳遞”的方式; 3 掌握函數遞歸調用的方法; 二 實驗內容 1 編寫兩個函數,分別求兩個正......

    C語言實驗程序、總結 實驗七 指針大全

    一 實驗目的 實驗七 指針 1 了解指針的概念,學會定義和使用指針變量。 2 掌握指針、變量和數組的關系及使用方法。 3 學會使用指向函數的指針變量。 二 實驗內容 1 編寫函數f......

    教學編制問題 c語言 數據結構實現[五篇范例]

    數據結構 課程設計報告 主題:教學計劃編制問題 學號:20091003768 班級:計科四班 姓名:熊金蓮 指導老師:郭艷內容概要 (1) 題目要求 (2) 教學計劃編制問題的要點 (3) 函數模塊及各函數可......

    C語言自增自減問題總結

    C語言自增自減問題總結 在程序設計中,經常遇到“i=i+1”和“i=i-1”這兩種極為常用的操作。C語言為這種操作提供了兩個更為簡潔的運算符,即++和--,分別叫做自增運算符和自減運......

主站蜘蛛池模板: 尹人香蕉久久99天天拍久女久| 青青草国产免费无码国产精品| 亚洲精品国产suv一区| 99久久国产综合精品女| 不知火舞私秘?奶头大屁股小说| 日日摸天天碰中文字幕你懂的| 亚洲日韩在线中文字幕第一页| 九九热在线视频精品店| 无码人妻aⅴ一区二区三区| 色婷婷久久综合中文久久一本| 久久青青草原国产精品最新片| 亚洲欧美在线观看| 婷婷久久综合九色综合| 韩国美女视频黄是免费| 性裸交a片一区二区三区| 在线成人爽a毛片免费软件| 欧美精品一区二区黄a片| 成人无码视频| 国产亚洲日韩在线一区二区三区| 区二区欧美性插b在线视频网站| 国产女厕偷窥系列在线视频| 狠狠噜天天噜日日噜视频跳一跳| 韩国三级在线 中文字幕 无码| 久久久精品人妻一区二区三区| 熟妇五十路六十路息与子| 国产精品国产三级国产av中文| 一区二区三区国产亚洲网站| 经典国产乱子伦精品视频| 99久久久无码国产aaa精品| 人人澡人人妻人人爽人人蜜桃麻豆| 亚洲av网一区二区三区| 久久亚洲sm情趣捆绑调教| 亚洲黑人巨大videos| 久久久久亚洲精品无码网址蜜桃| 亚洲人成网网址在线看| 曰本女人与公拘交酡| 亚洲 欧洲 日韩 综合二区| 国产精品亚洲综合色区韩国| 在线观看欧美一区二区三区| 久久国产天堂福利天堂| 337p日本欧洲亚洲大胆精品|