sjxjcbcck 2022-11-10 23:31 采纳率: 66.7%
浏览 55
已结题

关于死循环不输出问题,如何解决?

printf不输出数据方法
查询功能无限循环
无法输出
在查询这个功能里没办法输出数据
实在是找不到问题在哪里,没有一点头绪{:9_225:}

#include <stdio.h>
#include<string.h> 
#include <stdlib.h>
#define len 15 
struct Goods
{
    int id;//产品编号
    char kudan1[len+1];//入库单号 
    char kudan2[len+1];//出库单号 
    char name;//名称
    int num;//数量
    float cost;//成本
    float price;//售价 
    float profit;//利润 
        
}goods[50],rk,ck,cx;


void input();       
void output(); 
void searchr();
void menu(); 

int main(){

    int command = 0;  //command用于存储管理员命令对应的菜单数字 
    int a = 1;      //用于判断是否退出系统 
    while(a){       //利用while循环实现对管理系统进行多种操作 
        printf("1.入库2.出库3.查询\n");
        printf("请输入操作对应的数字!\n\n");
        scanf("%d", &command);
        switch(command){
            case(1):        //进库 
                input();
                break;
            case(2):        //出库 
                output();
                break;
            case(3):        //查询库存 
                searchr(); 
                break;
        
            default:
                printf("请输入正确的数字!\n\n");   //提示管理员重新输入正确的菜单数字 
                 break;
        }
    }
    printf("您已退出可口可乐广东分公司仓库管理系统!");   //提示管理员成功退出系统 
    return 0;
} 


int S=0;//产品种类 
void input()//入库 
{
    int a,i=0,j=0;
    printf("请输入入库产品种类:\n");
    scanf("%d",&a);
    for(j=0;j<a;j++)
    {    printf("请输入第%d个产品信息\n",(j+1));
        printf("产品名称:");
        scanf("%s",&goods[i].name);        
        printf("产品编号:");
        scanf("%d",&goods[i].id);
        printf("例:2022年1月填为202201\n");
        printf("入库单号:\n");
        scanf("%s",&goods[i].kudan1);
        printf("数量:");
        scanf("%d",&goods[i].num);
        printf("请再输入一次\n");
        scanf("%d",&rk.num);

        int flag = 0;  
        for(i = 0; i <S; i++)
        {  
            if(rk.id==goods[i].id)
            {flag = 1;
            goods[i].num =rk.num+goods[i].num;
            break;
            }
        }
            if (flag == 0)
            {
            S++;
            }
        }        
}

void output()//出库 
{
    int b,j=0,i=0;
    printf("请输入本次出库产品种类数:\n"); 
    scanf("%d", &b);
    for(j=0;j<b;j++)
    {
        printf("请输入出库单号\n");
        scanf("%s",&goods[i].kudan2);
        printf("\n请输入第%d个产品编号:\n",(j+1));
        scanf("%d",&ck.id);
        printf("请输入出库数量:\n");
        scanf("%d",&ck.num);
        int flag=0;
        for(i=0;i<S;i++)
        {
            int t=0;
            if(ck.id==goods[i].id)
            {
                flag=1;
                if(goods[i].num==ck.num)
                {
                    printf("库存清零\n");
                    S--;
                }
                else if((goods[i].num-ck.num)<0)
                printf("库存不足,出库失败\n");
                else
                {
                    goods[i].num=(goods[i].num-ck.num);
                    printf("出库成功\n");
                }
                break;
            }
        }
    }
}

void searchr()
{
    int i,s,flag;
    char c[90];
    printf("1.查询入库单\n");
    printf("2.查询出库单\n");
    printf("3.退出菜单\n");
    while(1){
    printf("请选择编号:");
    scanf("%d",&s);
    flag=0;
    switch(s){
    case 1:
    printf("请输入要查询入库单号:\n");
    scanf("%s",&c);
    for(i=0;i<S;i++)
    if(strcmp(goods[i].kudan1,c)==0) {
    flag=1;
    printf("入库单号  编号  名称  数量  成本\n");
    printf("%6s%6d%6s%6d%6.1f\n",goods[i].kudan1,goods[i].id ,goods[i].name ,goods[i].num ,goods[i].cost);}
    if(flag==0)
    printf("该单号不存在!\n");
    break;
    case 2:
    printf("请输入要查询出库单号:\n");
    scanf("%s",&c);
    for(i=0;i<S;i++)
    if(strcmp(goods[i].kudan2,c)==0){
    flag=1;
    printf("出库单号  编号  名称  数量  利润\n");
    goods[i].profit=goods[i].price-goods[i].cost;
    printf("%6s%6d%6s%6d%6.1f\n",goods[i].kudan2,goods[i].id ,goods[i].name ,goods[i].num ,goods[i].profit);}
    if(flag==0)
    printf("该单号不存在!\n");
    break;
    case 3:
    return;
    default:
    printf("999");
    }
    
  }
}
  • 写回答

2条回答 默认 最新

  • 七号鹅毛 2022-11-11 02:01
    关注

    先试试把这两个改一改?kudan不是char数组嘛,然后后面那个应该是kudan1,明天上电脑俺再看看

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月11日
  • 已采纳回答 11月11日
  • 修改了问题 11月11日
  • 修改了问题 11月11日
  • 展开全部

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装