用c语言输入20个人的名字,然后输入一个人的名字,查找这个人在不在这20个人中

如题所述

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LENGTH 20  
#define MAX_NAME_LENGTH 10         //最大姓名长度
int searchMan(char*nameBag[],char *name,int bagScale);//在nameBag中查找name,bagScal为nameBag中包含的姓名数。找到返回数组下标,否则返回-1
int main(int argc,char * argv[]){
    char *nameBag[LENGTH],*name;//LENGTH长度的数组nameBag,数组元素类型为char*
    int count = 0,pos = -1;
    printf("请输入%d个姓名:\n",LENGTH);
    /*循环读入名字*/
    while(count< LENGTH){
        name = (char*)malloc(sizeof(char)*MAX_NAME_LENGTH);//动态开辟存储空间,名称多余的截断
        scanf("%s",name);
        name[MAX_NAME_LENGTH-1]='\0';
        nameBag[count++] = name;
    }
    /*显示输入的名称,逆序*/
    while(count--)
        printf("name[%-2d] = *%s*\n",count,nameBag[count]);
    printf("请输入待查找姓名:\n");
    name = (char*)malloc(sizeof(char)*MAX_NAME_LENGTH);
    scanf("%s",name);
    name[MAX_NAME_LENGTH-1]='\0';
    if((pos = searchMan(nameBag,name,LENGTH)) >=0){
        printf("该姓名存在,位置是 %d",pos+1);
    }else
        printf("该姓名不存在");

     count = 0;
     while(count < LENGTH){
    free(nameBag[count]);
    nameBag[count++] = NULL;
    }
 
    free(name);
    name = NULL;  
    return (0);
}
int searchMan(char*nameBag[],char *name,int bagScale){
    while(bagScale--){
        if(strcmp(nameBag[bagScale],name) == 0)
            return (bagScale);
    }
    return (-1);
}

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网