代码下的雨 2021-06-30 11:18 采纳率: 20%
浏览 11

使用VC编译,好像总有一个问题?

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>int i = 0; //定义全局变量i/定义结构体变量,包含的编号、姓名、性别、电话、qq号、住址、备注等信息/struct contact{ char name[20]; char ismale[20]; char tel[20]; char qq[20]; char address[20]; char remark[20];};struct contact p[100]; //声明结构体pvoid clear(){ system("clear"); //清屏}void interface() //界面函数,输出主界面{ printf(" ********************************************************************************* \n"); printf(" * * \n"); printf(" * * \n"); printf(" | | \n"); printf(" | 通 讯 录 | \n"); printf(" | | \n"); printf(" | ~~~~~~~~ | \n"); printf(" | 1、添加好友; | \n"); printf(" | 2、查看列表; | \n"); printf(" | 3、删除好友; | \n"); printf(" | 4、查找好友; | \n"); printf(" | 5、修改信息; | \n"); printf(" | 6、退出程序; | \n"); printf(" | ~~~~~~~~ | \n"); printf(" | | \n"); printf(" |功能:1.ADD、2.LIST、3.DELETE、4.SEEK、5.REVISE、6.EXIT | \n"); printf(" |请在下面输入1、2、3、4、5、6选择你的操作。 | \n"); printf(" | | \n"); printf(" * * \n"); printf(" * * \n"); printf(" ********************************************************************************* \n");}void add() //定义添加联系人函数{ char c = 0; do { clear(); printf("请输入联系人姓名:"); //录入联系人信息 scanf("%s",p[i].name); printf("请输入联系人性别:"); scanf("%s",p[i].ismale); printf("请输入联系人电话号码:"); scanf("%s",p[i].tel); printf("请输入联系人QQ号:"); scanf("%s",p[i].qq); printf("请输入联系人家庭地址:"); scanf("%s",p[i].address); printf("备注:"); scanf("%s",p[i].remark); i++; //录完后让i++ printf("是否继续添加? (y/n) :"); __fpurge(stdin); //清除缓冲区 c = getchar(); }while( c == 'y' ); //do while语句,当c不等于y时退出循环}void printfcon(int j) //定义打印单个联系人信息函数{ printf("编号:%d\n",j); printf("姓名:%s\n",p[j].name); printf("性别:%s\n",p[j].ismale); printf("电话:%s\n",p[j].tel); printf("QQ号:%s\n",p[j].qq); printf("地址:%s\n",p[j].address); printf("备注:%s\n",p[j].remark); printf("\n");}void list() //定义联系人列表函数,输出所有联系人信息{ clear(); int j = 0; for( j = 0; j < i; j++ ) { printfcon( j ); }}int findnum( char *s, int *accumlate ) //定义找到联系人编号函数,找到编号存入数组accumlate{ int m = 0; int j = 0; for( m = 0; m < i; m++ ) { if( strcmp( s, p[m].name ) == 0 ) { accumlate[j++] = m; //比较字符串s和结构体中的name,如果返回值为0,代表相等,把编号存入数组 } } return j; //返回数组中有几个值,即能找到几个联系人}void seek() //定义查找函数,通过姓名查找{ char c = 0; do { clear(); int j = 0; int temp = 0; int accum = 0; int a[20] = {0}; char name[20] = {0}; printf("请输入你想查找的联系人的姓名:"); scanf("%s",name); accum = findnum( name, a ); //调用findnum函数,并把找到几个联系人赋给accum if( accum == 0 ) { printf("此联系人不存在!\n"); } else if( accum == 1 ) //如果找到一个联系人,输出这个联系人的信息 { temp = a[0]; printfcon( temp ); } else if( accum > 1 ) //找到不止一个联系人,输出全部联系人信息 { printf("有%d个联系人!\n",accum); for( j = 0; j < accum; j++ ) { temp = a[j]; printfcon( temp ); } } printf("是否继续查找? (y/n) :"); __fpurge(stdin); c = getchar(); }while( c == 'y' );}void coverdata( int j ) //定义覆盖信息函数{ int m = 0; printf("是否删除该联系人?(y/n)"); __fpurge(stdin); if( getchar() == 'y' ) { for( m = j + 1; m < i; m++ ) { strcpy( p[m].name, p[m + 1].name ); strcpy( p[m].ismale, p[m + 1].ismale ); strcpy( p[m].tel, p[m + 1].tel ); strcpy( p[m].qq, p[m + 1].qq ); strcpy( p[m].address, p[m + 1].address ); strcpy( p[m].remark, p[m + 1].remark ); } i--; //将后一个的信息传给前一个 }}void delete() //定义删除联系人函数{ char c = 0; do { clear(); int j = 0; int temp = 0; int accum = 0; int a[20] = {0}; char name[20] = {0}; printf("请输入你想删除的联系人的姓名:"); scanf("%s",name); accum = findnum( name, a ); //调用findnum函数,并把找到几个联系人赋给accum if( accum == 0 ) { printf("此联系人不存在!\n"); } else if( accum == 1 ) { temp = a[0]; coverdata(temp); } else if( accum > 1 ) { printf("有%d个联系人!\n",accum); //如果找到不止一个联系人,输出这些联系人信息,让操作者选择要删除的联系人编号 for( j = 0; j < accum; j++ ) { temp = a[j]; printfcon(temp); } printf("请输入要删的人的编号:"); scanf("%d",&temp); coverdata(temp); } printf("是否继续删除? (y/n) :"); __fpurge(stdin); c = getchar(); }while( c == 'y' );}void modify( int j ) //定义修改函数{ clear(); printfcon(j); int temp = 0; printf("\n"); printf("1--姓名\n"); printf("2--性别\n"); printf("3--电话\n"); printf("4--qq号\n"); printf("5--住址\n"); printf("6--备注\n"); printf("请输入你要修改的项:"); scanf("%d",&temp); printf("\n"); switch(temp) //用switch语句选择要修改的信息 { case 1:{ printf("请输入你要改成的姓名:"); scanf("%s",p[j].name); break; } case 2:{ printf("请输入你要改成的性别:"); scanf("%s",p[j].ismale); break; } case 3:{ printf("请输入你要改成的电话:"); scanf("%s",p[j].tel); break; } case 4:{ printf("请输入你要改成的qq号:"); scanf("%s",p[j].qq); break; } case 5:{ printf("请输入你要改成的住址:"); scanf("%s",p[j].address); break; } case 6:{ printf("请输入你要改成的备注:"); scanf("%s",p[j].remark); break; } default:printf("输入错误!\n"); }}void revise() //定义修改信息函数{ char c = 0; do { clear(); int j = 0; int temp = 0; int accum = 0; int a[20] = {0}; char name[20] = {0}; printf("请输入你想修改的联系人的姓名:"); scanf("%s",name); accum = findnum( name, a ); if( accum == 0 ) { printf("此联系人不存在!\n"); } else if( accum == 1 ) { temp = a[0]; modify(temp); } else if( accum > 1 ) { printf("有%d个联系人!\n",accum); for( j = 0; j < accum; j++ ) { temp = a[j]; printfcon(temp); //有不止一个联系人时输出所有联系人信息,让操作者选择要修改的联系人编号 } printf("请输入你要修改的人的编号:"); scanf("%d",&temp); modify(temp); } printf("是否继续修改? (y/n) :"); __fpurge(stdin); c = getchar(); }while( c == 'y' );}int main(){ for( ; ; ) { int temp = 0; clear(); interface(); //调用interface函数,输出主界面 __fpurge(stdin); scanf("%d",&temp); switch(temp) //switch语句选择功能 { case 1:{ add(); break; } case 2:{ list(); printf("按enter返回主界面!\n"); __fpurge(stdin); getchar(); //暂停界面,有输入才退出本次选择语句 break; } case 3:{ delete(); break; } case 4:{ seek(); printf("按enter返回主界面!\n"); __fpurge(stdin); getchar(); break; } case 5:{ revise(); break; } case 6:exit(0); default:{ printf("输入错误!"); printf("按enter返回主界面!\n"); __fpurge(stdin); getchar(); break; } } } return 0;}

  • 写回答

2条回答

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥30 AndroidBench&eMMC内存测试速度&Android
      • ¥15 W10 文件共享失败 怎么解决
      • ¥20 b站私信完整导出的方法
      • ¥15 边界图中的x、y轴解释
      • ¥30 如何用matlab求解复杂方程
      • ¥15 VUE TS中怎么调用第三方js
      • ¥15 Activiti如何将值传入textValue
      • ¥20 在linux里安装lummps时 在make mpi里找不到rpc
      • ¥25 python先到先得调度和轮询调度
      • ¥15 SDK Manager闪退