求高手帮忙解答 急急急
小弟刚学C语言不久,现要编写一个通讯录,代码如下。希望这个程序能实现输入,输出,查找,按学号排序这些功能。运行时检查无错,但是实施时输出,排序,查找,添加的功能无法实现。请各位高手帮忙看看是哪里出错了,帮忙改改····谢谢了#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 100
void write(); //输入成员函数//
void print6(); //输出成员函数*//
void print(); //界面//
void sord(); //按照学号排序函数//
void search_sex(char sex[]); //按照性别查找函数//
void search(char num[]); //按照学号查找函数//
void search_name(char name[]); //按照姓名查找函数*//
void search_QQ(char QQ[]); //按QQ查找函数//
void add(); //添加函数//
struct stu
{
char num[35];//学号//
char name[30];
char sex[10];
char ph[12];//电话号码//
char QQ[10];
char addr[40];//地址//
}stu[SIZE];
void print()//界面//
{
printf("\n*******************************09测控通讯录************************************\n");
printf("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf("请选择您所需要的操作:\n");
printf("\t\t\t\t 1: 输入成员列表\n");
printf("\t\t\t\t 2: 输出成员列表\n");
printf("\t\t\t\t 3: 将成员按学号排序\n");
printf("\t\t\t\t 4: 按照性别查找\n");
printf("\t\t\t\t 5: 按照学号查找\n");
printf("\t\t\t\t 6: 按照姓名查找\n");
printf("\t\t\t\t 7: 按照QQ查找\n");
printf("\t\t\t\t 8: 添加成员\n");
printf("\t\t\t\t 9: 出口\n");
}
void print6()//输出成员//
{
int i,j;
while(1)
{
for(i=0;i<SIZE;i++)
{
printf("\t学号:");
printf("%d",stu[i].num);
printf("\t姓名:");
printf("%s",stu[i].name);
printf("\t性别:");
printf("%s",stu[i].sex);
printf("\t手机号:");
printf("%d",stu[i].ph);
printf("\tQQ:");
printf("%d",stu[i].QQ);
printf("\t地址:");
printf("%s\n",stu[i].addr);
}
printf("结束请按0\n");
scanf("%d",&j);
if(j==0) break;
}
}
void write()//输入成员函数//
{
int j;
while(1)
{
printf("请输入学号:");
scanf("%s",&stu[SIZE].num);
printf("请输入姓名:");
scanf("%s",&stu[SIZE].name);
printf("请输入性别:");
scanf("%s",&stu[SIZE].sex);
printf("请输入手机号:");
scanf("%s",&stu[SIZE].ph);
printf("请输入QQ号:");
scanf("%s",&stu[SIZE].QQ);
printf("请输入住址:");
scanf("%s",&stu[SIZE].addr);
printf("您是否要继续?\n1.继续\n0.退出\n");
scanf("%d",&j);
if(j==0) break;
}
}
void sord()//按照学号排序函数//
{
int i,k,j; struct stu *a[SIZE],*temp;
for(i=0;i<SIZE;i++)
a[i]=stu+i; //将结构体指针指向结构体//
for(i=0;i<SIZE-1;i++)
{ k=i;
for(j=i+1;j<SIZE;j++)
if(strcmp(stu[k].num,stu[j].num)>0) k=j;
if(k!=i)
{temp=a[k];a[k]=a[i];a[i]=temp;} //交换指针的指向//
}
for(i=0;i<SIZE;i++)
printf("%s %-6s %s \t%s %s%s\n",a[i]->num,a[i]->name,a[i]->sex,a[i]->ph,a[i]->QQ,a[i]->addr); //排序后输出//
}
void search(char num[])//按照学号查找函数//
{
int i,t;
scanf("%s",num);
for(i=0,t=1;i<=SIZE;i++,t++)
{ if(strcmp(stu[i].num,num)==0)
{printf("%s %-6s %s \t%s %s %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].ph,stu[i].QQ,stu[i].addr);
printf("------------------------------------------------------------------\n");
break;}
else
if(t==SIZE) printf("没有找到该学生\n");
}
}
void search_sex(char sex[])//按照性别查找函数//
{
int i;
for(i=0;i<=SIZE;i++)
{ if(strcmp(stu[i].sex,sex)==0) //按照性别输出//
{ printf("%s %-6s %s \t%s %s%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].ph,stu[i].QQ,stu[i].addr);
printf("------------------------------------------------------------------\n"); }
}
}
void search_name(char name[])//按照姓名查找函数*//
{
int i,t;
for(i=0,t=1;i<=SIZE;i++,t++)
{ if(strcmp(stu[i].name,name)==0)
{printf("%d %-6s %s \t%d %d %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].ph,stu[i].QQ,stu[i].addr);
printf("------------------------------------------------------------------\n");
break;}
else
if(t==SIZE) printf("没有找到该学生\n");
}
}
void search_QQ(char QQ[])//按QQ查找函数//
{
int i,t;
for(i=0,t=1;i<=SIZE;t++,i++)
if(strcmp(QQ,stu[i].QQ)==0)
{printf("%s %-6s %s \t%s %s %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].ph,stu[i].QQ,stu[i].addr);
printf("------------------------------------------------------------------\n"); }
else
if(t==SIZE) printf("没有使用该QQ的学生\n");
}
void add() //添加函数//
{
printf("请输入要添加学生的信息:");
write();
sord();
}
void main()//主函数//
{
int i; char sex[10];char num[12]; char name[20];char QQ[10];
do
{
print();
scanf("%d",&i);
switch(i)
{case 1: write(); break;
case 2: print6(); break;
case 3: sord(); break;
case 4: {printf("请输入要查找的性别:");scanf("%s",sex);search_sex(sex);} break;
case 5: {printf("请输入要查找的学号:");scanf("%s",num);search(num);} break;
case 6: {printf("请输入要查找的姓名:");scanf("%s",name);search_name(name);} break;
case 7: {printf("请输入要查找的QQ号:");scanf("%s",QQ);search_QQ(QQ);} break;
case 8: add(); break;
case 9: exit(0); break;
}
}while(1);
}
[ 本帖最后由 kaiqiang1015 于 2010-9-25 21:40 编辑 ]