首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-02-14 
通讯录查询的问题,请教查错。今天特郁闷,简单程序老是运行不出来,一运行就带出很多的“烫”。请教。//C语言程序

通讯录查询的问题,请教查错。
今天特郁闷,简单程序老是运行不出来,一运行就带出很多的“烫”。请教。
//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;
}

热点排行