读书人

通讯录查询的有关问题请问查错

发布时间: 2012-02-14 19:19:19 作者: rapoo

通讯录查询的问题,请教查错。
今天特郁闷,简单程序老是运行不出来,一运行就带出很多的“烫”。请教。
//C语言程序设计试题:先输入通讯录记录,再输入姓名检索。
#include "iostream.h "
#include "iomanip "
#include "string.h "
using namespace std;
struct REC //结构体定义
{
char name[10];
char sex;
char tel[12];
};

void main()
{
REC my_class[30]; //定义50条通讯录
printf( "请输入学生总数: ");
int n;scanf( "%d ",&n);
for(int i=0;i <n;i++) //先逐条输入通讯录作为资料
{
printf( "请输入第%d位同学的姓名: ",i+1);
scanf( "%s ",&my_class[i].name);
printf( "\n性别: ");
scanf( "%c ",&my_class[i].sex);
printf( "\n电话号码:\n ");
printf( "%s ",&my_class[i].tel);
}
printf( "请输入要查询的同学姓名:\n ");
char StuName[10];
scanf( "%s ",&StuName); //要查询的姓名
int a;
int cmp(char *a,char *b);
for(i=0;i <n;i++) //在通讯录中查找,如果有则输出该条通讯录
{
a=cmp(my_class[i].name,StuName); //查询的姓名与记录中姓名比较
if(a==0) //若查到,则显示该条记录
{
printf( "姓名:%s 性别:%c 电话:%s\n ",my_class[i].name,my_class[i].sex,my_class[i].tel);
break;
}
}
if(a!=0) //如果没有查到,则出错提示
printf( "ERROR! 没有这个姓名!\n ");
}

int cmp(char *a,char *b) //两个同长数组比较
{
for(int i=0;;i++)
if(a[i]-b[i]!=0)
{
return 1;break;
}
return 0;
}

[解决办法]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct REC //结构体定义
{
char name[10];
char sex;
char tel[12];
};

int cmp(char *a,char *b);

int main()
{
REC my_class[30]; //定义50条通讯录
printf( "请输入学生总数: ");
int n;scanf( "%d ",&n);

for(int i=0;i <n;i++) //先逐条输入通讯录作为资料
{
printf( "请输入第%d位同学的姓名: ",i+1);
scanf( "%s ",my_class[i].name);

getchar(); //吸收前面结束时输入的回车 '\n '
printf( "\n性别: ");
scanf( "%c ",&my_class[i].sex);

printf( "\n电话号码: ");
scanf( "%s ",my_class[i].tel);
}


printf( "请输入要查询的同学姓名:\n ");
char StuName[10];
scanf( "%s ",StuName); //要查询的姓名



int a;
for(int i=0;i <n;i++) //在通讯录中查找,如果有则输出该条通讯录
{
a=cmp(my_class[i].name,StuName); //查询的姓名与记录中姓名比较
if(a==0) //若查到,则显示该条记录
{
printf( "姓名:%s 性别:%c 电话:%s\n ",my_class[i].name,my_class[i].sex,my_class[i].tel);
break;
}
}
if(a!=0) //如果没有查到,则出错提示
printf( "ERROR! 没有这个姓名!\n ");

system( "pause ");
return 0;
}

int cmp(char *a,char *b) //两个同长数组比较
{
int n = strlen(a);
for(int i=0;i <n;i++) {
if( (a[i]-b[i])!=0)
{
return 1;break;
}
}
return 0;
}

读书人网 >C语言

热点推荐