日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言综合练习二

發(fā)布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言综合练习二 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


#include "stdio.h"

#include "stdlib.h"
#include <iostream>
#include "string.h"

#include "conio.h" //包含這個getch()方法

#define M 50
using namespace std;
typedef struct

{

?? char name[20]; /*姓名*/

?? char sex[10]; /*性別*/
?? char birth[15]; /*出生年月*/

?? char units[30]; /*工作單位*/

?? char studylevel[20]; /*學(xué)歷*/

?? char officenumber[15]; /*辦公電話*/

?? char homenumber[15]; /*住宅電話*/

?? char homeaddress[30]; /*家庭住址*/

}ADDRESS;

?

/*顯示指定的一條記錄*/

void mprint(ADDRESS temp)

{
?? printf("\n****************************************************************************\n");

?? printf(" 姓名 性別 出生年月 工作單位 學(xué)歷 辦公電話 住宅電話 家庭住址\n");

?? printf("----------------------------------------------------------------------------\n");

?? printf("%-8s%4s%13s%8s%7s%12s%12s%8s\n",temp.name,temp.sex,temp.birth,temp.units,

????????? temp.studylevel,temp.officenumber,temp.homenumber,temp.homeaddress);

?? printf("*********************************end****************************************\n");

}

?

/*輸入記錄,形參為結(jié)構(gòu)體數(shù)組,函數(shù)值返回類型為整型表示記錄長度*/

int enter(ADDRESS t[])

{

?? int i,n;

?? system("cls");

?? printf("********************************************************************************\n");

?? printf("請確定您要輸入的記錄數(shù)\n"); /*提示信息*/

?? scanf("%d",&n); /*輸入記錄數(shù)*/

?? if(n>0)

?? {

??????? printf("請輸入您的通訊錄記錄\n\n"); /*提示輸入記錄*/

?????? printf(" 姓名 性別 出生年月 工作單位 學(xué)歷 辦公電話 住宅電話 家庭住址\n");

?????? printf("--------------------------------------------------------------------------\n");

?????? for(i=0;i<n;i++)

??????? {

??????? scanf("%s%s%s%s%s%s%s%s",t[i].name,t[i].sex,t[i].birth,t[i].units,

????????? t[i].studylevel,t[i].officenumber,t[i].homenumber,t[i].homeaddress); /*輸入記錄*/

??????? printf("-------------------------------------------------------------------------\n");

??????? }
?????? printf("信息錄入成功!");

?????? return n; /*返回記錄條數(shù)*/

?? }

?? if(n<=0) printf("對不起,您輸入的記錄數(shù)不正確\n");exit(0);

}

?

/*顯示記錄,參數(shù)為記錄數(shù)組和記錄條數(shù)*/

void list(ADDRESS t[],int n)

{

??? int i;

?? system("cls");

?? printf("\n*********************************通訊錄***********************************\n");

?? printf(" 總共有%d 條記錄 \n",n);

?? printf(" 姓名 性別 出生年月 工作單位 學(xué)歷 辦公電話 住宅電話 家庭住址\n");

?? printf("--------------------------------------------------------------------------\n");

?? for(i=0;i<n;i++)

?? {

???????? printf("%-8s%4s%13s%8s%7s%12s%12s%8s\n",t[i].name,t[i].sex,t[i].birth,t[i].units,

????????? t[i].studylevel,t[i].officenumber,t[i].homenumber,t[i].homeaddress);

???????? if((i+1)%10==0)

???????? {

????????????? printf("請輸入任意鍵繼續(xù)....\n");

????????????? getchar();

???????? }

?? }

?? printf("**********************************結(jié)束************************************\n");

}

?

/*按姓名查找函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)以及姓名s */

int namefind(ADDRESS t[],int n,char *s)

{

?? int i;

?? for(i=0;i<n;i++)/*從第一條記錄開始,直到最后一條*/

?? {

????? if(strcmp(s,t[i].name)==0) /*記錄中的姓名和待比較的姓名是否相等*/

?????? return i; /*相等,則返回該記錄的下標(biāo)號,程序提前結(jié)結(jié)束*/

?? }

?? return i; /*返回i值*/

}

?

/*按辦公電話查找函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)以及辦公電話s */

int officenumberfind(ADDRESS t[],int n,char *s)

{

?? int i;

?? for(i=0;i<n;i++)/*從第一條記錄開始,直到最后一條*/

?? {

????? if(strcmp(s,t[i].officenumber)==0) /*記錄中的辦公電話和待比較的辦公電話是否相等*/

?????? return i; /*相等,則返回該記錄的下標(biāo)號,程序提前結(jié)結(jié)束*/

?? }

?? return i; /*返回i值*/

}

/*按住宅電話查找函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)以及住宅電話s */

int homenumberfind(ADDRESS t[],int n,char *s)

{

?? int i;

?? for(i=0;i<n;i++)/*從第一條記錄開始,直到最后一條*/

?? {

????? if(strcmp(s,t[i].homenumber)==0) /*記錄中的住宅電話和待比較的住宅電話是否相等*/

?????? return i; /*相等,則返回該記錄的下標(biāo)號,程序提前結(jié)結(jié)束*/

?? }

?? return i; /*返回i值*/

}

?

/*刪除記錄函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)*/

int delet(ADDRESS t[],int n)

{

?? char s[20]; /*要刪除記錄的姓名*/

?? int ch=0;

?? int i,j;

?? printf("請輸入您要刪除的記錄的姓名\n"); /*提示信息*/

?? scanf("%s",s);/*輸入姓名*/

?? i=namefind(t,n,s); /*調(diào)用namefind函數(shù)*/

?? if(i>n-1) /*如果i>n-1超過了數(shù)組的長度*/

????? printf("對不起,沒有找到要刪除的記錄!\n"); /*顯示沒找到要刪除的記錄*/

?? else

?? {

????? mprint(t[i]); /*調(diào)用輸出函數(shù)顯示該條記錄信息*/

????? printf("您確認(rèn)要刪除該條記錄么?(1.是/0.否)\n"); /*確認(rèn)是否要刪除*/

????? scanf("%d",&ch); /*輸入一個整數(shù)或*/

????? if(ch==1) /*如果確認(rèn)刪除整數(shù)*/

????? {

????? for(j=i+1;j<n;j++) /*刪除該記錄,實際后續(xù)記錄前移*/

????? {

???????? strcpy(t[j-1].name,t[j].name); /*將后一條記錄的姓名拷貝到前一條*/

???????? strcpy(t[j-1].sex,t[j].sex); /*將后一條記錄的性別拷貝到前一條*/

???????? strcpy(t[j-1].birth,t[j].birth); /*將后一條記錄的生日拷貝到前一條*/

???????? strcpy(t[j-1].units,t[j].units); /*將后一條記錄的工作單位拷貝到前一條*/

???????? strcpy(t[j-1].studylevel,t[j].studylevel); /*將后一條記錄的學(xué)歷拷貝到前一條*/

???????? strcpy(t[j-1].officenumber,t[j].officenumber); /*將后一條記錄的辦公電話拷貝到前一條*/

???????? strcpy(t[j-1].homenumber,t[j].homenumber); /*將后一條記錄的住宅電話拷貝到前一條*/

???????? strcpy(t[j-1].homeaddress,t[j].homeaddress); /*將后一條記錄的家庭地址拷貝到前一條*/

????? }

????? n--; /*記錄數(shù)減*/

????? printf("記錄刪除成功!\n");

????? }

?? }

?? return n; /*返回記錄數(shù)*/

}

?

/*修改記錄函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)*/

void rewrite(ADDRESS t[],int n)

{

?? char s[20]; /*要修改記錄的姓名*/

?? int ch=0;

?? int i;

?? printf("請輸入您要修改的通訊錄的姓名:\n"); /*提示信息*/

?? scanf("%s",s);/*輸入姓名*/

?? i=namefind(t,n,s); /*調(diào)用namefind函數(shù)*/

?? if(i>n-1) /*如果i>n-1超過了數(shù)組的長度*/

????? printf("對不起,沒有找到要修改的記錄!\n"); /*顯示沒找到要修改的記錄*/

?? else

?? {

????? mprint(t[i]); /*調(diào)用輸出函數(shù)顯示該條記錄信息*/

????? printf("您確定要修改這條記錄么?(1.是/0.否)\n"); /*確認(rèn)是否要修改*/

????? scanf("%d",&ch); /*輸入一個整數(shù)或*/

????? if(ch==1) /*如果確認(rèn)修改整數(shù)為*/

?????? {

?????????? printf("請輸入新的記錄\n");

????????? printf("*************************************************************************");

????????? printf(" 姓名 性別 出生年月 工作單位 學(xué)歷 辦公電話 住宅電話 家庭住址\n");

????????? printf("---------------------------------------------------------------------------\n");

????????? scanf("%s%s%s%s%s%s%s%s",t[i].name,t[i].sex,t[i].birth,t[i].units,

??????????????? t[i].studylevel,t[i].officenumber,t[i].homenumber,t[i].homeaddress); /*輸入修改信息*/

????????? printf("---------------------------------------------------------------------------\n");

?????????? printf("記錄修改成功!\n");

?????? }

?? }

}

?

/*插入記錄函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/

int add(ADDRESS t[],int n) /*插入函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/

{

?? ADDRESS temp; /*新插入記錄信息*/

?? int i,j;

?? char s[20]; /*確定插入在哪個記錄之前*/

?? printf("請輸入您要插入的記錄\n");

?? printf("***************************************************************************\n");

?? printf(" 姓名 性別 出生年月 工作單位 學(xué)歷 辦公電話 住宅電話 家庭住址\n");

?? printf("---------------------------------------------------------------------------\n");

?? scanf("%s%s%s%s%s%s%s%s",temp.name,temp.sex,temp.birth,temp.units,

????????? temp.studylevel,temp.officenumber,temp.homenumber,temp.homeaddress); /*輸入插入信息*/
?? printf("---------------------------------------------------------------------------\n");

?? printf("請輸入您要插入位置的姓名\n");

?? scanf("%s",s); /*輸入插入位置的姓名*/

?? i=namefind(t,n,s); /*調(diào)用namefind,確定插入位置*/

?

?? for(j=n-1;j>=i;j--) /*從最后一個結(jié)點(diǎn)開始向后移動一條*/

?? {

????? strcpy(t[j+1].name,t[j].name); /*當(dāng)前記錄的姓名拷貝到后一條*/

????? strcpy(t[j+1].sex,t[j].sex); /*當(dāng)前記錄的性別拷貝到后一條*/

????? strcpy(t[j+1].birth,t[j].birth); /*當(dāng)前記錄的出生年月拷貝到后一條*/

????? strcpy(t[j+1].units,t[j].units); /*當(dāng)前記錄的單位拷貝到后一條*/

????? strcpy(t[j+1].studylevel,t[j].studylevel); /*當(dāng)前記錄的出生年月拷貝到后一條*/

????? strcpy(t[j+1].officenumber,t[j].officenumber); /*當(dāng)前記錄的辦公電話拷貝到后一條*/

????? strcpy(t[j+1].homenumber,t[j].homenumber); /*當(dāng)前記錄的住宅電話拷貝到后一條*/

????? strcpy(t[j+1].homeaddress,t[j].homeaddress); /*當(dāng)前記錄的家庭地址拷貝到后一條*/

?? }

????? strcpy(t[j].name,temp.name); /*將新插入記錄的姓名拷貝到第i個位置*/

????? strcpy(t[j].sex,temp.sex); /*將新插入記錄的性別拷貝到第i個位置*/

????? strcpy(t[j].birth,temp.birth);/*將新插入記錄的出生年月拷貝到第i個位置*/

????? strcpy(t[j].units,temp.units); /*將新插入記錄的單位拷貝到第i個位置*/

????? strcpy(t[j].studylevel,temp.studylevel);/*將新插入記錄的學(xué)歷拷貝到第i個位置*/

????? strcpy(t[j].officenumber,temp.officenumber);/*將新插入記錄的辦公電話拷貝到第i個位置*/
????? strcpy(t[j].homenumber,temp.homenumber);/*將新插入記錄的住宅電話拷貝到第i個位置*/

????? strcpy(t->homeaddress,temp.homeaddress);/*將新插入記錄的家庭地址拷貝到第i個位置*/

????? n++; /*記錄數(shù)加*/

????? printf("記錄插入成功!\n");

?????? return n; /*返回記錄數(shù)*/

}

?

/*保存函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/

void save(ADDRESS t[],int n)

{

?? int i;

?? FILE *fp; /*指向文件的指針*/

?? if((fp=fopen("record.txt","wb"))==NULL) /*打開文件,并判斷打開是否正常*/

?? {

????? printf("文件不能打開!\n");/*沒打開*/

????? exit(1); /*退出*/

?? }

?? fprintf(fp,"%d",n); /*將記錄數(shù)寫入文件*/

?? fprintf(fp,"\r\n"); /*將換行符號寫入文件*/

?? for(i=0;i<n;i++)

?? {

????? fprintf(fp,"%-8s%4s%13s%8s%7s%12s%12s%8s",t[i].name,t[i].sex,t[i].birth,t[i].units,

????????? t[i].studylevel,t[i].officenumber,t[i].homenumber,t[i].homeaddress);/*格式寫入記錄*/

????? fprintf(fp,"\r\n"); /*將換行符號寫入文件*/

?? }

?? fclose(fp);/*關(guān)閉文件*/

}

?

/*讀入函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組*/

int load(ADDRESS t[])

{

?? int i,n;

?? FILE *fp; /*指向文件的指針*/

?? if((fp=fopen("record.txt","rb"))==NULL)/*打開文件*/

?? {

????? printf("對不起,不能打開文件!\n"); /*不能打開*/

????? exit(1); /*退出*/

?? }

?? fscanf(fp,"%d",&n); /*讀入記錄數(shù)*/

?? for(i=0;i<n;i++)

????? fscanf(fp,"%s%s%s%s%s%s%s%s",t[i].name,t[i].sex,t[i].birth,t[i].units,

????????? t[i].studylevel,t[i].officenumber,t[i].homenumber,t[i].homeaddress); /*按格式讀入記錄*/

?? fclose(fp); /*關(guān)閉文件*/

?? return n; /*返回記錄數(shù)*/

}

?

/*按序號顯示記錄函數(shù)*/

void display(ADDRESS t[])

{

?? int id,n=0;

?? FILE *fp; /*指向文件的指針*/

?? if((fp=fopen("record.txt","rb"))==NULL) /*打開文件*/

?? {

????? printf("對不起,不能打開文件!\n"); /*不能打開文件*/

????? exit(1); /*退出*/

?? }

?? printf("請輸入您要查找的序號...\n"); /*顯示信息*/

?? scanf("%d",&id); /*輸入序號*/

?? fscanf(fp,"%d",&n); /*從文件讀入記錄數(shù)*/

?? if((id>=0)&&(id<n)) /*判斷序號是否在記錄范圍內(nèi)*/

?? {

????? fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移動文件指針到該記錄位置*/

????? mprint(t[id]); /*調(diào)用輸出函數(shù)顯示該記錄*/

????? printf("\r\n");

?? }

?? else

????? printf("對不起,你要查詢的序號不存在!\n通訊錄內(nèi)共有%d 條記錄!\n ",id); /*如果序號不合理顯示信息*/

?? fclose(fp); /*關(guān)閉文件*/

}

?

/*按姓名排序函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/

void namesort(ADDRESS t[],int n)

{

?? int i,j,flag;

?? ADDRESS temp; /*臨時變量做交換數(shù)據(jù)用*/

?? for(i=0;i<n;i++)

?? {

????? flag=0; /*設(shè)標(biāo)志判斷是否發(fā)生過交換*/

????? for(j=0;j<n-1;j++)

????? if((strcmp(t[j].name,t[j+1].name))>0) /*比較大小*/

????? {

????? flag=1;

????? strcpy(temp.name,t[j].name); /*交換記錄*/

????? strcpy(temp.sex,t[j].sex);

????? strcpy(temp.birth,t[j].birth);

????? strcpy(temp.units,t[j].units);

????? strcpy(temp.studylevel,t[j].studylevel);

????? strcpy(temp.officenumber,t[j].officenumber);

????? strcpy(temp.homenumber,t[j].homenumber);

????? strcpy(temp.homeaddress,t[j].homeaddress);

????? strcpy(t[j].name,t[j+1].name);

????? strcpy(t[j].sex,t[j+1].sex);

????? strcpy(t[j].birth,t[j+1].birth);

????? strcpy(t[j].units,t[j+1].units);

????? strcpy(t[j].studylevel,t[j+1].studylevel);

????? strcpy(t[j].officenumber,t[j+1].officenumber);

????? strcpy(t[j].homenumber,t[j+1].homenumber);

????? strcpy(t[j].homeaddress,t[j+1].homeaddress);

????? strcpy(t[j+1].name,temp.name);

????? strcpy(t[j+1].sex,temp.sex);

????? strcpy(t[j+1].birth,temp.birth);

????? strcpy(t[j+1].units,temp.units);

????? strcpy(t[j+1].studylevel,temp.studylevel);

????? strcpy(t[j+1].officenumber,temp.officenumber);

????? strcpy(t[j+1].homenumber,temp.homenumber);

????? strcpy(t[j+1].homeaddress,temp.homeaddress);

????? }

????? if(flag==0)break; /*如果標(biāo)志為,說明沒有發(fā)生過交換循環(huán)結(jié)束*/

?? }

?? printf("按姓名排序成功!\n"); /*顯示排序成功*/

}

?

/*按工作單位排序函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/

void unitssort(ADDRESS t[],int n)

{

?? int i,j,flag;

?? ADDRESS temp; /*臨時變量做交換數(shù)據(jù)用*/

?? for(i=0;i<n;i++)

?? {

????? flag=0; /*設(shè)標(biāo)志判斷是否發(fā)生過交換*/

????? for(j=0;j<n-1;j++)

????? if((strcmp(t[j].units,t[j+1].units))>0) /*比較大小*/

????? {

????? flag=1;

????? strcpy(temp.name,t[j].name); /*交換記錄*/

????? strcpy(temp.sex,t[j].sex);

????? strcpy(temp.birth,t[j].birth);

????? strcpy(temp.units,t[j].units);

????? strcpy(temp.studylevel,t[j].studylevel);

????? strcpy(temp.officenumber,t[j].officenumber);

????? strcpy(temp.homenumber,t[j].homenumber);

????? strcpy(temp.homeaddress,t[j].homeaddress);

????? strcpy(t[j].name,t[j+1].name);

????? strcpy(t[j].sex,t[j+1].sex);

????? strcpy(t[j].birth,t[j+1].birth);

????? strcpy(t[j].units,t[j+1].units);

????? strcpy(t[j].studylevel,t[j+1].studylevel);

????? strcpy(t[j].officenumber,t[j+1].officenumber);

????? strcpy(t[j].homenumber,t[j+1].homenumber);

????? strcpy(t[j].homeaddress,t[j+1].homeaddress);

????? strcpy(t[j+1].name,temp.name);

????? strcpy(t[j+1].sex,temp.sex);

????? strcpy(t[j+1].birth,temp.birth);

????? strcpy(t[j+1].units,temp.units);

????? strcpy(t[j+1].studylevel,temp.studylevel);

????? strcpy(t[j+1].officenumber,temp.officenumber);

????? strcpy(t[j+1].homenumber,temp.homenumber);

????? strcpy(t[j+1].homeaddress,temp.homeaddress);

????? }

????? if(flag==0)break; /*如果標(biāo)志為,說明沒有發(fā)生過交換循環(huán)結(jié)束*/

?? }

?? printf("按工作單位排序成功!\n"); /*顯示排序成功*/

}

?

/*復(fù)制文件*/

void copy()

{

?? char outfile[20]; /*目標(biāo)文件名*/

?? int i,n;

?? ADDRESS t[100]; /*定義臨時變量*/

?? FILE *sfp,*tfp; /*定義指向文件的指針*/

?? if((sfp=fopen("record.txt","rb"))==NULL) /*打開記錄文件*/

?? {

????? printf("對不起,不能打開您所需要的文件!\n"); /*顯示不能打開文件信息*/

????? exit(1); /*退出*/

?? }

?? printf("請輸入目標(biāo)文件名,例如:c:\\f1\\te.txt:\n"); /*提示信息*/

?? scanf("%s",outfile); /*輸入目標(biāo)文件名*/

?? if((tfp=fopen(outfile,"wb"))==NULL) /*打開目標(biāo)文件*/

?? {

????? printf("對不起,不能打開您所需要的文件!\n"); /*顯示不能打開文件信息*/

????? exit(1); /*退出*/

?? }

?? fscanf(sfp,"%d",&n); /*讀出文件記錄數(shù)*/

?? fprintf(tfp,"%d",n);/*寫入目標(biāo)文件數(shù)*/

?? fprintf(tfp,"\r\n"); /*寫入換行符*/

?? for(i=0;i<n;i++)

?? {

????? fscanf(sfp,"%s%s%s%s%s%s%s%s",t[i].name,t[i].sex,t[i].birth,t[i].units,

???????? t[i].studylevel,t[i].officenumber,t[i].homenumber,t[i].homeaddress); /*讀入記錄*/

????? fprintf(tfp,"%-8s%4s%13s%8s%7s%12s%12s%8s",t[i].name,t[i].sex,t[i].birth,t[i].units,

????????? t[i].studylevel,t[i].officenumber,t[i].homenumber,t[i].homeaddress); /*寫入記錄*/

????? fprintf(tfp,"\r\n"); /*寫入換行符*/

?? }

?? fclose(sfp); /*關(guān)閉源文件*/

?? fclose(tfp); /*關(guān)閉目標(biāo)文件*/

}

?

/*按姓名查找記錄*/

void namesearch(ADDRESS t[],int n)

{

? char s[20]; /*保存待查找姓名字符串*/

? int i; /*保存查找到結(jié)點(diǎn)的序號*/

? printf("請輸入您要查找的姓名\n");

? scanf("%s",s); /*輸入待查找姓名*/

? for(i=0;i<n;i++)

? {

?????? if(strcmp(s,t[i].name)==0)

?????? {

?????? if(i==n)

???????? printf("對不起,沒有找到您所需要的記錄!\n");

????? else

?????????? mprint(t[i]); /*找到,調(diào)用顯示函數(shù)顯示記錄*/

?????? }

? }

}

?

/*按工作單位查找記錄*/

void unitssearch(ADDRESS t[],int n)

{

? char s[30]; /*保存待查找工作單位字符串*/

? int i; /*保存查找到結(jié)點(diǎn)的序號*/

? printf("請輸入您要查找的工作單位\n");

? scanf("%s",s); /*輸入待查找工作單位*/

? for(i=0;i<n;i++)

? {

?????? if(strcmp(s,t[i].units)==0)

?????? {

?????? if(i==n)

???????? printf("對不起,沒有找到您所需要的記錄!\n");

????? else

?????????? mprint(t[i]); /*找到,調(diào)用顯示函數(shù)顯示記錄*/

?????? }

? }

}

?

/*按辦公電話電話查找記錄*/

void officenumbersearch(ADDRESS t[],int n)

{

? char s[15]; /*保存待查找辦公電話字符串*/

? int i; /*保存查找到結(jié)點(diǎn)的序號*/

? printf("請輸入您要查找的辦公電話\n");

? scanf("%s",s); /*輸入待查找辦公電話*/

? i=officenumberfind(t,n,s);/* 調(diào)用officenumberfind函數(shù),得到一個整數(shù)*/

? if(i==n)

????? printf("對不起,沒有找到您需要的記錄!\n");

? else

????? mprint(t[i]); /*找到,調(diào)用顯示函數(shù)顯示記錄*/

}

?

/*按住宅電話電話查找記錄*/

void homenumbersearch(ADDRESS t[],int n)

{

? char s[15]; /*保存待查找住宅電話字符串*/

? int i; /*保存查找到結(jié)點(diǎn)的序號*/

? printf("請輸入您要查找的住宅電話\n");

? scanf("%s",s); /*輸入待查找住宅電話*/

? i=homenumberfind(t,n,s);/* 調(diào)用homenumberfind函數(shù),得到一個整數(shù)*/

if(i==n)

????? printf("對不起,沒有找到您需要的記錄!\n");

else

????? mprint(t[i]); /*找到,調(diào)用顯示函數(shù)顯示記錄*/

}

?

/*通訊錄信息瀏覽及排序功能*/

void showpaixu(ADDRESS adr[],int length)

{

??? int choice;

menu1:

?? system("cls");

?? printf("\n\n\n\n *************************通訊錄信息管理系統(tǒng)*************************\n\n");
?? printf(" 1. 全部顯示通訊錄信息\n\n");

?? printf(" 2. 按序號顯示通訊錄信息\n\n");

?? printf(" 3. 按姓名排序\n\n");

?? printf(" 4. 按工作單位排序\n\n");

?? printf(" 0. 返回上一級菜單\n\n");

?? printf(" ********************************************************************\n");
?? printf(" 請選擇(0~4)\n ");

?? scanf("%d",&choice);

?? switch(choice)

?? {

???? case 1: length=load(adr);

???????????? list(adr,length);

????????????? printf(" 請按任意鍵返回...\n");

??????????? getch();

??????????? break; /*顯示全部記錄*/

???? case 2: length=load(adr);

???????????? display(adr);

????????????? printf(" 請按任意鍵返回...\n");

??????????? getch();break; /*按序號顯示記錄*/

???? case 3: length=load(adr);

???????????? namesort(adr,length);

????????????? save(adr,length);

????????????? printf(" 請按任意鍵返回...\n");

??????????? getch();

????????????? break; /*按姓名排序*/

???? case 4: length=load(adr);

???????????? unitssort(adr,length);

???????????? save(adr,length);

????????????? printf(" 請按任意鍵返回...\n");

??????????? getch();

???????????? break; /*按工作單位排序*/

???? case 0: return;

?? }

?? goto menu1;

}

?

/*通訊錄信息查找功能*/

void chazhao(ADDRESS adr[],int length)

{

??? int choice;

menu2:

?? system("cls");

?? printf("\n\n\n\n *************************通訊錄信息管理系統(tǒng)*************************\n\n");
?? printf(" 1. 通過姓名查找\n\n");

?? printf(" 2. 通過工作單位查找\n\n");

?? printf(" 3. 通過辦公電話查找\n\n");

?? printf(" 4. 通過家庭電話查找\n\n");

?? printf(" 0. 返回上一級菜單\n\n");

?? printf(" ********************************************************************\n");
?? printf(" 請選擇(0~4)\n ");

?? scanf("%d",&choice);

?? switch(choice)

?? {

???? case 1: length=load(adr);

???????????? namesearch(adr,length);

????????????? printf(" 請按任意鍵返回...\n");

??????????? getch();

????????????? break; /*按姓名查找記錄*/

???? case 2: length=load(adr);

????????????? unitssearch(adr,length);

????????????? printf(" 請按任意鍵返回...\n");

??????????? getch();

???????????? break; /*按工作單位查找記錄*/

???? case 3: length=load(adr);

???????????? officenumbersearch(adr,length);

????????????? printf(" 請按任意鍵返回...\n");

??????????? getch();

????????????? break; /*按辦公電話查找記錄*/

???? case 4: length=load(adr);

???????????? homenumbersearch(adr,length);

????????????? printf(" 請按任意鍵返回...\n");

??????????? getch();

????????????? break; /*按住宅電話查找記錄*/

???? case 0: return;

?? }

?? goto menu2;

}

?

/*通訊錄信息變更功能*/

void biangeng(ADDRESS adr[],int length)

{

???? int choice;

menu3:

?? system("cls");

?? printf("\n\n\n\n *************************通訊錄信息管理系統(tǒng)*************************\n\n");

?? printf(" 1. 刪除記錄\n\n");

?? printf(" 2. 修改記錄\n\n");

?? printf(" 3. 添加記錄\n\n");

?? printf(" 0. 返回上一級菜單\n\n");

?? printf(" ********************************************************************\n");
?? printf(" 請選擇(0~3)\n ");

?? scanf("%d",&choice);

?? switch(choice)

?? {

???? case 1: length=load(adr);

???????????? length=delet(adr,length);

????????????? save(adr,length);

????????????? printf(" 請按任意鍵返回...\n");

??????????? getch();

????????????? break; /*刪除記錄*/

???? case 2: length=load(adr);

???????????? rewrite(adr,length);

????????????? save(adr,length);

????????????? printf(" 請按任意鍵返回...\n");

??????????? getch();

????????????? break; /*修改記錄*/

???? case 3: length=load(adr);

???????????? length=add(adr,length);

????????????? save(adr,length);

????????????? printf(" 請按任意鍵返回...\n");

??????????? getch();

????????????? break; /*插入記錄*/

???? case 0: return;

?? }

?? goto menu3;

}

?

/*通訊錄及文件操作功能*/

void wenjian(ADDRESS adr[],int length)

{

???? int choice;

menu4:

?? system("cls");

?? printf("\n\n\n\n *************************通訊錄信息管理系統(tǒng)*************************\n\n");
?? printf(" 1. 導(dǎo)入文件到通訊錄\n\n");

?? printf(" 2. 把當(dāng)前文件復(fù)制到新文件上\n\n");

?? printf(" 0. 返回上一級菜單\n\n");

?? printf(" ********************************************************************\n");

?? printf(" 請選擇(0~2)\n ");

?? scanf("%d",&choice);

?? switch(choice)

?? {

???? case 1: length=load(adr);

???????????? printf("您已經(jīng)成功的導(dǎo)入文件到通訊錄!\n");

??????????? printf(" 請按任意鍵返回...\n");

??????????? getch();break;

???? case 2: copy();

???????????? printf("復(fù)制成功!\n");

??????????? printf(" 請按任意鍵返回...\n");

??????????? getch();break;

???? case 0: return;

?? }

?? goto menu4;

}

?

/*關(guān)于*/

void about()

{

???? system("color 87");

???? system("cls");

???? printf("\n\n\n\n 《通訊錄信息管理系統(tǒng)》\n\n\n");

???? printf(" *****************************************\n\n\n");???

????

???? printf(" *****************************************\n\n\n");

???? printf(" 請按任意鍵返回主菜單...");

???? getch();

}

?

/******主函數(shù)開始*******/

int _tmain(int argc, _TCHAR* argv[])


{

??? int choice;

??? int length; /*保存記錄長度*/

??? ADDRESS adr[100]; /*定義結(jié)構(gòu)體數(shù)組*/

menu:

???? system("color f9");

???? system("cls");

????? printf("\n\n\n\n *************************通訊錄信息管理系統(tǒng)*************************\n\n");

????? printf(" 請選擇以下通訊錄管理功能:\n\n");

????? printf(" 1. 通訊錄信息輸入\n\n");

????? printf(" 2. 通訊錄信息瀏覽及排序\n\n");

????? printf(" 3. 通訊錄信息查詢\n\n");

????? printf(" 4. 通訊錄信息更改\n\n");

????? printf(" 5. 通訊錄及文件操作\n\n");

????? printf(" 6. 關(guān)于通訊錄信息管理系統(tǒng)\n\n");

????? printf(" 0. 退出通訊錄管理系統(tǒng)\n\n");

????? printf(" ********************************************************************\n");

????? printf(" 請選擇(0~6)\n ");

????? scanf("%d",&choice);

????? switch(choice)

????? {
????????
??????? case 0: exit(0); /*如返回值為則程序結(jié)束*/
??????? case 1: length=enter(adr);

??????????????? save(adr,length);

??????????????? printf("\n 請按任意鍵返回...\n");

?????????????? getch();break;/*輸入記錄*/

??????? case 2: showpaixu(adr,length);break;

??????? case 3: chazhao(adr,length);break;

??????? case 4: biangeng(adr,length);break;

??????? case 5: wenjian(adr,length);break;

??????? case 6: about();break;/*關(guān)于*/


????? }

????? goto menu;

}


// 功能:打印表格線
// 參數(shù):
// location 表格線的位置, 0 表頭線,1 表中線,2 表尾線
// colCount 表格的列數(shù)
// colWidth 表格的列寬
/
void PrintTableLine(int location, int colCount, int colWidth)
{
?//注意:這些是中文符號,所以要用3個字符裝(包括/0)
?char lineHead[][3] = {"┌", "├", "└"};
?char lineMid1[][3] = {"─", "─", "─"};
?char lineMid2[][3] = {"┬", "┼", "┴"};
?char lineTail[][3] = {"┐", "┤", "┘"};
?cout << lineHead[location]; //行首
?for (int i = 0; i < colCount; i++)
?{
??for (int j = 0; j < colWidth/2; j++)
??{
???cout << lineMid1[location];
??}
??if (i < colCount - 1) cout << lineMid2[location];
?}
?cout << lineTail[location] << endl; //行尾
}

/
// 功能:獲取指定二維數(shù)組中的最大顯示寬度
// 參數(shù):A 二維數(shù)組名,rowCount 行數(shù),colCount 列數(shù)
/
int GetMaxWidth(int* A, int rowCount, int colCount)
{
?int width = 0;
?for (int i = 0; i < rowCount; i++)
?{
??for (int j = 0; j < colCount; j++)
??{
???int c = 1;
???int temp = A[i*rowCount+j];
???while (temp)
???{
????temp /= 10;
????c++;
???}
???width = width < c ? c : width;
??}
?}
?return width;
}

///
// 功能:將二維數(shù)組打印成表格樣式
// 參數(shù):A 二維數(shù)組名,rowCount 行數(shù),colCount 列數(shù)
//
void PrintArray(int* A, int rowCount, int colCount)
{
?char tablines[] = {"┌┬┐├┼┤└┴┘─│"};
?int i, j, colWidth;

?//colWidth = GetMaxWidth(A, rowCount, colCount); //獲取所有數(shù)據(jù)中的最大寬度
?colWidth=20;
?//打印表頭線
?PrintTableLine(0, colCount, colWidth);

?//打印表格內(nèi)容
?for (i = 0; i < rowCount; i++)
?{
??if (i > 0) PrintTableLine(1, colCount, colWidth); //打印表中線
??cout << "│";?//行首
??for (j = 0; j < colCount; j++)
??{
???cout.width(colWidth);??//內(nèi)容按指定寬度輸出
???cout << A[i*rowCount+j];
???if (j < colCount - 1 ) cout << "│"; // 表中豎線
??}
??cout << "│" << endl;?//行尾
?}

?PrintTableLine(2, colCount, colWidth); //打印表尾
}

//void main()
//{
//?int A[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
//?PrintArray(&A[0][0], 3, 3);
//}

//int _tmain(int argc, _TCHAR* argv[])
//{
//?int A[][3] = {{111, 2, 3}, {43, 5, 6}, {7, 8, 9}};
//?PrintArray(&A[0][0],3, 3);
//?int c;
//?cin>>c;
//?return 0;
//}

?

總結(jié)

以上是生活随笔為你收集整理的c语言综合练习二的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。