Linuxc基礎 十六
阿新 • • 發佈:2018-11-30
今天我寫了一個簡易的通訊錄。
程式碼
#include <stdio.h> #include <string.h> struct Data { int id; char name[10]; long phone; char a[100]; char b[50]; }; int my_rand(struct Data te[] )//產生隨機數 { int sum1; srand(time(NULL)); int i; for (i = 0; i < 5; i++) { te[i].id= rand()%10; } sum1=te[0].id; for(i = 1 ;i < 5; i++) { if(te[i].id!=te[i+1].id) { sum1=sum1*10+te[i].id;//將陣列轉為整形 //printf("%d\n",sum1); } else { break; } } return sum1; } void my_add(struct Data te[],int *length)//新增聯絡人函式 { int i; int hg=my_rand(te);//呼叫隨機數 int p1=*length; printf("1.請新增聯絡人\n"); printf("2.輸入ID:%d\n",hg); printf("3.請輸入號碼: \n"); scanf("%lu",&te[p1].phone); printf("4.請輸入姓名: \n"); scanf("%s",te[p1].name); p1 ++; for(i=0;i<p1;i++) { te[i].id=hg;//將隨機數儲存到te陣列中 } *length=p1; } void my_show(struct Data te[],int *length)//顯示聯絡人 { int p2=*length; int i; for(i=0;i<p2;i++) { printf("%d\t",te[i].id); printf("%s\t",te[i].name); printf("%lu\n",te[i].phone); printf("------------------\n"); printf("聯絡人數:%d\n",p2); printf("------------------\n"); *length=p2; } } void my_delete(struct Data te[],int *length)//刪除聯絡人函式 { int i; int p3=*length; int cd=0; printf("進入選項\n"); printf("請輸入1或0\n"); scanf("%d",&cd); if(cd == 1 )//輸入1時進行下面的操作 { printf("請輸入你要刪除的姓名:\n"); scanf("%s",te[i].name); for(i=0;i<p3;i++) { strcpy(te[i].a,te[i].name);//將name陣列的內容複製到a陣列 } p3 --; } else if(cd == 0) { printf("請輸入你要刪除的號碼:\n"); scanf("%lu",&te[i].phone); for(i=0;i<p3;i++) { sprintf(te[i].b,"%lu",te[i].phone);//將長整型轉換成字串陣列 strcpy(te[i].a,te[i].b);//將b陣列的內容複製到a陣列 } p3 --; } *length=p3; } int my_find(struct Data te[],int *length)//查詢函式 { int i; int p4=*length; int fd=0; char ret[20]; long gp; printf("進入選項\n"); printf("請輸入1或0\n"); scanf("%d",&fd); if(fd == 1) { printf("請輸入你要查詢的姓名\n"); scanf("%s",ret); for(i=0;i<p4;i++) { if(strcmp(ret,te[i].name)==0)//比交陣列ret與陣列name的內容,如果是0則相等,如果是小於0則陣列ret小於陣列name,如果是大於0則陣列ret大於陣列name { printf("%d\t",te[i].id); printf("%s\t",te[i].name); printf("%lu\n",te[i].phone); return i; } } } else if(fd == 0) { printf("請輸入你要查詢的號碼\n"); scanf("%lu",&gp); for(i=0;i<p4;i++) { if(gp==te[i].phone) { printf("%d\t",te[i].id); printf("%s\t",te[i].name); printf("%lu\n",te[i].phone); return i; } } } *length=p4; return -1; } int my_change(struct Data te[],int *length)//修改函式 { int p5=*length; int ret=my_find(te,&p5); if(ret !=-1) { printf("%d\t",te[ret].id); printf("請修改姓名\n"); scanf("%s",te[ret].name); printf("%s\t",te[ret].name);//修改後的名字 printf("請修改號碼\n"); scanf("%lu",&te[ret].phone); printf("%lu\n",te[ret].phone);//修改後的號碼 } else { printf("error\n"); } *length=p5; return 0; } int main() { int i; struct Data te[10]={0}; int count=0; int length=0; while(1) { printf("1.請輸入\n"); printf("2.請顯示\n"); printf("3.請刪除\n"); printf("4.請查詢\n"); printf("5.請修改\n"); scanf("%d",&count); switch(count) { case 1: my_add(te,&length); //呼叫輸入函式 break; case 2: my_show(te,&length);//呼叫顯示函式 break; case 3: my_delete(te,&length);//呼叫刪除函式 break; case 4: my_find(te,&length);//呼叫查詢函式 break; case 5: my_change(te,&length);//呼叫修改函式 break; default: printf("error\n"); break; } } return 0; }