導航:首頁 > 源碼編譯 > 通訊錄核心演算法思想

通訊錄核心演算法思想

發布時間:2022-07-09 10:25:59

⑴ 急高手相助!求數據結構演算法設計(C語言)通訊錄演算法一個!

http://download.pudn.com/downloads82/ebook/107215774TheCProgramLanguage.rar
通訊錄管理系統,具有數據插入、修改、顯示、查詢功能的電話簿管理程序
這還有很多,http://www.pudn.com/search_db.asp?keyword=%CD%A8%D1%B6%C2%BC+C%D3%EF%D1%D4&p=
那個不行的話發地址我給你下載。

⑵ 通訊錄拼音搜索模糊匹配的演算法問題

我用java寫了個簡單的,你可以多測試下:

publicstaticvoidmain(String[]args){

String[]name={"wang","hai","bao"};

String[]tests={"whb","WaHB","wangHB","HB","wh","whbo","whba"};

for(Stringstring:tests){
System.out.println(string+":"+match(name,string));
}

}

publicstaticbooleanmatch(String[]source,Stringinput){

if(source==null||source.length==0||input==null||input.length()==0){
returnfalse;
}

Stringtemp;

//統一轉小寫
input=input.toLowerCase();

for(inti=0;i<source.length;i++){

temp=source[i].toLowerCase();

if(temp==null||temp.length()==0){
returnfalse;
}

//最後一步特殊處理
if(i==source.length-1){
if(temp.startsWith(input)){
returntrue;
}
}

//輸入的字元完全匹配到
if(input.startsWith(temp)){
//匹配到後生成新的字元串
input=input.substring(0,input.indexOf(temp));
//System.out.println("temp:"+temp+" 匹配到後input:"+input);
}

//首字母匹配到
elseif(temp.startsWith(input.substring(0,1))){

input=input.substring(1);
//System.out.println("temp:"+temp+" 匹配到後input:"+input);
}else{
returnfalse;
}

//表示匹配結束
if(input.length()==0){
returntrue;
}

}

returnfalse;
}

⑶ 設計課題八:簡單的同學通訊錄程序設計

#include <cstdio>
#include <cstdlib>
#include <cstring>
int count=1;
struct node
{
char num[20];
char name[20];
char sex[20];
char work[50];
char phone[20];
char email[20];
};
node *stu;
int cmp(char *a,char *b)
{
int a1=strlen(a),b1=strlen(b),i;
if(a1>b1)
{
return 0;
}
else if(a1<b1)
{
return 1;
}
else
{
for(i=0;i<a1;i++)
{
if(a[i]>b[i])
{
return 0;
}
else if(a[i]<b[i])
{
return 1;
}
}
}

}
int start()
{
int n;
printf(" *********************WELCOME********************\n");
printf(" ******* (1).添加數據 *******\n");
printf(" ******* (2).刪除數據 *******\n");
printf(" ******* (3).修改數據 *******\n");
printf(" ******* (4).統計(男,女人數,總人數) *******\n");
printf(" ******* (5).查詢數據 *******\n");
printf(" ******* (6).打開文件 *******\n");
printf(" ******* (7).文件排序 *******\n");
printf(" ******* (8).退出程序 *******\n");
printf(" ************************************************\n");
printf("請輸入您的選擇:\n");
scanf("%d",&n);
return n;
}
int main()
{
int count1=0,count2=0;
int n,i,j,flag,o;
int k;
FILE *fp;
node r;
char file[20];
char nnum[20];
char nname[20];
char nsex[20];
char nwork[50];
char nphone[20];
char nemail[20];
while(1)
{
n = start();
switch(n)
{
case 1:
printf("(1).添加數據\n");
printf("請輸入添加的人的學號,姓名,性別,工作單位,電話號碼,E-mail地址:\n");
scanf("%s%s%s%s%s%s",nnum,nname,nsex,nwork,nphone,nemail);
printf("請輸入存儲的的文件名:\n");
scanf("%s",file);
printf("文件是否存在?(1,表存在 0,表不存在)\n");
scanf("%d",&k);
fp=fopen(file,"a+");
if(fp==NULL)
{
printf("文件創建失敗,請重新操作!\n");
break;
}
else
{
if(k==0)
{
if(count==1)
fprintf(fp,"%15s %10s %10s %15s %15s %20s\n","學號","姓名","性別","工作單位","電話號碼","E-mail地址");
count++;
}
fprintf(fp,"%15s %10s %10s %15s %15s %20s\n",nnum,nname,nsex,nwork,nphone,nemail);
}
fclose(fp);
system("cls");
break;
case 2:
printf("(2).刪除數據\n");
printf("請輸入文件名:\n");
scanf("%s",file);
printf("請輸入刪除人物的名字:\n");
scanf("%s",nname);
fp=fopen(file,"a+");
if(fp==NULL)
{
printf("文件讀取失敗,請重新操作!\n");
break;
}
else
{
stu=NULL;
for(i=0;!feof(fp);i++) //讀取文件
{
if(i==0)
stu=(node *)malloc(sizeof(node));
else
stu=(node *)realloc(stu,sizeof(node)*(i+1));
fscanf(fp,"%s %s %s %s %s %s",stu[i].num,stu[i].name,stu[i].sex,stu[i].work,stu[i].phone,stu[i].email);
}
fclose(fp);
flag=0;
fp=fopen(file,"w+");
for(j=0;j<i-1;j++)
{
if(strcmp(stu[j].name,nname)!=0)
{
fprintf(fp,"%15s %10s %10s %15s %15s %20s\n",stu[j].num,stu[j].name,stu[j].sex,stu[j].work,stu[j].phone,stu[j].email);
}
else
{
flag=1;
}
}
fclose(fp);
system("cls");
if(flag==0)
{
printf("文件名:%s\n",file);
printf("無此人!請重新操作!\n");break;
}
}
break;
case 3:
printf("(3).修改數據\n");
printf("請輸入文件名:\n");
scanf("%s",file);
printf("請輸入修改人物的信息:\n");
scanf("%s%s%s%s%s%s",nnum,nname,nsex,nwork,nphone,nemail);
fp=fopen(file,"a+");
stu=NULL;
for(i=0;!feof(fp);i++) //讀取文件
{
if(i==0)
stu=(node *)malloc(sizeof(node));
else
stu=(node *)realloc(stu,sizeof(node)*(i+1));
fscanf(fp,"%s %s %s %s %s %s",stu[i].num,stu[i].name,stu[i].sex,stu[i].work,stu[i].phone,stu[i].email);
}
fclose(fp);
flag=0;
fp=fopen(file,"w+");
for(j=0;j<i-1;j++)
{
if(strcmp(stu[j].name,nname)!=0)
{
fprintf(fp,"%15s %10s %10s %15s %15s %20s\n",stu[j].num,stu[j].name,stu[j].sex,stu[j].work,stu[j].phone,stu[j].email);
}
else
{
fprintf(fp,"%15s %10s %10s %15s %15s %20s\n",nnum,nname,nsex,nwork,nphone,nemail);
flag=1;
}
}
fclose(fp);
system("cls");
if(flag==0)
{
printf("文件名:%s\n",file);
printf("無此人!請重新操作!\n");break;
}

break;
case 4:
printf("(4).統計(男,女人數,總人數)\n");
printf("請輸入文件名:\n");
scanf("%s",file);
fp=fopen(file,"a+");
stu=NULL;
for(i=0;!feof(fp);i++) //讀取文件
{
if(i==0)
stu=(node *)malloc(sizeof(node));
else
stu=(node *)realloc(stu,sizeof(node)*(i+1));
fscanf(fp,"%s %s %s %s %s %s",stu[i].num,stu[i].name,stu[i].sex,stu[i].work,stu[i].phone,stu[i].email);
}
fclose(fp);
system("cls");
count1=0,count2=0;
for(j=0;j<i-1;j++)
{
if(strcmp(stu[j].sex,"男")==0)
{
count1++;
}
else if(strcmp(stu[j].sex,"女")==0)
{
count2++;
}
}
printf("文件名:%s\n",file);
printf("男生數:%d\n",count1);
printf("女生數:%d\n",count2);
printf("總人數:%d\n",count1+count2);
break;
case 5:
printf("(5).查詢數據\n");
printf("請輸入文件名:\n");
scanf("%s",file);
printf("請輸入查詢人的名字:\n");
scanf("%s",nname);
fp=fopen(file,"a+");
stu=NULL;
for(i=0;!feof(fp);i++) //讀取文件
{
if(i==0)
stu=(node *)malloc(sizeof(node));
else
stu=(node *)realloc(stu,sizeof(node)*(i+1));
fscanf(fp,"%s %s %s %s %s %s",stu[i].num,stu[i].name,stu[i].sex,stu[i].work,stu[i].phone,stu[i].email);
}
fclose(fp);
system("cls");
flag=0;
for(j=0;j<i-1;j++)
{
if(strcmp(stu[j].name,nname)==0)
{
printf("文件名:%s\n",file);
printf("%s %s %s %s %s %s\n",stu[j].num,stu[j].name,stu[j].sex,stu[j].work,stu[j].phone,stu[j].email);
flag=1;
break;
}
}
if(flag==0)
{
printf("文件名:%s\n",file);
printf("無此人!請重新操作!\n");break;
}
break;

⑷ C++簡單通訊錄的設計與實現

去網路文庫找經典C程序吧,然後自己改改!

⑸ 抖音的演算法思維是什麼

1、抖音推薦演算法第一要看發作品受歡迎的程度,簡單說就是:點贊數評論數轉發數完播率,也就 是說,新視頻的完播率高,互動率高,這個視頻才有機會持續加持流量;第二看 抖音賬號權重大小,抖音賬戶權重基本演算法=在抖音爸爸這里的位置。抖音推薦上熱門的基礎邏輯:基礎流量、推薦疊加、時間效應。
2、抖音搜索演算法搜索流量的秘密,用戶搜索——瀏覽視頻——漲粉變現, 而且抖音搜索演算法還有以下三個特點:精準、持續性強、被動享受。 通過關鍵詞字面意思,我們就可以知道,用戶搜 索這個關鍵詞的目的是什麼。如果你是與關鍵詞相關的內容,那搜索這個關鍵詞的用戶對你來說就是非常精準的潛在客戶。如果你的視頻標題和視頻內容吸引了他的注意,點擊你的視頻,並且被你的視頻所吸引, 進而就會進入你的賬號主頁,然後找到你的聯系方式,最後成交。因此你要知道如何去布局抖音關鍵詞,你布局的 關鍵詞越多,精準性越高,關鍵詞排名越好,你的流量也就越大。

⑹ C語言程序設計:通訊錄程序設計

#include "stdlib.h"
#include "string.h"
#include "conio.h"
#include "stdio.h"
#include "dos.h"
FILE *fp;
int i; //i是全局變數 可代替length
struct address
{ char postnum[10];
char a[40]; //家庭地址
};
struct birthday
{ int year;
int month;
int day;
};
struct ffriend
{ int num; //序號
char name[20];
char sex;
char telephone[13];
struct birthday birthday;
struct address address;

}
friends[50];

void Load()
{
int j;
long k;
fp=fopen("friend.txt","a+"); //打開文件friend.txt
if(fp!=NULL)
{
for(i=1;i<50;i++)

{
j=fgetc(fp);
if(j==EOF) //判斷是否到了文件尾
return;
k=i-1;
fseek(fp,k*sizeof(struct ffriend),SEEK_SET);
fread(&friends[i],sizeof(struct ffriend),1,fp); //從文件中讀取一條記錄
}

}
else
{
fp=fopen("friend.txt","w");
i=1;
}

}
void Show(int j)
{
// friends[j].num=i;
printf("\n\n\t編號-Nnumber: %3d",friends[j].num);
printf("\n\t姓名-Name:%-20s",friends[j].name);
printf("\n\t性別-Sex:%c",friends[j].sex);
printf("\n\t聯系電話-Telephone:%-13s",friends[j].telephone);
printf("\n\t出生日期-Birthday:%4d-%2d-%3d",friends[j].birthday.year,friends[j].birthday.month,friends[j].birthday.day);
printf("\n\t郵編-Postnum:%-10s",friends[j].address.postnum);
printf("\n\t通信地址-address:%-40s",friends[j].address.a);
}
void Append(int j)
{
fflush(stdin); //區內清除文件緩沖區,文件以寫方式打開時將緩沖容寫入文件
//stdin是一個標准FILE*(文件型指針)指向通常是用鍵盤的輸入的輸入流
friends[j].num=j;
printf("\n\t\t\t序號-Number:%d",j);
printf("\n\t\t\t姓名-Name:");
scanf("%s",friends[j].name);
fflush(stdin); //為什麼沒有fflush(stdin); 的效果會自動跳過呢?
printf("\t\t\t性別-Sex(m/w):"); //為什麼輸入漢字男女也會自動跳過聯系電話呢
scanf("%c",&friends[j].sex);
printf("\t\t\t聯系電話-telephone:");
scanf("%s",friends[j].telephone);
printf("\t出生日期-birthday");
printf("\n\t\t\t年份-year:");
scanf("%d",&friends[j].birthday.year);
printf("\t\t\t月份-month:");
scanf("%d",&friends[j].birthday.month);
printf("\t\t\t日-day:");
scanf("%d",&friends[j].birthday.day);
printf("\t\t\t郵編-Postnumber:");
scanf("%s",friends[j].address.postnum);
printf("\t\t\t通信地址-Address:");
scanf("%s",friends[j].address.a);
getchar();
}
void Delete()
{
int k;
printf("\n\tDelete 序號-Number:");
scanf("%d",&k);
if(k<=i)
{
for(int j=k;j<i+1;j++) /*插入位置後的元素順序後移*/
{
strcpy(friends[j].name,friends[j+1].name); /*交換元素內容*/
friends[j].sex=friends[j+1].sex;
strcpy(friends[j].telephone,friends[j+1].telephone);
friends[j].birthday.year=friends[j+1].birthday.year;
friends[j].birthday.month=friends[j+1].birthday.month;
friends[j].birthday.day=friends[j+1].birthday.day;
strcpy(friends[j].address.postnum,friends[j+1].address.postnum);
strcpy(friends[j].address.a,friends[j+1].address.a);

}
i--;
}
else
{
printf("輸入的序號太大!");
}
}
void Modify(int j)
{
Append(j);
}
void Save()
{
int j;
fp=fopen("friend.txt","w");
for(j=1;j<=i;j++)
{
fwrite(&friends[j],sizeof(struct ffriend),1,fp);
}
fclose(fp);

}

void main()
{
int j;
char grade;
char searchname[10];
Load();
i--;
do
{
printf("\t\t\t\t簡易通訊錄\n\n");
printf("功能選擇(Function choose)\n");
printf("\1A.讀取(Read)\n");
printf("\2B.增添(Append)\n");
printf("\6C.插入(Insert)\n");
printf("\5D.刪除(Delete)\n");
printf("\5E.查詢(Search)\n");
printf("\6F.修改(Modify)\n");
printf("\2G.保存(Save)\n");
printf("\1H.退出(Quit)\n");
printf("請選擇(Choice)\n注:輸入A~H的大寫字母\n");
scanf("%c",&grade);
switch(grade)
//加個大寫和小寫 都可以啊
{
case 'A': j=1; //顯示功能
while(getchar()!=0x1b&&j<=i) //增添按Esc鍵退出
{
Show(j++);
printf("\n請按回車鍵繼續!");
}
if(j-1<1)
{
printf("\n\t空文檔,無任何記錄-Empty Note\n");
printf("\n請按回車鍵繼續!");
getchar();

}
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'B': //增加功能
while(i<=50) //增加按ESC鍵退出的功能
{
i++;
Append(i);
printf("\t是否繼續增加?y/n");
//修改 加上else if 其他就跳出或強制列印出出錯
char a=getchar();
if(a=='n'||a=='N')
break;
}
if(i==51)
printf("\n\t文檔已滿,無法增加記錄-note full");
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
getchar();
break;
case 'C':
int k;
printf("\n\t輸入要插入的位置:");
scanf("%d",&k);
j=i+1;
friends[j].num=j;
for(j;j>k;j--) //插入功能
{
strcpy(friends[j].name,friends[j-1].name); //數據後移
friends[j].sex=friends[j-1].sex;
strcpy(friends[j].telephone,friends[j-1].telephone);
friends[j].birthday.year=friends[j-1].birthday.year;
friends[j].birthday.month=friends[j-1].birthday.month;
friends[j].birthday.day=friends[j-1].birthday.day;
strcpy(friends[j].address.postnum,friends[j-1].address.postnum);
strcpy(friends[j].address.a,friends[j-1].address.a);

}
Append(k);
i++;
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'D': //刪除功能 //增添隨意刪除多條記錄的功能
Delete();
if(i<1)
printf("\n沒有記錄-No records\n");
printf("\n請按回車鍵繼續!");
getchar();
getchar();
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'E': //查詢功能
printf("\n\t請輸入要查詢記錄的相關姓名:"); //增添查詢按列號的
scanf("%s",searchname);
for(j=1;j<=i;j++)
{
if(strcmp(searchname,friends[j].name)==0) //比較字元串
{
Show(j);
break;
}
}
if(i<1)
{
printf("\n 沒有您所查詢的記錄-No records");
printf("\n 請按回車鍵繼續!");
getchar();
}
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
getchar();
break;
case 'F': //修改功能 / /增添按序列號查詢
printf("\n\t請輸入要修改記錄的相關姓名:");
gets(searchname);
scanf("%s",searchname);
for(j=1;j<=i;j++)
{
if(strcmp(searchname,friends[j].name)==0) //比較字元串
{
Modify(j);
// getchar(); //加個輸出確定修改嗎
}
}
if(i<1) //修改功能
{ printf("\n 沒有您所要修改的記錄-No records");
printf("\n 請按回車鍵繼續!");
getchar();
getchar();
}
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'G':
Save(); //存檔功能
getchar();
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;

case 'H': //退出功能
char x;
printf("是否保存?yes/no\n");
scanf("%s",&x);
//getchar();
// getchar();
if(x=='y')
{
Save();
exit(0);
}
else
exit(0);

default:
printf("\n\t輸入有誤,請輸入正確的序列號!");
printf("\n請按回車鍵繼續!");
getchar();
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
}
}while(1);
}

⑺ 通訊錄管理系統

我這里有一個,你看看吧,滿意的給分哦(在visual c++6.0上運行)
#include<stdlib.h>
#include<string.h> /*使用字元串函數*/
#include<conio.h> /*使用通過控制台進行數據輸入和數據輸出的函數*/
#include<stdio.h>
#include<dos.h> /*使用DOS函數*/

int i; /*定義一個全局變數i*/

struct addr /*定義通訊地址結構體*/
{ char post_num[10]; /*郵編*/
char addr[60]; /*家庭地址*/
};

struct birth /*定義出生年月結構體*/
{ int year; /*年份*/
int month; /*月份*/
int day; /*日期*/
};

struct record1 /*定義電子通訊錄結構體*/
{ int number; /*序號*/
char name[20]; /*姓名*/
char sex; /*性別*/
struct birth birth; /*出生年月*/
struct addr addr; /*通信地址*/
char telephone[13]; /*聯系電話*/
}records[50];

FILE *fp; /*定義指向file類型結構體的指針變數*/

void Data_Load() /*定義載入數據函數*/
{ int j;
long k;
fp=fopen("record.txt","r+t"); /*打開文件record.txt,進行讀寫*/
if(fp!=NULL) /*如果文件不為空*/
{ for(i=1;i<50;i++)
{ j=fgetc(fp); /*從"records.txt"文件讀入整型數字*/
if(j==EOF) /*判斷是否到了文件尾*/
return; /*如果到了結尾,返回*/
k=i-1;
fseek(fp,k*sizeof(struct record1),SEEK_SET); /*將位置指針移到record1結構體所含位元組

的第k倍個位元組處*/

fread(&records[i],sizeof(struct record1),1,fp); /*讀取一條記錄*/
}
}
else
{ fp=fopen("record.txt","w"); /*打開文件record.txt,只寫*/
i=1;
}
}

void Data_Show(int j) /*定義顯示數據函數*/
{
printf("\n\n\tNo:%3d\n",records[j].number); /*序號*/
printf("\n\tname:%2s\n",records[j].name); /*姓名*/
printf("\n\tbirthday (y/m/d):%4d%2d%2d", records[j].birth.year, records[j].birth.month,

records[j].birth.day); /*列印第j個成員的出生年月日*/
printf("\n\tpost code:%-10s",records[j].addr.post_num); /*郵編*/
printf("\n\taddress:%-40s",records[j].addr.addr); /*家庭地址*/
printf("\n\tphone%-13s",records[j].telephone); /*聯系電話*/
}

void Data_Input(int j) /*定義添加數據函數*/
{
fflush(stdin); /*清空輸入緩沖區*/
records[j].number=j;
printf("\n\n\n\tinputNo %d ",j);
printf("\n\tname:"); /*輸入姓名*/
scanf("%s",records[j].name);
fflush(stdin); /*清空輸入緩沖區*/
printf("\tsex(m/f):"); /*輸入性別*/
scanf("%c",&records[j].sex);
printf("\t---birthday---"); /*輸入出生年月*/
printf("\n\tyear:");
scanf("%d",&records[j].birth.year);
printf("\tmonth:");
scanf("%d",&records[j].birth.month);
printf("\tday:");
scanf("%d",&records[j].birth.day);
printf("\tpost code:"); /*輸入郵編*/
scanf("%s",records[j].addr.post_num);
printf("\taddress:"); /*輸入家庭地址*/
scanf("%s",records[j].addr.addr);
printf("\tphone:"); /*輸入聯系電話*/
scanf("%s",records[j].telephone);

}

void Data_Save() /*定義保存函數*/
{
int j;
fp=fopen("record.txt","w"); /*打開文件record.txt,只寫*/
for(j=1;j<=i;j++)
{ fwrite(&records[j],sizeof(struct record1),1,fp); /*將結構體變數records的確定個數位元組輸

入到record.txt文件中,個數為結構體friend1所含位元組數*/
}
}

void main() /*主函數*/
{
int j,k;
char ch;
char search_name[40]; /*定義字元串變數*/

Data_Load(); /*聲明載入數據函數*/
i--;
do
{ printf("********************************* MENU ***************************************\n");
printf("------------------------! WELLCOME TO THE SYSTEM !------------------------------");
printf("\n*\tSelect Function: *");
printf("*\t1.Add New *");
printf("*\t2.View the data *");
printf("*\t3.Delete *");
printf("*\t4.Search *");
printf("*\t5.Insert *");
printf("*\t6.Save and quit *");
printf("*\t7.Quit *");
printf("\n******************************** MENU ****************************************\n");
printf("\tPlease choose the option you need:");
ch=getche(); /*輸入字元*/
switch(ch)
{
case '1':
{ int p;
printf("\n\tPlease input the number of people you want to add:");
scanf("%d",&p);/*增加記錄*/
printf("\tPlease press ENTER again");
while(getch()!=0x1b&&i<p)
{ i++;
Data_Input(i);
printf("Please press Enter again to continue\n");
}
if(i==p)printf("\n\tThe data is full\n");
} /*記錄完後顯示通訊錄已滿*/
break;

case '2': j=1; /*列印所有記錄*/
while(getch()!=0x1b&&j<=i) Data_Show(j++); /*聲明列印數據函數*/
if(j>i) printf("\n\tThe system is end\n"); /*顯示記錄末尾*/
break;

case '3': /*刪除通訊錄中的記錄*/
if(i<1)
{ printf("\n\tno record\n"); /*顯示無記錄*/
break;
}
printf("\n\tplease input the number you want to delect:");
scanf("%d",&k);
printf("\tsucceed!\n");
for(j=k;j<i;j++) /*將刪除位置後的元素順序前移,即後一數據復制到前一位置,循環操作*/
{ strcpy(records[j].name,records[j+1].name);
records[j].sex=records[j+1].sex;
records[j].birth.year=records[j+1].birth.year;
records[j].birth.month=records[j+1].birth.month;
records[j].birth.day=records[j+1].birth.day;
strcpy(records[j].addr.post_num,records[j+1].addr.post_num);
strcpy(records[j].addr.addr,records[j+1].addr.addr);
strcpy(records[j].telephone,records[j+1].telephone);
}
i--; /*元素總數減1*/
break;
case '4': /*通訊錄搜索功能*/
printf("\n\tPlease input the name:"); /*輸入名字*/
scanf("%s", search_name); /*獲得名字到指針型字元串變數*/
for(j=1;j<=i;j++)
{
if(strcmp(search_name,records[j].name)==0) /*比較字元串,即查看是否與記錄中名字

相同*/
{ Data_Show(j);
printf("\n"); /*搜索成功,列印記錄結束循環*/
break;
}
}
if(j>i) /*搜索失敗*/
printf("\n\tNo Record "); /*顯示無此記錄*/
break;
case '5':
printf("\n\tInsert No:"); /*錄入插入位置*/
scanf("%d",&k);
for(j=k+1;j<i;j++) /*將插入位置後的元素順序後移,即將其復制到後一位置,循環操作*/
{ strcpy(records[j].name,records[j-1].name);
records[j].sex=records[j-1].sex;
records[j].birth.year=records[j-1].birth.year;
records[j].birth.month=records[j-1].birth.month;
records[j].birth.day=records[j-1].birth.day;
strcpy(records[j].addr.post_num,records[j-1].addr.post_num);
strcpy(records[j].addr.addr,records[j-1].addr.addr);
strcpy(records[j].telephone,records[j-1].telephone);
}
Data_Input(k); /*聲明增加數據函數*/
i++;/*將記錄數目加一*/
break;
case '6': Data_Save();
printf("\n"); /*聲明保存函數*/
exit(0); break; /*保存後退出*/
case '7': printf("\n\tsave or not?:(y/n)");
ch=getch(); /*獲得輸入字元*/
if(ch=='y') Data_Save();
fclose(fp); /*關閉record.txt文件*/
exit(0); /*退出程序*/
default: printf("Please choose1-4\n"); /*輸入的如果不是數字1-4,讓其重新輸入*/
}
}
while(1); /*每次都從第一個功能開始,循環操作*/
}
請採納答案,支持我一下。

⑻ 要求:為某個單位建立一個員工通訊錄管理系統,可以方便地查詢每一個員工的辦公室電話號碼、手機號碼及電

(1)∵由題意知甲獲得實習機會需要筆試和面試得分之和至少為25分,包括兩種情況:一是筆試和面試得分之和為25分;二是筆試和面試得分之和為30分,這兩種情況是互斥的筆試和面試得分之和為25分的概率為p1=C23×(34)2×14×C33×(12)3+C33×(34)3×C23×(12)2×12=27128,筆試和面試得分之和為30分的概率為p1=C33×(34)3×C33×(12)3=27512,∴甲獲得實習機會的概率為p=p1+p2=27128+27512=135512.(2)ξ的取值為0,5,10,15,20,25,30.p(ξ=0)=C33×(14)3=164,p(ξ=5)=C13×34×(14)2=964,p(ξ=10)=C23×(34)2×14×C03×(12)3=27512,p(ξ=15)=C23×(34)2×14×C13×(12)3+C33×(34)3×C03×(12)3=108512,p(ξ=20)=C23×(34)2×14×C23×(12)3+C33×(34)3×C13×(12)3=162512,由(1)知p(ξ=25)=108512,p(ξ=30)=27512.∴Eξ=0×164+5×964+10×27512+15×108512+20×162512+25×108512+30×27512=112564

⑼ 20. 通訊錄的製作 數據結構題目 用c或類c語言編寫 並寫出每句含義 謝啦!!!!

#include<stdio.h>#include<stdlib.h>#include<string.h>#define SIZE_NAME 10#define SIZE_ID 20#define SIZE_PHONE 20int Record = 0;

typedef struct {
char name[SIZE_NAME];
char id[SIZE_ID];
char phone[SIZE_PHONE];
}pInfo;

typedef struct node{
pInfo people;
struct node *next;
}linkList;int menu();int create(linkList *head);int display(linkList *head);int search(linkList *head, char *info);int modify(linkList *head, char *pid);int add2(linkList *head, char *pid);int delt(linkList *head, char *info);int compare(char *str1, char *str2);int sort_id(linkList *head, int boolean);//1升序 0降序
int sort_name(linkList *head, int boolean);//1升序 0降序int main()
{
linkList head, *p;
char info[SIZE_ID]; int temp, chus, i;
head.next = NULL; while (1) {
switch (menu()) {
case 1:
create(&head); break;
case 2:
display(&head); break;
case 3: printf("請輸入需要查詢的學號或姓名: ");
scanf("%s", info);
p = &head;
p = p->next; for (i = 0; i < search(&head, info); i++) {
p = p->next;
} printf("搜索到: "); printf(" 聯系人 "); printf("-------------------------------------------------------------------------------- "); printf(" 學號 姓名 電話 "); printf("-------------------------------------------------------------------------------- "); printf("%20s ", p->people.id); printf("%10s ", p->people.name); printf("%20s ", p->people.phone);
search(&head, info); break;
case 4: printf("請輸入需要修改的學號: ");
scanf("%s", info);
modify(&head, info); break;
case 5: printf("請輸入需要添加的學號: ");
scanf("%s", info);
add2(&head, info); break;
case 6: printf("請輸入需要刪除的學號或姓名: ");
scanf("%s", info);
delt(&head, info); break;
case 7: printf("請選擇排序方式: 1.按學號排序 2.按姓名排序 ");
scanf("%d", &chus);
switch (chus) {
case 1: printf("請輸入1或0: 1:升序 0:降序 ");
scanf("%d", &temp);
sort_id(&head, temp); break;
case 2: printf("請輸入1或0: 1:升序 0:降序 ");
scanf("%d", &temp);
sort_name(&head, temp); break;
} break;
case 8: exit(0); break;
default: printf("輸錯了,再來一次 ");
} system("pause"); system("cls");
} system("pause"); return 0;
}int menu()
{ int chus; printf(" 通訊錄 "); printf("請輸入(1 -- 8): "); printf(" 1.創建通訊錄 "); printf(" 2.顯示通訊錄 "); printf(" 3.查詢通訊錄 "); printf(" 4.修改通訊錄 "); printf(" 5.添加通訊錄 "); printf(" 6.刪除通訊錄 "); printf(" 7.排序通訊錄 "); printf(" 8.退出 ");
scanf("%d", &chus); return chus;
}int create(linkList *head)
{
linkList *s, *p;
p = head; printf("請輸入學號 姓名 電話,輸入end結束 "); while (1) { s = (linkList*)malloc(sizeof(linkList));
scanf("%s", s->people.id); if (!strcmp(s->people.id,"end")){ return 0;
}
scanf("%s", s->people.name);
scanf("%s", s->people.phone); s->next = p->next;
p->next = s;
p = s;
Record++;
} return 0;
}int display(linkList *head)
{ int i;
linkList *p;
p = head;
p = p->next; printf(" 聯系人 "); printf("-------------------------------------------------------------------------------- "); printf(" 學號 姓名 電話 "); printf("-------------------------------------------------------------------------------- "); for (i = 0; i < Record; i++, p = p->next) { printf("%20s ", p->people.id); printf("%10s ", p->people.name); printf("%20s ", p->people.phone);
} return 0;
}int search(linkList *head, char *info)
{ int i;
linkList *p;
p = head;
p = p->next; for (i = 0; i < Record; i++, p = p->next) { if ((!strcmp(p->people.id, info)) || (!strcmp(info,p->people.name))){ return i;
}
} return -1;
}int modify(linkList *head, char *pid)
{ int i;
linkList *p;
p = head;
p = p->next; for (i = 0; i < search(head, pid); i++) {
p = p->next;
} printf("請輸入新信息: ");
scanf("%s", p->people.id);
scanf("%s", p->people.name);
scanf("%s", p->people.phone); return 0;
}int add2(linkList *head, char *pid)
{ int i;
linkList *p, *s;
p = head;
p = p->next; s = (linkList*)malloc(sizeof(linkList)); while( p->next!= NULL){
p = p->next;
} printf("請輸入需要添加的姓名和電話: ");
strcpy(s->people.id, pid);
scanf("%s", s->people.name);
scanf("%s", s->people.phone); if (search(head, s->people.id) == -1) { s->next = p->next;
p->next = s;
Record++;
} else { printf("學號重復了 ");
} return 0;
}int delt(linkList *head, char *info)
{ int i, n;
linkList *p, *s;
p = head;
n = search(head, info); if (-1 == n) { printf("沒有找到 "); return 0;
} for (i = 0; i < n; i++) {
p = p->next;
}
p->next = p->next->next;
Record--; return 0;
}int compare(char *str1, char *str2)
{ int i; for (i = 0; i < strlen(str1); i++) { if (str1[i] < str2[i]) { return 1;
}
} return 0;
}int sort_id(linkList *head, int boolean)
{
linkList *p, *pre;
pInfo temp; if (boolean) { for (p = head->next; p != NULL; p = p->next) { for (pre = p->next; pre != NULL; pre = pre->next) { if (0 == compare(p->people.id, pre->people.id)) {
temp = p->people;
p->people = pre->people;
pre->people = temp;
}
}
}
} else { for (p = head->next; p != NULL; p = p->next) { for (pre = p->next; pre != NULL; pre = pre->next) { if (1 == compare(p->people.id, pre->people.id)) {
temp = p->people;
p->people = pre->people;
pre->people = temp;
}
}
}
} return 0;
}int sort_name(linkList *head, int boolean)
{
linkList *p, *pre;
pInfo temp; if (boolean) { for (p = head->next; p != NULL; p = p->next) { for (pre = p->next; pre != NULL; pre = pre->next) { if (0 == compare(p->people.name, pre->people.name)) {
temp = p->people;
p->people = pre->people;
pre->people = temp;
}
}
}
} else { for (p = head->next; p != NULL; p = p->next) { for (pre = p->next; pre != NULL; pre = pre->next) { if (1 == compare(p->people.name, pre->people.name)) {
temp = p->people;
p->people = pre->people;
pre->people = temp;
}
}
}
} return 0;
}#include<stdio.h>#include<stdlib.h>#include<string.h>#define SIZE_NAME 10#define SIZE_ID 20#define SIZE_PHONE 20int Record = 0;

typedef struct {
char name[SIZE_NAME];
char id[SIZE_ID];
char phone[SIZE_PHONE];
}pInfo;

typedef struct node{
pInfo people;
struct node *next;
}linkList;int menu();int create(linkList *head);int display(linkList *head);int search(linkList *head, char *info);int modify(linkList *head, char *pid);int add2(linkList *head, char *pid);int delt(linkList *head, char *info);int compare(char *str1, char *str2);int sort_id(linkList *head, int boolean);//1升序 0降序
int sort_name(linkList *head, int boolean);//1升序 0降序int main()
{
linkList head, *p;
char info[SIZE_ID]; int temp, chus, i;
head.next = NULL; while (1) {
switch (menu()) {
case 1:
create(&head); break;
case 2:
display(&head); break;
case 3: printf("請輸入需要查詢的學號或姓名: ");
scanf("%s", info);
p = &head;
p = p->next; for (i = 0; i < search(&head, info); i++) {
p = p->next;
} printf("搜索到: "); printf(" 聯系人 "); printf("-------------------------------------------------------------------------------- "); printf(" 學號 姓名 電話 "); printf("-------------------------------------------------------------------------------- "); printf("%20s ", p->people.id); printf("%10s ", p->people.name); printf("%20s ", p->people.phone);
search(&head, info); break;
case 4: printf("請輸入需要修改的學號: ");
scanf("%s", info);
modify(&head, info); break;
case 5: printf("請輸入需要添加的學號: ");
scanf("%s", info);
add2(&head, info); break;
case 6: printf("請輸入需要刪除的學號或姓名: ");
scanf("%s", info);
delt(&head, info); break;
case 7: printf("請選擇排序方式: 1.按學號排序 2.按姓名排序 ");
scanf("%d", &chus);
switch (chus) {
case 1: printf("請輸入1或0: 1:升序 0:降序 ");
scanf("%d", &temp);
sort_id(&head, temp); break;
case 2: printf("請輸入1或0: 1:升序 0:降序 ");
scanf("%d", &temp);
sort_name(&head, temp); break;
} break;
case 8: exit(0); break;
default: printf("輸錯了,再來一次 ");
} system("pause"); system("cls");
} system("pause"); return 0;
}int menu()
{ int chus; printf(" 通訊錄 "); printf("請輸入(1 -- 8): "); printf(" 1.創建通訊錄 "); printf(" 2.顯示通訊錄 "); printf(" 3.查詢通訊錄 "); printf(" 4.修改通訊錄 "); printf(" 5.添加通訊錄 "); printf(" 6.刪除通訊錄 "); printf(" 7.排序通訊錄 "); printf(" 8.退出 ");
scanf("%d", &chus); return chus;
}int create(linkList *head)
{
linkList *s, *p;
p = head; printf("請輸入學號 姓名 電話,輸入end結束 "); while (1) { s = (linkList*)malloc(sizeof(linkList));
scanf("%s", s->people.id); if (!strcmp(s->people.id,"end")){ return 0;
}
scanf("%s", s->people.name);
scanf("%s", s->people.phone); s->next = p->next;
p->next = s;
p = s;
Record++;
} return 0;
}int display(linkList *head)
{ int i;
linkList *p;
p = head;
p = p->next; printf(" 聯系人 "); printf("-------------------------------------------------------------------------------- "); printf(" 學號 姓名 電話 "); printf("-------------------------------------------------------------------------------- "); for (i = 0; i < Record; i++, p = p->next) { printf("%20s ", p->people.id); printf("%10s ", p->people.name); printf("%20s ", p->people.phone);
} return 0;
}int search(linkList *head, char *info)
{ int i;
linkList *p;
p = head;
p = p->next; for (i = 0; i < Record; i++, p = p->next) { if ((!strcmp(p->people.id, info)) || (!strcmp(info,p->people.name))){ return i;
}
} return -1;
}int modify(linkList *head, char *pid)
{ int i;
linkList *p;
p = head;
p = p->next; for (i = 0; i < search(head, pid); i++) {
p = p->next;
} printf("請輸入新信息: ");
scanf("%s", p->people.id);
scanf("%s", p->people.name);
scanf("%s", p->people.phone); return 0;
}int add2(linkList *head, char *pid)
{ int i;
linkList *p, *s;
p = head;
p = p->next; s = (linkList*)malloc(sizeof(linkList)); while( p->next!= NULL){
p = p->next;
} printf("請輸入需要添加的姓名和電話: ");
strcpy(s->people.id, pid);
scanf("%s", s->people.name);
scanf("%s", s->people.phone); if (search(head, s->people.id) == -1) { s->next = p->next;
p->next = s;
Record++;
} else { printf("學號重復了 ");
} return 0;
}int delt(linkList *head, char *info)
{ int i, n;
linkList *p, *s;
p = head;
n = search(head, info); if (-1 == n) { printf("沒有找到 "); return 0;
} for (i = 0; i < n; i++) {
p = p->next;
}
p->next = p->next->next;
Record--; return 0;
}int compare(char *str1, char *str2)
{ int i; for (i = 0; i < strlen(str1); i++) { if (str1[i] < str2[i]) { return 1;
}
} return 0;
}int sort_id(linkList *head, int boolean)
{
linkList *p, *pre;
pInfo temp; if (boolean) { for (p = head->next; p != NULL; p = p->next) { for (pre = p->next; pre != NULL; pre = pre->next) { if (0 == compare(p->people.id, pre->people.id)) {
temp = p->people;
p->people = pre->people;
pre->people = temp;
}
}
}
} else { for (p = head->next; p != NULL; p = p->next) { for (pre = p->next; pre != NULL; pre = pre->next) { if (1 == compare(p->people.id, pre->people.id)) {
temp = p->people;
p->people = pre->people;
pre->people = temp;
}
}
}
} return 0;
}int sort_name(linkList *head, int boolean)
{
linkList *p, *pre;
pInfo temp; if (boolean) { for (p = head->next; p != NULL; p = p->next) { for (pre = p->next; pre != NULL; pre = pre->next) { if (0 == compare(p->people.name, pre->people.name)) {
temp = p->people;
p->people = pre->people;
pre->people = temp;
}
}
}
} else { for (p = head->next; p != NULL; p = p->next) { for (pre = p->next; pre != NULL; pre = pre->next) { if (1 == compare(p->people.name, pre->people.name)) {
temp = p->people;
p->people = pre->people;
pre->people = temp;
}
}
}
} return 0;
}


閱讀全文

與通訊錄核心演算法思想相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:579
python員工信息登記表 瀏覽:377
高中美術pdf 瀏覽:161
java實現排列 瀏覽:513
javavector的用法 瀏覽:982
osi實現加密的三層 瀏覽:233
大眾寶來原廠中控如何安裝app 瀏覽:916
linux內核根文件系統 瀏覽:243
3d的命令面板不見了 瀏覽:526
武漢理工大學伺服器ip地址 瀏覽:149
亞馬遜雲伺服器登錄 瀏覽:525
安卓手機如何進行文件處理 瀏覽:71
mysql執行系統命令 瀏覽:930
php支持curlhttps 瀏覽:143
新預演算法責任 瀏覽:444
伺服器如何處理5萬人同時在線 瀏覽:251
哈夫曼編碼數據壓縮 瀏覽:426
鎖定伺服器是什麼意思 瀏覽:385
場景檢測演算法 瀏覽:617
解壓手機軟體觸屏 瀏覽:350