首页 新闻 会员 周边

c语言结构体出现了问题

0
悬赏园豆:40 [已解决问题] 解决于 2022-03-03 10:21

include<stdio.h>

struct Date
{
int year;
int month;
int day;
} date;

struct Book
{

char title[128];
char author[40];
float price;
struct Date date;
char publisher[40];

} b1,b2,book;

/这是输入函数/struct Book getinput(struct Book book);
/这是打印函数/void printBook(struct Book book);

struct Book getinput(struct Book book)
{
printf("请输入书名:");
scanf("%s",book.title);
printf("请输入作者:");
scanf("%s",book.author);
printf("请输入售价:");
scanf("%f",book.price);
printf("请输入出版日期:");
scanf("%d-%d-%d",book.date.year,book.date.month,book.date.day);
printf("请输入出版社:");
scanf("%s",book.publisher);

return book;

}

void printBook(struct Book book)
{
printf("书名:%s\n",book.title);
printf("作者:%s\n",book.author);
printf("售价:%.2f\n",book.price);
printf("出版日期:%d-%d-%d\n",book.date.year,book.date.month,book.date.day);
printf("出版社:%s\n",book.publisher);
}

int main(void)
{
printf("请输入第一本书:");
b1 = getinput(b1);
putchar("\n");
printf("请输入第二本书:");
b2 = getinput(b2);

printf("开始打印。。。。。");

printf("打印第一本书的信息");
printBook(b1);
putchar("/n");
printf("打印第二本书的信息");
printBook(b2);

return 0;

}

为什么在这里他就不动了?我不知道为啥不能插入代码,所以有些难看

Eason小白的主页 Eason小白 | 初学一级 | 园豆:100
提问于:2022-03-02 22:41
< >
分享
最佳答案
0
#include<stdio.h>

struct Date
{
    int year;
    int month;
    int day;
} date;

struct Book
{
    char title[128];
    char author[40];
    float price;
    struct Date date;
    char publisher[40];
} b1, b2, book;

/* 这是输入函数 */ struct Book getinput(struct Book book);
/* 这是打印函数 */ void printBook(struct Book book);

struct Book getinput(struct Book book)
{
    printf("请输入书名:");
    scanf("%s", book.title);
    printf("请输入作者:");
    scanf("%s", book.author);
    printf("请输入售价:");
    scanf("%f", &book.price);
    printf("请输入出版日期:");
    scanf("%d-%d-%d", &book.date.year, &book.date.month, &book.date.day);
    printf("请输入出版社:");
    scanf("%s", book.publisher);

    return book;
}

void printBook(struct Book book)
{
    printf("书名:%s\n", book.title);
    printf("作者:%s\n", book.author);
    printf("售价:%.2f\n", book.price);
    printf("出版日期:%d-%d-%d\n", book.date.year, book.date.month, book.date.day);
    printf("出版社:%s\n", book.publisher);
}

int main(void)
{
    printf("请输入第一本书:");
    b1 = getinput(b1);
    putchar('\n');
    printf("请输入第二本书:");
    b2 = getinput(b2);

    printf("\n开始打印。。。。。\n");

    printf("打印第一本书的信息\n");
    printBook(b1);
    putchar('\n');
    printf("打印第二本书的信息\n");
    printBook(b2);

    return 0;
}
收获园豆:30
mkckr0 | 菜鸟二级 |园豆:248 | 2022-03-03 01:01

在打印这个出版日期的时候,为什么要656-565-656这样子加个-,而不能像这样3435 324 3424,在中间加空格

Eason小白 | 园豆:100 (初学一级) | 2022-03-03 10:00
其他回答(1)
0

scanf没用明白,这个格式就是个匹配,你加空格是匹配不到的。这里提问题使用markdown,所以你提问题和回答都是使用markdown的,学了它你就会了。

收获园豆:10
寂静的羽夏 | 园豆:1781 (小虾三级) | 2022-03-03 10:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册