标题:写出了,不知带错在哪里了,求大神改正
只看楼主
清出平凡
Rank: 1
来 自:中国
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-5-5
结帖率:100%
已结贴  问题点数:20 回复次数:4 
写出了,不知带错在哪里了,求大神改正
(1)置一个结构体类型date,成员包括:年月,设置一个结构体类型book,成员包括书名,作者,价格,出版日期(用 struct date  pubday表示)
(2)设置一个结构体数组,包含3本书,初始化3本书的相关信息, 其中初始化要求从键盘终端输入数据。
(3)编写输出函数print,设置一个指针p指向该数组,并采用三种表不同的表示结构体成员的方式输出书名,价格,出版日期。
(4)编写查找函数search,输入某书名,查找是否有这本书,如果有,显示书名作者,没有,显示找不到。
(5)编写函数change,修改某本书的名字价格
程序代码:
#include<stdio.h>
#include<conio.h>
#include<string.h>
struct date//声明结构体类型struct date
{
int year;//出版年份
int month;//出版月份
};
struct book//声明结构体类型struct book
{
char name[20];//书名
char author[20];//作者
int price;//价格
struct date pubday;//出版日期
}book[3];//定义结构体组

void print(struct book book[])//定义print输出函数
{
int i;
struct book *p=book;定义指向struct book类型数据的指针变量p
for(i=0;i<3;i++)
{
printf("%s  ",book[i].name);
printf("%f  ",p->price);
printf("%d%d",(*p).pubday.year,(*p).pubday.month);
p++;
printf("\n");
}
}
void search(struct book book[])//定义查找函数search
{
int i;
char bookname[20];
scanf("%s",bookname);//输入需要查找的书名
for(i=0;i<3;i++)//查找是否有这本书
if(strcmp(bookname,book[i].name)==0)
{
printf("%s",book[i].author);//如果有这本书则输出作者
break;
}
if(i>3)
printf("Don't find");//没有这本书则输出没有
}
void change(struct book book[])//定义修改函数change
{
char a[20];
int b,n;
scanf("%d",&n);//修改第n本书的信息
scanf("%s",&a);//输入修改后的名字
scanf("%d",&b);//输入修改后该书的价格
strcpy(book[n].name,a);//修改名字
book[n].price=b;//修改价格
printf("%s%d",book[n].name,book[n].price);//输出修改后该书的信息
}
void main()
{
int i;
clrscr();
for(i=0;i<3;i++)//对结构体数组初始化
scanf("%s%s%f%d%d",book[i].name,book[i].author,&book[i].price,&book[i].pubday.year,&book[i].pubday.month);
print(book);
search(book);
change(book);
}
搜索更多相关主题的帖子: search change 结构体 color 键盘 
2016-05-13 09:24
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:0 
struct book *p=book;定义指向struct book类型数据的指针变量p
这是注释还是你发帖加的?
另外int price;//价格这个定义在代码中一会float一会int,要统一一下。

你的错误具体是什么?
2016-05-13 09:37
清出平凡
Rank: 1
来 自:中国
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-5-5
得分:0 
回复 楼主 清出平凡
哦哦,那是注释,具体错误是数不出想要得到的结果
2016-05-13 09:50
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:20 
注释没有加//,数据类型不一致,清屏函数 clrscr();这个建议清屏函数用system("cls")兼容性好,在stdlib.h中。clrscr貌似只在turbo C下才有要引用conio.h,你试试这个,没调试,你自己试下,不过你的初始界面不是很友好,除了自己估计没人知道开始要输入什么数据,所以建议在清屏函数后面,加一些提示
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
struct date//声明结构体类型struct date
{
    int year;//出版年份
    int month;//出版月份
};
struct book//声明结构体类型struct book
{
    char name[20];//书名
    char author[20];//作者
    float price;//价格
    struct date pubday;//出版日期
}book[3];//定义结构体组

void print(struct book book[])//定义print输出函数
{
    int i;
    struct book *p=book;    //定义指向struct book类型数据的指针变量p
    for(i=0;i<3;i++)
    {
        printf("%s  ",book[i].name);
        printf("%f  ",p->price);
        printf("%d%d",(*p).pubday.year,(*p).pubday.month);
        p++;
        printf("\n");
    }
}
void search(struct book book[])//定义查找函数search
{
    int i;
    char bookname[20];
    scanf("%s",bookname);//输入需要查找的书名
    for(i=0;i<3;i++)//查找是否有这本书
    if(strcmp(bookname,book[i].name)==0)
    {
        printf("%s",book[i].author);//如果有这本书则输出作者
        break;
    }
    if(i>3)
        printf("Don't find");//没有这本书则输出没有
}
void change(struct book book[])//定义修改函数change
{
    char a[20];
    int b,n;
    scanf("%d",&n);//修改第n本书的信息
    scanf("%s",&a);//输入修改后的名字
    scanf("%f",&b);//输入修改后该书的价格
    strcpy(book[n].name,a);//修改名字
    book[n].price=b;//修改价格
    printf("%s%f",book[n].name,book[n].price);//输出修改后该书的信息
}
int main()
{
    int i;
    system("cls");
    for(i=0;i<3;i++)//对结构体数组初始化
        scanf("%s%s%f%d%d",book[i].name,book[i].author,&book[i].price,&book[i].pubday.year,&book[i].pubday.month);
    print(book);
    search(book);
    change(book);
    return 0;
}


[此贴子已经被作者于2016-5-13 10:02编辑过]

2016-05-13 09:57
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
回复 3楼 清出平凡
输出不是想要的结果,应该语法没问题,主要是算法问题,再想想看
2016-05-13 10:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-464751-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.192979 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved