| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#include <stdio.h> 
#include <stdlib.h> 
// 日期结构体 
typedef struct date 
{ 
    int year; 
    int month; 
    int day; 
}Date; 
 
 
//图书结构体 
typedef struct book 
{ 
    char name[40];  //书名 
    char introduce[200]; //介绍 
    char author[20]; //作者 
    Date date; //发布日期 
}Book; 
 
 
 
Book book[100] = {}; 
 
void ENTRY(Book *book); //申明一个录入函数 
void FRINTFLIBRARY(Book *book); //打印图书馆信息 
 
 
void ENTRY(Book *book) 
{ 
    printf("请输入书名:"); 
    scanf("%s",book->name); 
    printf("请输入介绍:"); 
    scanf("%s",book->introduce); 
    printf("请输入作者:"); 
    scanf("%s",book->author); 
    printf("请输入出版日期:"); 
    scanf("%d-%d-%d",&book->date.year,&book->date.month,&book->date.day); 
} 
 
 
void FRINTFLIBRARY(Book *book) 
{ 
    printf("书名%s\n",book->name); 
    printf("介绍%s\n",book->introduce); 
    printf("作者%s\n",book->author); 
    printf("出版日期%d-%d-%d\n",book->date.year,book->date.month,book->date.day); 
} 
 
 
 
 
 
int main() 
{ 
    char choos; 
    int i; 
    int p = 0; //第几本书的信息 
    while(1) 
    { 
        printf("是否要开始录入第%d本书的信息(y/n)",p + 1); 
        scanf("%c",&choos); 
        if(choos == 'y' || choos == 'Y') 
        { 
            printf("请输入第%d本书的信息:\n",p + 1); 
            ENTRY(&book[p]); 
            p++; 
        } 
       else if(choos == 'n' || choos == "N") 
       { 
           break; 
       } 
       else 
       { 
           printf("输入的字母不合法\n"); 
       } 
 
    } 
    for(i = 0; i < p; i++) 
    { 
        printf("第%d本书的信息如下\n",i + 1); 
        FRINTFLIBRARY(&book[i]); 
        printf("\n\n"); 
    } 
 
 
 
    return 0; 
} 
 
 
 
想问下为啥运行后会出现多打一行的bug
  if(choos == 'y' || choos == 'Y') 
        { 
            printf("请输入第%d本书的信息:\n",p + 1); 
            ENTRY(&book[p]); 
            p++; 
            getchar();        //这里加上一句,可以解决问题 
        } 
 
 
 |   
 
 
 
 |