cooyk2 2022-06-07 23:10 采纳率: 66.7%
浏览 52
已结题

困惑了一下午的问题,但是检查了函数,项目3456无法输出

项目3456出不来结果,但是检查了函数也没能发现错误
1 #include <stdio.h>
#include <stdlib.h>
#include <string.h>

    int a; 
    
    
    struct datebate{    //定义的数据组 
    int  num1;             //书号
    char num2[100];     //书名
    char num3[100];     //作者 
    int  num4;            //数量
    char  jianjie[10000];//简介 
    double jg;          //价格 
    }jy[100];
    
    
    
    
    int add(int a){          //录入书号、作者、数量、价格 、简介 
    
    int i=0;
    int j=0;
    int c;
    int num1;
    int b=a;
        printf("请您输入这本书籍的相关信息_____________\n");
        for(i=a;i<100;i++){                       
    
        printf("这本书的序号:_____________\n");
        scanf("%d",&num1);
        jy[i].num1=num1;            
        printf("这本书的书名:_____________\n");
        getchar();
        gets(jy[i].num2);
        printf("这本书的作者:_____________\n");
        scanf("%s",&jy[i].num3);
        printf("这本书的数量:_____________\n");
        scanf("%d",&jy[i].num4);
        printf("这本书的价格:_____________\n");
        scanf("%lf",&jy[i].jg);
        printf("这本书的简介:_____________ (五十字以内)\n");
        getchar();
        gets(jy[i].jianjie);

        printf("您是否要继续录入信息?\n");  
        printf("【1是】        【0否】\n");   
        scanf("%d",&c);
        b++;
            if(c==0){    
                break;
            }    
    }
            printf("记录输入信息成功。");          //输入完成 
            getchar();
            getchar();
            return b; 
    }
    int cx(int e,int a){    //按照书号查询信息  
    int pd=-1;
    int i=0;
    for(i=0;i<a;i++)
    {
        if(jy[i].num1==e)       
        {
            pd=i;
            break;
        }
    }
    return pd;
    }
    
    int del(int a){        //删除book信息 
    int num5;
    int i=0;
    int pd;
    int c;
    printf("请输入要删除的书籍的书号:_____________\n");
    scanf("%d",&num5);
    pd=cx(num5,a);            
    if(pd==-1)                     
    {
        printf("要删除的书籍信息不存在\n");
    }
    else                              
    {
        printf("要删除的书籍信息:\n");
        printf("\t书号:%d\t书名:%s\t作者:%s\t数量:%d\t价格:%.2lf\t简介:%s\n",jy[pd].num1,jy[pd].num2,jy[pd].num3,jy[pd].num4,jy[pd].jg,jy[pd].jianjie); 
        printf("是否删除?\n");
        printf("【1是】        【0否】\n"); 
        scanf("%d",&c);
        if(c==0) {         
            return a;
        } 
        else{
        for(i=pd;i<a-1;i++){
        jy[i]=jy[i+1];
        }
        a--;                     
        printf("书籍信息删除成功\n");
        }
    }
    getchar();
    getchar();
    return a;
    }    
    
    void show(int a){        
        int i=0;
        if(a>0){
            for(i=0;i<a;i++){
            printf("\t书号:%d\t书名:%s\t作者:%s\t数量:%d\t价格:%.2lf\t简介:%s\n",jy[i].num1,jy[i].num2,jy[i].num3,jy[i].num4,jy[i].jg,jy[i].jianjie); 
        }
    
    }
    }
    
    
    
    void cx2(int a){           

    int i=0;
    int count=0;
    int pd;
    char num6[100];
    printf("请输入要查找书籍的书号:");   
    
        
            
            scanf("%d",&num6[i]);
            pd=cx(num6[i],a);
            if(pd==-1)
                
                printf("查找的书籍信息不存在,请重新输入书号\n");
            
        
            
            else                               
            {
                printf("该书籍的信息如下:\n\n");
                printf("\t书号:%d\t书名:%s\t作者:%s\t数量:%d\t价格:%.2lf\t简介:%s",jy[pd].num1,jy[pd].num2,jy[pd].num3,jy[pd].num4,jy[pd].jg,jy[pd].jianjie); 
                printf("\n该书籍信息查询完成,按任意键返回主菜单.....");
            }
            getchar();
            
    } 
    
    
    void xg(int a){
        int i=0;
        int count=0;
        int pd;
        int m;
        int pd2[8];
        printf("请输入要修改书籍的书号:\n");
        printf("如果此项信息需要修改,则请摁【 1 】,反之则请摁【 0 】\n"); 
        scanf("%d",&m);
        printf("这本书的书名:_____________\n");
        scanf("%d",&pd2[0]);
        if(pd2[0]==1) {
        
        getchar();
        gets(jy[m].num2);}
        printf("这本书的作则:_____________\n");
        scanf("%d",&pd2[1]);
        if(pd2[1]==1) {
        
        getchar();
        gets(jy[m].num3);}
        printf("这本书的数量:_____________\n");
        scanf("%d",&pd2[2]);
        if(pd2[2]==1){
        
        scanf("%d",&jy[m].num4);}
        printf("这本书的价格:_____________\n");
        scanf("%d",&pd2[3]);
        if(pd2[3]==1){
        
        scanf("%lf",&jy[m].jg);}
        printf("这本书的简介:_____________ (五十字以内)\n");
        scanf("%d",&pd2[4]);
        if(pd2[4]==1){
        getchar();
        gets(jy[m].jianjie);}
            printf("修改信息成功。");           
            getchar();
            getchar();
    }
    
    
    void px (){
        int j;
        int i=0;
        int min;
        int wooc;
        for(i=0;i<100;i++)
    {
           min=i;    
           for(j=i+1;j<100;j++)
    {
       if(jy[min].jg>jy[j].jg)
          min=j;
    }
        wooc=jy[min].jg;
        jy[min].jg=jy[i].jg;
        jy[i].jg=wooc;
        }
        for(i=0;i<a;i++){
            printf("\t书号:%d\t书名:%s\t作者:%s\t数量:%d\t价格:%.2lf\t简介:%s\n",jy[i].num1,jy[i].num2,jy[i].num3,jy[i].num4,jy[i].jg,jy[i].jianjie); 
        
    }}
    
    
    
    
    
    
    void caidan(){
        printf("欢迎使用小型图书管理系统\n");
        printf("本系统包括下列功能:\n");
        printf("(按下键盘上对应数字选择相应功能)\n"); 
        printf("(本系统包括:图书信息管理,图书的基本信息包括书号、书名、作者、单价、数量、简介)\n");
        printf("【1】,    书籍信息的录入                               \n");
        printf("【2】.    删除指定书号的记录                          \n");
        printf("【3】.    修改或补充指定书号的记录                     \n");
        printf("【4】.    浏览本系统的全部书籍                        \n");
        printf("【5】.    按书号查询功能                               \n");
        printf("【6】.    按单价排序功能                              \n");
        printf("【7】.    退出本系统                                  \n");                                                                         
    } 
    
    
    int main(){
        int a;
        int c=0;
        int count=0; 
        while(1)
        {
            system("cls");
            caidan();
            scanf("%d",&c);
            switch(c)
            {
                case 1:                      
                    count=add(count);
                    break;
                
                case 2:                
                    count=del(count);
                    break;
                case 3:               
                    xg(count);
                    break;
                case 4:             
                    show(count);
                    break;
                case 5:
                    cx2(count);
                    break;
                case 6:                     
                    px(count);
                    break;
                case 7:
                    printf("欢迎您再次使用本系统\n");
                    exit(0);
                    
        }
    }
    }
    
    
  • 写回答

1条回答 默认 最新

  • qfl_sdu 2022-06-08 00:11
    关注

    代码修改如下:

    #define _CRT_SECURE_NO_WARNINGS 1
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    
    struct datebate {    //定义的数据组 
        int  num1;             //书号
        char num2[100];     //书名
        char num3[100];     //作者 
        int  num4;            //数量
        char  jianjie[10000];//简介 
        double jg;          //价格 
    }jy[100];
    
    
    
    
    int add(int a) {          //录入书号、作者、数量、价格 、简介 
    
        int i = 0;
        int j = 0;
        int c;
        int num1;
        int b = a;
        printf("请您输入这本书籍的相关信息_____________\n");
        for (i = a; i < 100; i++) {
    
            printf("这本书的序号:_____________\n");
            scanf("%d", &num1);
            jy[i].num1 = num1;
            printf("这本书的书名:_____________\n");
            scanf("%s",jy[i].num2); //gets
            printf("这本书的作者:_____________\n");
            scanf("%s", jy[i].num3);
            printf("这本书的数量:_____________\n");
            scanf("%d", &jy[i].num4);
            printf("这本书的价格:_____________\n");
            scanf("%lf", &jy[i].jg);
            printf("这本书的简介:_____________ (五十字以内)\n");
            getchar();
            gets_s(jy[i].jianjie); //gets
    
            printf("您是否要继续录入信息?\n");
            printf("【1是】        【0否】\n");
            scanf("%d", &c);
            b++;
            if (c == 0) {
                break;
            }
        }
        printf("记录输入信息成功。");          //输入完成 
        getchar();
        getchar();
        return b;
    }
    int cx(int e, int a) {    //按照书号查询信息  
        int pd = -1;
        int i = 0;
        for (i = 0; i < a; i++)
        {
            if (jy[i].num1 == e)
            {
                pd = i;
                break;
            }
        }
        return pd;
    }
    
    int del(int a) {        //删除book信息 
        int num5;
        int i = 0;
        int pd;
        int c;
        printf("请输入要删除的书籍的书号:_____________\n");
        scanf("%d", &num5);
        pd = cx(num5, a);
        if (pd == -1)
        {
            printf("要删除的书籍信息不存在\n");
        }
        else
        {
            printf("要删除的书籍信息:\n");
            printf("\t书号:%d\t书名:%s\t作者:%s\t数量:%d\t价格:%.2lf\t简介:%s\n", jy[pd].num1, jy[pd].num2, jy[pd].num3, jy[pd].num4, jy[pd].jg, jy[pd].jianjie);
            printf("是否删除?\n");
            printf("【1是】        【0否】\n");
            scanf("%d", &c);
            if (c == 0) {
                return a;
            }
            else {
                for (i = pd; i < a - 1; i++) {
                    jy[i] = jy[i + 1];
                }
                a--;
                printf("书籍信息删除成功\n");
            }
        }
        getchar();
        getchar();
        return a;
    }
    
    void show(int a) {
        int i = 0;
        for (i = 0; i < a; i++) {
            printf("\t书号:%d\t书名:%s\t作者:%s\t数量:%d\t价格:%.2lf\t简介:%s\n", jy[i].num1, jy[i].num2, jy[i].num3, jy[i].num4, jy[i].jg, jy[i].jianjie);
        }
        system("pause");
    }
    
    
    
    void cx2(int a) {
    
        int i = 0;
        int count = 0;
        int pd;
        int num6[100];
        printf("请输入要查找书籍的书号:");
    
    
    
        scanf("%d", &num6[i]);
        pd = cx(num6[i], a);
        if (pd == -1)
    
            printf("查找的书籍信息不存在,请重新输入书号\n");
    
    
    
        else
        {
            printf("该书籍的信息如下:\n\n");
            printf("\t书号:%d\t书名:%s\t作者:%s\t数量:%d\t价格:%.2lf\t简介:%s", jy[pd].num1, jy[pd].num2, jy[pd].num3, jy[pd].num4, jy[pd].jg, jy[pd].jianjie);
            printf("\n该书籍信息查询完成,按任意键返回主菜单.....");
        }
        system("pause");
    
    }
    
    
    void xg(int a) {
        int i = 0;
        int count = 0;
        int pd;
        int m;
        int pd2[8];
        printf("请输入要修改书籍的书号:\n");
        scanf("%d", &m);
    
        //根据书号,查找其所在位置
        for (i = 0; i < a; i++)
        {
            if (jy[i].num1 == m)
                break;
        }
        if (i == a)
        {
            printf("查无此书\n");
            return;
        }
    
    
        printf("如果此项信息需要修改,则请摁【 1 】,反之则请摁【 0 】\n");
        scanf("%d", &pd2[0]);
        if (pd2[0] == 0)
        {
            return;
        }
    
        printf("这本书的书名:_____________\n");
        
        scanf("%s",jy[i].num2);
    
    
        printf("这本书的作者:_____________\n");
        scanf("%s",jy[i].num3);
    
       
        printf("这本书的数量:_____________\n");
        scanf("%d", &jy[i].num4);
        
    
        printf("这本书的价格:_____________\n");
        scanf("%lf", &jy[i].jg);
    
       
        printf("这本书的简介:_____________ (五十字以内)\n");
        scanf("%s", jy[i].jianjie);
        
        printf("修改信息成功。");
        getchar();
        getchar();
    }
    
    
    void px(int a) {
        int j;
        int i = 0;
        int min;
        int wooc;
        for (i = 0; i < 100; i++)
        {
            min = i;
            for (j = i + 1; j < 100; j++)
            {
                if (jy[min].jg > jy[j].jg)
                    min = j;
            }
            wooc = jy[min].jg;
            jy[min].jg = jy[i].jg;
            jy[i].jg = wooc;
        }
        for (i = 0; i < a; i++) {
            printf("\t书号:%d\t书名:%s\t作者:%s\t数量:%d\t价格:%.2lf\t简介:%s\n", jy[i].num1, jy[i].num2, jy[i].num3, jy[i].num4, jy[i].jg, jy[i].jianjie);
    
        }
        system("pause");
    }
    
    
    
    
    
    
    void caidan() {
        printf("欢迎使用小型图书管理系统\n");
        printf("本系统包括下列功能:\n");
        printf("(按下键盘上对应数字选择相应功能)\n");
        printf("(本系统包括:图书信息管理,图书的基本信息包括书号、书名、作者、单价、数量、简介)\n");
        printf("【1】,    书籍信息的录入                               \n");
        printf("【2】.    删除指定书号的记录                          \n");
        printf("【3】.    修改或补充指定书号的记录                     \n");
        printf("【4】.    浏览本系统的全部书籍                        \n");
        printf("【5】.    按书号查询功能                               \n");
        printf("【6】.    按单价排序功能                              \n");
        printf("【7】.    退出本系统                                  \n");
    }
    
    
    int main() {
        int count = 0;
        int c;
        while (1)
        {
            system("cls");
            caidan();
            scanf("%d", &c);
            switch (c)
            {
            case 1:
                count = add(count);
                break;
    
            case 2:
                count = del(count);
                break;
            case 3:
                xg(count);
                break;
            case 4:
                show(count);
                break;
            case 5:
                cx2(count);
                break;
            case 6:
                px(count);
                break;
            case 7:
                printf("欢迎您再次使用本系统\n");
                exit(0);
    
            }
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月16日
  • 已采纳回答 6月8日
  • 创建了问题 6月7日

悬赏问题

  • ¥60 pb数据库修改或者求完整pb库存系统,需为pb自带数据库
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路