主题:新手求助,一个通讯录,不会找错误,求大神解救。
我想弄个通讯录之类的程序,对这方面不是很熟悉,对几个程序东拼西凑,弄出了这个程序。本来参考程序都是正确的,拼凑之后的程序错漏百出。这是我的程序,第一次就这么惨不忍睹,求大神帮忙看看,到底错在哪里,应该怎么改?
#include"stdio.h"
#include<stdlib.h>
#include<string.h>
#include"process.h"
#include"ctype.h"
typedef struct
{
char num[15];
char name[10];
char dormitory[5];
char QQ[10];
char phone[15];
}Student;
Student stu[99];
int shuru(Student stud[],int n)/*输入若干条记录*/
{
int i=0;
char sign,x[10];
double a=0.0;
while(sign!='n'&&sign!='N')
{
printf("输入学生姓名:");
scanf("%s",stu[n+i].name);
printf("输入学生学号:");
scanf("%s",stu[n+i].num);
printf("输入学生的宿舍:");
scanf("%s",&stu[n+i].dormitory);
printf("输入学生的QQ:");
scanf("%s",&stu[n+i].QQ);
printf("输入学生的电话:");
scanf("%s",&stu[n+i].phone);
gets(x); /*清除多余的输入*/
printf("是否继续输入?(Y/N):\n");
scanf("%c",&sign);
i++;
}
return(n+i);
}
void xianshi(Student stud[],int n) /*显示所有记录*/
{
int i ;
printf("-----------------------------------------------------------------------------------------\n"); /*格式头*/
printf("姓名 学号 宿舍 QQ 电话号码 \n");
printf("-----------------------------------------------------------------------------------------\n");
for(i=0;i<n;i++)
{
printf("%-10s%-15s%-5s%-15s%-15s%\n",stu[i].name,stu[i].num,stu[i].dormitory,stu[i].QQ,stu[i].phone);
}
}
void xiugai(Student stud[],int n)/*修改*/
{
int i=0,choice=1;
char x[10];
while(choice!=0)
{ printf("请输入您要修改的学生的学号:\n");
scanf("%s",x);
for(i=0;;i++)
{
if(strcmp(stu[i].num,x)==0) break;
}
printf("请选择您要修改的内容:\n");
printf(" ---------------------- \n");
printf("| 姓名 请按 1 |\n");
printf("| 宿舍 请按 2 |\n");
printf("| QQ 请按 3 |\n");
printf("| 电话号码 请按 4 |\n");
printf("| 退出 请按 0|\n");
printf("+----------------------+\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch(choice)
{
case 0:break;
case 1:
printf("请输入新姓名:");
scanf("%s", stu[i].name);
break;
case 2:
printf("请输入新的宿舍:");
scanf("%d", &stu[i].dormitory);
break;
case 3:
printf("请输入新的QQ:");
scanf("%d",&stu[i].QQ);
break;
case 4:
printf("请输入新的电话号码:");
scanf("%d", &stu[i].phone);
break;
default:
printf("\n无效选项!");
break;
} break;
}
return;
}
int shanchu(Student stud[],int n) /*按姓名查找,删除一条记录*/
{ char s[20];
int i;
int j;
i=0;
printf("输入要删除记录的姓名:");
scanf("%s",s);
while(strcmp(stu[i].name,s)!=0&&i<n) i++;
if(i==n)
{printf("not find!\n");
return(n); }
for(j=i;j<n-1;j++) /*删除操作*/
{
strcpy(stu[j].num,stu[j+1].num);
strcpy(stu[j].name,stu[j+1].name);
stu[j].dormitory=stu[j+1].dormitory;
stu[j].QQ=stu[j+1].QQ;
stu[j].phone=stu[j+1].phone;
}
printf("Delete Successed!\n");
return(n-1);
}
void chaxun_xingming(Student stud[],int n) /*按姓名查找并显示一个记录*/
{ char s[20];
int i=0;
printf("输入姓名:");
scanf("%s",s);
while(strcmp(stu[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{printf("not find!\n"); /*输入失败信息*/
return; }
printf("他的姓名、学号是:%s %s\n",stu[i].name,stu[i].num); /*输出该学生信息*/
printf("宿舍 QQ 电话号码是:%s,%s,%s\n",stu[i].dormitory,stu[i].QQ,stu[i].phone);
}
void chaxun_xuehao(Student stud[],int n) /*按姓名查找并显示一个记录*/
{ char s[20];
int i=0;
printf("输入学号:");
scanf("%s",s);
while(strcmp(stu[i].num,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{printf("not find!\n"); /*输入失败信息*/
return; }
printf("他的姓名、学号是:%s %s\n",stu[i].name,stu[i].num); /*输出该学生信息*/
printf("宿舍 QQ 电话号码是:%s,%s,%s\n",stu[i].dormitory,stu[i].QQ,stu[i].phone);
}
void chaxun_dormitory(Student stud[],int n) /*按宿舍查找并显示一个记录*/
{ char s;
int i=0;
printf("请输入宿舍:");
scanf("%s",&s);
while(stu[i].dormitory!=s && i<n) i++;
if(i==n)
{ printf("not find!\n"); /*输入失败信息*/
return;
}
printf("他的学号是:%s\n",stu[i].num); /*输出该学生信息*/
printf("他的姓名是:%s\n",stu[i].name);
printf("他的宿舍是:%s\n",stu[i].dormitory,);
printf("他的QQ是:%s\n",stu[i].QQ);
printf("他的电话号码是:%s\n",stu[i].phone);
}
void chaxun_QQ(Student stud[],int n) /*按QQ查找并显示一个记录*/
{ char s;
int i=0;
printf("请输入QQ:");
scanf("%s",&s);
while(stu[i].QQ!=s && i<n) i++;
if(i==n)
{ printf("not find!\n"); /*输入失败信息*/
return;
}
printf("他的学号是:%s\n",stu[i].num); /*输出该学生信息*/
printf("他的姓名是:%s\n",stu[i].name);
printf("他的宿舍是:%s\n",stu[i].dormitory,);
printf("他的QQ是:%s\n",stu[i].QQ);
printf("他的电话号码是:%s\n",stu[i].phone);
}
void chaxun_phone(Student stud[],int n) /*按电话号码查找并显示一个记录*/
{ char s;
int i=0;
printf("请输入phone:");
scanf("%s",&s);
while(stu[i].phone!=s && i<n) i++;
if(i==n)
{ printf("not find!\n"); /*输入失败信息*/
return;
}
printf("他的学号是:%s\n",stu[i].num); /*输出该学生信息*/
printf("他的姓名是:%s\n",stu[i].name);
printf("他的宿舍是:%s\n",stu[i].dormitory,);
printf("他的QQ是:%s\n",stu[i].QQ);
printf("他的电话号码是:%s\n",stu[i].phone);
}
void paixu_xuehao(Student stud[],int n) /*按学号排序*/
{ int i,j,p,q;
char y;
char x[20],t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{ strcpy(t,stud[j].num);
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j+1].num,t);
strcpy(x,stud[j].name);
strcpy(stud[j].name,stud[j+1].name);
strcpy(stud[j+1].name,x);
y=stu[j].dormitory;stu[j].dormitory=stu[j+1].dormitory;stu[j+1].dormitory=y;
p=stu[j].QQ;stu[j].QQ=stu[j+1].QQ;stu[j+1].QQ=p;
q=stu[j].phone;stu[j].phone=stu[j+1].phone;stu[j+1].phone=q;
}
return;
}
void paixu_xingming(Student stud{},int n) /*按姓名排序*/
{
int i,j,num;
struct student stt;
for (i=1;i<=n;i++)
for (j=i+1;j<=n;j++)
if (strcmp((*stu)[i].name,(*stu)[j].name)>0)
{
stt=(*stu)[i];
(*stu)[i]=(*stu)[j];
(*stu)[j]=stt;
};
break;
default:;
};
display(n,*stu);
}
int menu() /*菜单函数*/
{
int c;
do{
printf("\t\t**********班级同学信息管理程序********************\n");
printf("\t\t 1. 编辑 \n");
printf("\t\t 2. 显示 \n");
printf("\t\t 3. 查询 \n");
printf("\t\t 4. 排序\n");
printf("\t\t 0. 退出 \n");
printf("*******************************************************\n");
printf("\t\t\t请选择(0-4):");
scanf("%d",&c);
}while(c<0||c>4);
return(c-0); /*返回选择*/
}
int bianji()
{
printf("\t\t 1. 加入\n");
printf("\t\t 2 .修改\n");
printf("\t\t 3. 删除 \n");
printf("\t\t 按其它数字键退出 \n");
int i;
scanf("%d",&i);
return i;
}
int chaxun()
{
printf("\t\t 1. 按姓名查询\n");
printf("\t\t 2 .按学号查询\n");
printf("\t\t 2 .按宿舍查询\n");
printf("\t\t 2 .按QQ查询\n");
printf("\t\t 2 .按电话号码查询\n");
printf("\t\t 按其它数字键退出\n");
int i;
scanf("%d",&i);
return i;
}
int paixu()
{
printf("\t\t 1. 按学号\n");
printf("\t\t 2 .按姓名\n");
printf("\t\t按其它数字键退出\n");
int i;
scanf("%d",&i);
return i;
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
for(;;)
{
switch(menu())
{
case 1: switch(bianji())
{
case 1:n=shuru(stu,n);xianshi(stu,n); break;
case 2:xiugai(stu ,n);xianshi(stu,n); break;
case 3:shanchu(stu ,n);xianshi(stu,n); break;
} break;
case 2:xianshi(stu,n);break;
case 3:
switch(chaxun())
{
case 1:chaxun_xingming(stu,n);break;
case 2:chaxun_xuehao(stu ,n);break;
case 3:chaxun_dormitory(stu ,n);break;
case 4:chaxun_QQ(stu ,n);break;
case 5:chaxun_phone(stu ,n);break;
} break;
case 4: switch(paixu())
{
case 1:paixu_xuehao(stu,n);xianshi(stu,n); break ;
case 2:paixu_xingming(stu ,n);xianshi(stu,n);break;
} break;
case 0:
exit(0); /*结束程序*/
}
}
}
}[code=c]
请填写代码
[/code][code=c]
请填写代码
[/code]
#include"stdio.h"
#include<stdlib.h>
#include<string.h>
#include"process.h"
#include"ctype.h"
typedef struct
{
char num[15];
char name[10];
char dormitory[5];
char QQ[10];
char phone[15];
}Student;
Student stu[99];
int shuru(Student stud[],int n)/*输入若干条记录*/
{
int i=0;
char sign,x[10];
double a=0.0;
while(sign!='n'&&sign!='N')
{
printf("输入学生姓名:");
scanf("%s",stu[n+i].name);
printf("输入学生学号:");
scanf("%s",stu[n+i].num);
printf("输入学生的宿舍:");
scanf("%s",&stu[n+i].dormitory);
printf("输入学生的QQ:");
scanf("%s",&stu[n+i].QQ);
printf("输入学生的电话:");
scanf("%s",&stu[n+i].phone);
gets(x); /*清除多余的输入*/
printf("是否继续输入?(Y/N):\n");
scanf("%c",&sign);
i++;
}
return(n+i);
}
void xianshi(Student stud[],int n) /*显示所有记录*/
{
int i ;
printf("-----------------------------------------------------------------------------------------\n"); /*格式头*/
printf("姓名 学号 宿舍 QQ 电话号码 \n");
printf("-----------------------------------------------------------------------------------------\n");
for(i=0;i<n;i++)
{
printf("%-10s%-15s%-5s%-15s%-15s%\n",stu[i].name,stu[i].num,stu[i].dormitory,stu[i].QQ,stu[i].phone);
}
}
void xiugai(Student stud[],int n)/*修改*/
{
int i=0,choice=1;
char x[10];
while(choice!=0)
{ printf("请输入您要修改的学生的学号:\n");
scanf("%s",x);
for(i=0;;i++)
{
if(strcmp(stu[i].num,x)==0) break;
}
printf("请选择您要修改的内容:\n");
printf(" ---------------------- \n");
printf("| 姓名 请按 1 |\n");
printf("| 宿舍 请按 2 |\n");
printf("| QQ 请按 3 |\n");
printf("| 电话号码 请按 4 |\n");
printf("| 退出 请按 0|\n");
printf("+----------------------+\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch(choice)
{
case 0:break;
case 1:
printf("请输入新姓名:");
scanf("%s", stu[i].name);
break;
case 2:
printf("请输入新的宿舍:");
scanf("%d", &stu[i].dormitory);
break;
case 3:
printf("请输入新的QQ:");
scanf("%d",&stu[i].QQ);
break;
case 4:
printf("请输入新的电话号码:");
scanf("%d", &stu[i].phone);
break;
default:
printf("\n无效选项!");
break;
} break;
}
return;
}
int shanchu(Student stud[],int n) /*按姓名查找,删除一条记录*/
{ char s[20];
int i;
int j;
i=0;
printf("输入要删除记录的姓名:");
scanf("%s",s);
while(strcmp(stu[i].name,s)!=0&&i<n) i++;
if(i==n)
{printf("not find!\n");
return(n); }
for(j=i;j<n-1;j++) /*删除操作*/
{
strcpy(stu[j].num,stu[j+1].num);
strcpy(stu[j].name,stu[j+1].name);
stu[j].dormitory=stu[j+1].dormitory;
stu[j].QQ=stu[j+1].QQ;
stu[j].phone=stu[j+1].phone;
}
printf("Delete Successed!\n");
return(n-1);
}
void chaxun_xingming(Student stud[],int n) /*按姓名查找并显示一个记录*/
{ char s[20];
int i=0;
printf("输入姓名:");
scanf("%s",s);
while(strcmp(stu[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{printf("not find!\n"); /*输入失败信息*/
return; }
printf("他的姓名、学号是:%s %s\n",stu[i].name,stu[i].num); /*输出该学生信息*/
printf("宿舍 QQ 电话号码是:%s,%s,%s\n",stu[i].dormitory,stu[i].QQ,stu[i].phone);
}
void chaxun_xuehao(Student stud[],int n) /*按姓名查找并显示一个记录*/
{ char s[20];
int i=0;
printf("输入学号:");
scanf("%s",s);
while(strcmp(stu[i].num,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{printf("not find!\n"); /*输入失败信息*/
return; }
printf("他的姓名、学号是:%s %s\n",stu[i].name,stu[i].num); /*输出该学生信息*/
printf("宿舍 QQ 电话号码是:%s,%s,%s\n",stu[i].dormitory,stu[i].QQ,stu[i].phone);
}
void chaxun_dormitory(Student stud[],int n) /*按宿舍查找并显示一个记录*/
{ char s;
int i=0;
printf("请输入宿舍:");
scanf("%s",&s);
while(stu[i].dormitory!=s && i<n) i++;
if(i==n)
{ printf("not find!\n"); /*输入失败信息*/
return;
}
printf("他的学号是:%s\n",stu[i].num); /*输出该学生信息*/
printf("他的姓名是:%s\n",stu[i].name);
printf("他的宿舍是:%s\n",stu[i].dormitory,);
printf("他的QQ是:%s\n",stu[i].QQ);
printf("他的电话号码是:%s\n",stu[i].phone);
}
void chaxun_QQ(Student stud[],int n) /*按QQ查找并显示一个记录*/
{ char s;
int i=0;
printf("请输入QQ:");
scanf("%s",&s);
while(stu[i].QQ!=s && i<n) i++;
if(i==n)
{ printf("not find!\n"); /*输入失败信息*/
return;
}
printf("他的学号是:%s\n",stu[i].num); /*输出该学生信息*/
printf("他的姓名是:%s\n",stu[i].name);
printf("他的宿舍是:%s\n",stu[i].dormitory,);
printf("他的QQ是:%s\n",stu[i].QQ);
printf("他的电话号码是:%s\n",stu[i].phone);
}
void chaxun_phone(Student stud[],int n) /*按电话号码查找并显示一个记录*/
{ char s;
int i=0;
printf("请输入phone:");
scanf("%s",&s);
while(stu[i].phone!=s && i<n) i++;
if(i==n)
{ printf("not find!\n"); /*输入失败信息*/
return;
}
printf("他的学号是:%s\n",stu[i].num); /*输出该学生信息*/
printf("他的姓名是:%s\n",stu[i].name);
printf("他的宿舍是:%s\n",stu[i].dormitory,);
printf("他的QQ是:%s\n",stu[i].QQ);
printf("他的电话号码是:%s\n",stu[i].phone);
}
void paixu_xuehao(Student stud[],int n) /*按学号排序*/
{ int i,j,p,q;
char y;
char x[20],t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{ strcpy(t,stud[j].num);
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j+1].num,t);
strcpy(x,stud[j].name);
strcpy(stud[j].name,stud[j+1].name);
strcpy(stud[j+1].name,x);
y=stu[j].dormitory;stu[j].dormitory=stu[j+1].dormitory;stu[j+1].dormitory=y;
p=stu[j].QQ;stu[j].QQ=stu[j+1].QQ;stu[j+1].QQ=p;
q=stu[j].phone;stu[j].phone=stu[j+1].phone;stu[j+1].phone=q;
}
return;
}
void paixu_xingming(Student stud{},int n) /*按姓名排序*/
{
int i,j,num;
struct student stt;
for (i=1;i<=n;i++)
for (j=i+1;j<=n;j++)
if (strcmp((*stu)[i].name,(*stu)[j].name)>0)
{
stt=(*stu)[i];
(*stu)[i]=(*stu)[j];
(*stu)[j]=stt;
};
break;
default:;
};
display(n,*stu);
}
int menu() /*菜单函数*/
{
int c;
do{
printf("\t\t**********班级同学信息管理程序********************\n");
printf("\t\t 1. 编辑 \n");
printf("\t\t 2. 显示 \n");
printf("\t\t 3. 查询 \n");
printf("\t\t 4. 排序\n");
printf("\t\t 0. 退出 \n");
printf("*******************************************************\n");
printf("\t\t\t请选择(0-4):");
scanf("%d",&c);
}while(c<0||c>4);
return(c-0); /*返回选择*/
}
int bianji()
{
printf("\t\t 1. 加入\n");
printf("\t\t 2 .修改\n");
printf("\t\t 3. 删除 \n");
printf("\t\t 按其它数字键退出 \n");
int i;
scanf("%d",&i);
return i;
}
int chaxun()
{
printf("\t\t 1. 按姓名查询\n");
printf("\t\t 2 .按学号查询\n");
printf("\t\t 2 .按宿舍查询\n");
printf("\t\t 2 .按QQ查询\n");
printf("\t\t 2 .按电话号码查询\n");
printf("\t\t 按其它数字键退出\n");
int i;
scanf("%d",&i);
return i;
}
int paixu()
{
printf("\t\t 1. 按学号\n");
printf("\t\t 2 .按姓名\n");
printf("\t\t按其它数字键退出\n");
int i;
scanf("%d",&i);
return i;
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
for(;;)
{
switch(menu())
{
case 1: switch(bianji())
{
case 1:n=shuru(stu,n);xianshi(stu,n); break;
case 2:xiugai(stu ,n);xianshi(stu,n); break;
case 3:shanchu(stu ,n);xianshi(stu,n); break;
} break;
case 2:xianshi(stu,n);break;
case 3:
switch(chaxun())
{
case 1:chaxun_xingming(stu,n);break;
case 2:chaxun_xuehao(stu ,n);break;
case 3:chaxun_dormitory(stu ,n);break;
case 4:chaxun_QQ(stu ,n);break;
case 5:chaxun_phone(stu ,n);break;
} break;
case 4: switch(paixu())
{
case 1:paixu_xuehao(stu,n);xianshi(stu,n); break ;
case 2:paixu_xingming(stu ,n);xianshi(stu,n);break;
} break;
case 0:
exit(0); /*结束程序*/
}
}
}
}[code=c]
请填写代码
[/code][code=c]
请填写代码
[/code]