在这个小程序中的错误看不懂了!!!#include<stdio.h>
#include<stdlib.h>#define MAX 100;struct addr{
char name[30];
char street[40];
char city[20];
char state[3];
unsigned long int zip;
}addr_list[MAX];void init_list(void),enter(void);
void delete(void),list(void);
int menu_select(void),find_free(void);int main(void)
{
char choice; init_list();
for(;;){
choice=menu_select();
switch(choice){
case 1: enter();
break;
case 2: delete();
break;
case 3: list();
break;
case 4: exit(0);
}
}
return 0;
}void init_list(void)
{
register int t;
for(t=0; t<MAX; ++t)
addr_list[t].name[0]='\0';
}int menu_select(void)
{
char s[80];
int c;
printf("1,enter a name \n");
printf("2.delete a name \n");
printf("3.list the file\n");
printf("4.quit\n");
do{
printf("\n enter your choice:");
gets(s);
c=atoi(s);
}while(c<0||c>4);
return c;
}
void enter(void)
{
int slot;
char s[80];
slot=find_free();
if(slot==-1){
printf("\nlist full");
return ;
}
printf("enter name :");
gets(addr_list[slot].name); printf("enter street:");
gets(addr_list[slot].city); printf("enter state:");
gets(addr_list[slot].state);

printf("enter zip");
gets(s);
addr_list[slot].zip=strtoul(s,'\0',10);
}int find_free(void)
{
register int t;
for( t=0; addr_list[t].name[0]&&t<MAX; ++t) ;
if( t==MAX ) return -1;
return t;
}void delete(void)
{
register int slot;
char s[80];
printf("enter record#:");
gets(s);
slot=atoi(s);
if(slot>=0 && slot< MAX)
addr_list[slot].name[0]='\0';
}
void list(void)
{
register int t;
for (t=0;t<MAX;++t){
printf("%s\n",addr_list[t].name);
printf("%s\n",addr_list[t].street);
printf("%s\n",addr_list[t].city);
printf("%s\n",addr_list[t].state);
printf("%lu\n",addr_list[t].zip);
}
}
printf("\n");
}

解决方案 »

  1.   

    无编译错误的代码:
    #include<stdio.h>
    #include<stdlib.h>#define MAX 100struct addr{
    char name[30];
    char street[40];
    char city[20];
    char state[3];
    unsigned long int zip;
    };
    addr addr_list[MAX];void init_list(void),enter(void);
    void delete1(void),list(void);
    int menu_select(void),find_free(void);int main(void)
    {
    char choice; init_list();
    for(;;){
    choice=menu_select();
    switch(choice){
    case 1: enter();
    break;
    case 2: delete1();
    break;
    case 3: list();
    break;
    case 4: exit(0);
    }
    }
    return 0;
    }void init_list(void)
    {
    register int t;
    for(t=0; t<MAX; ++t)
    addr_list[t].name[0]='\0';
    }int menu_select(void)
    {
    char s[80];
    int c;
    printf("1,enter a name \n");
    printf("2.delete a name \n");
    printf("3.list the file\n");
    printf("4.quit\n");
    do{
    printf("\n enter your choice:");
    gets(s);
    c=atoi(s);
    }while(c<0||c>4);
    return c;
    }
    void enter(void)
    {
    int slot;
    char s[80];
    slot=find_free();
    if(slot==-1){
    printf("\nlist full");
    return ;
    }
    printf("enter name :");
    gets(addr_list[slot].name); printf("enter street:");
    gets(addr_list[slot].city); printf("enter state:");
    gets(addr_list[slot].state);

    printf("enter zip");
    gets(s);
    addr_list[slot].zip=strtoul(s,'\0',10);
    }int find_free(void)
    {
    register int t;
    for( t=0; addr_list[t].name[0]&&t<MAX; ++t) ;
    if( t==MAX ) return -1;
    return t;
    }void delete1(void)
    {
    register int slot;
    char s[80];
    printf("enter record#:");
    gets(s);
    slot=atoi(s);
    if(slot>=0 && slot< MAX)
    addr_list[slot].name[0]='\0';
    }
    void list(void)
    {
    register int t;
    for (t=0;t<MAX;++t){
    printf("%s\n",addr_list[t].name);
    printf("%s\n",addr_list[t].street);
    printf("%s\n",addr_list[t].city);
    printf("%s\n",addr_list[t].state);
    printf("%lu\n",addr_list[t].zip);
    }
    printf("\n");
    }
    逻辑错误没有检查
      

  2.   

    谢谢大家了!
    真不好意思这是系统的信息
    --------------------Configuration: 7_2 - Win32 Debug--------------------
    Compiling...
    7_2.c
    E:\源程序\jiegou\7_2.c(12) : error C2143: syntax error : missing ']' before ';'
    E:\源程序\jiegou\7_2.c(12) : error C2059: syntax error : ']'
    E:\源程序\jiegou\7_2.c(41) : error C2143: syntax error : missing ')' before ';'
    E:\源程序\jiegou\7_2.c(41) : error C2059: syntax error : ')'
    E:\源程序\jiegou\7_2.c(42) : error C2146: syntax error : missing ';' before identifier 'addr_list'
    E:\源程序\jiegou\7_2.c(88) : error C2143: syntax error : missing ')' before ';'
    E:\源程序\jiegou\7_2.c(88) : error C2059: syntax error : ')'
    E:\源程序\jiegou\7_2.c(89) : error C2143: syntax error : missing ')' before ';'
    E:\源程序\jiegou\7_2.c(89) : error C2059: syntax error : ')'
    E:\源程序\jiegou\7_2.c(100) : error C2143: syntax error : missing ')' before ';'
    E:\源程序\jiegou\7_2.c(100) : error C2059: syntax error : ')'
    E:\源程序\jiegou\7_2.c(108) : error C2143: syntax error : missing ')' before ';'
    E:\源程序\jiegou\7_2.c(108) : error C2059: syntax error : ')'
    E:\源程序\jiegou\7_2.c(108) : error C2143: syntax error : missing ';' before '{'
    E:\源程序\jiegou\7_2.c(116) : error C2143: syntax error : missing ')' before 'string'
    E:\源程序\jiegou\7_2.c(116) : error C2143: syntax error : missing '{' before 'string'
    E:\源程序\jiegou\7_2.c(116) : error C2059: syntax error : '<Unknown>'
    E:\源程序\jiegou\7_2.c(116) : error C2059: syntax error : ')'
    E:\源程序\jiegou\7_2.c(117) : error C2059: syntax error : '}'
    Error executing cl.exe.7_2.obj - 19 error(s), 0 warning(s)
      

  3.   

    addr addr_list[MAX];
    改为 struct addr addr_list[MAX];
    或者在定义addr时使用typedef