标题:求大神帮我改一下,有错误,还有就是goto语句也改了,不用goto了
取消只看楼主
weisx
Rank: 1
来 自:吉林
等 级:新手上路
帖 子:20
专家分:0
注 册:2016-2-29
结帖率:100%
已结贴  问题点数:20 回复次数:2 
求大神帮我改一下,有错误,还有就是goto语句也改了,不用goto了
题目:书店存货清单
书店通常使用个人电脑设置一个清单来管理书籍的存货情况,该清单记录每本书籍的书名,作者,出版社,在清单中的位置等信息。当顾客想要买某本书时,只要输入书籍的名称和作者,系统就会显示该书籍是否在清单中,如果书籍在清单中,系统会显示书籍的详细信息以及库存数量,如果不在清单中,也会显示相应的提示信息。如果顾客想买的书籍数量在库存的范围内,系统会计算总价格并显示出来,否则,会提示“所需数量不在库存范围内”。
根据以上的分析,编程要求:
一、用结构体自行定义几本书籍,要求包括书籍名称,作者,出版社,出版日期,价格,在目录中的位置;
二、当从键盘输入某本书的名称和作者姓名,如果能查询到则显示该书籍的所有信息,并提示“请输入所需数量”,如果所需数量在库存范围内,则显示总价,否则,显示“所需数量不在库存范围内”,接着继续提示顾客是否还想买其他书籍,如果输入“y”或“Y”表示继续输入下一本书的名称和作者姓名,进行下一轮查询;如果不能查询到该书籍,则显示“谢谢,再见!”,依次类推,不断循环。
#include<stdio.h>
#include<string.h>
int cmp(char str0[],char str1[])       //比较两个字符串是否相等,相等则返回0,否则返回非0
{
    int i;
    for(i=0;str0[i]!=0&&str1[i]!=0&&str0[i]==str1[i];i++);
    return str0[i]-str1[i];
}
void main()
{
    char sm[100],c;              //sm[100]为储存书名的数组,c为是否继续查找书籍的依据,当其为y或Y是时,继续查找,否则为退出查找
    int i=0,n=0,flag=0,j=0;      //i在后面的for语句中计数用,n用来储存所需同种书籍的数量,j用来计数,以其为5时作为提示未找到书籍的依据
    struct kc
    {
        char sm[100];
        char zz[100];
        char cbs[100];
        long cbrq;
        double jg;
        int wz;
        int sl;
    }                       //定义储存书籍资料的结构体数组,依次为书籍名称,作者,出版社,出版日期,价格,在目录中的位置
    struct kc a[5]={"c程序设计","谭浩强","清华大学出版社",20100604,33.00,1,100},{"代码的未来","松本行弘","人民邮电出版社",20130501,79.00,3,100},{"高等数学","同济大学数学系","高等教育出版社",20070606,29.40,2,100},{"51单片机典型应用开发范例大全","中国铁道出版社","郑锋",20111001,79.00,5,100},{"51单片机入门开发扩展全攻略","郭天祥",20090101,87.00,4,100};
}
flag1:printf("请输入书名\n");              //书籍查找与显示书籍资料模块
      fflush(stdin);
      gets(sm);
      j=0;                  //未找到书籍而跳到这里时使j清零,防止当再次没找到书籍时因j已大于5而无法进入最后的if语句,即无法得到未查找到的提示
      for(i=0;i<5;i++)
      {
          j++;              //当j加到5时则说明没有找到书籍
          if(cmp(a[i].sm,sm)==0
          {
              printf("书名");
              puts(a[i].sm);
              printf("作者");
              puts(a[i].zz);
              printf("出版社");
              puts(a[i].cbs);
              printf("出版日期%d\n",a[i].cbrq);
              printf("价格%lf\n",a[i].jg);
              printf("位置%d\n",a[i].wz);
              printf("库存%d\n",a[i].sl);
              printf("请输入所需数量\n");
              fflush(stdin);
              scanf("%d",&n);
              if(n<=a[i].sl)
                  printf("总价为%lf\n",(n*a[i].jg));
              else
                  printf("所需数量不在库存范围内\n");
                  printf("是否还想要买其他书籍?(是单击Y或y,否双击回车键)\n");
              fflush(stdin);
              scanf("%c",&c);
              if(c=='Y'||c=='y')
                  goto flsg1;
              else
              {
                  j=0;            //当要退出时使j清零,防止当所找书籍位置为5时跳出for语句因j也为5而误进入下面的if语句
                  printf("谢谢,再见!\n");
              }
          }
      }
          if(j==5)    //查找失败提示模块
          {
              j=0;
              printf("未查找到该书籍,是否还想买其他书籍?(是Y或y否N或n)\n");
              fflush(stdin);   //清空输入缓存,防止干扰下次输入scanf("%c",&);
              if(c=='y'||c=='Y')
                  goto flag1;
              else
              {
                  printf("谢谢,再见!\n");
              }
          }
         
搜索更多相关主题的帖子: 个人电脑 提示信息 详细信息 出版社 结构体 
2016-03-05 22:36
weisx
Rank: 1
来 自:吉林
等 级:新手上路
帖 子:20
专家分:0
注 册:2016-2-29
得分:0 
回复 4楼 TonyDeng
刚开始学,什么都不懂,求大神指导一下
2016-03-06 17:59
weisx
Rank: 1
来 自:吉林
等 级:新手上路
帖 子:20
专家分:0
注 册:2016-2-29
得分:0 
回复 6楼 grmmylbs
完美运行,谢谢
2016-03-09 08:24



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




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

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