爱喝的三明治 发表于 2022-11-10 21:55:36

printf不输出数据 死循环

本帖最后由 爱喝的三明治 于 2022-11-10 23:34 编辑

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

#include <stdio.h>
#include<string.h>
#include <stdlib.h>

struct Goods
{
        int id;//产品编号
        char kudan1;//入库单号
        char kudan2;//出库单号
        char name;//名称
        int num;//数量
        float cost;//成本
        float price;//售价
        float profit;//利润
               
}goods,rk,ck,cx;


void input();      
void output();
void search();
void menu();

int main(){

        int command = 0;//command用于存储管理员命令对应的菜单数字
        int a = 1;      //用于判断是否退出系统
        while(a){       //利用while循环实现对管理系统进行多种操作
            printf("请输入操作对应的数字!如需退出,请输入5!\n\n");
          scanf("%d", &command);
                switch(command){
                  case(1):      //进库
                          input();
                          break;
                  case(2):      //出库
                          output();
                    break;
                  case(3):      //查询库存
                          search();
                        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.name);               
          printf("产品编号:");
          scanf("%d",&goods.id);
          printf("例:2022年1月填为202201\n");
                printf("入库单号:\n");
                scanf("%s",&goods.kudan1);
                printf("数量:");
                scanf("%d",&goods.num);
                printf("请再输入一次\n");
                scanf("%d",&rk.num);

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

void output()//出库
{
}

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





jackz007 发表于 2022-11-10 22:12:03

本帖最后由 jackz007 于 2022-11-10 22:22 编辑

      39 行有错误,必须修改
void search()
{
. . . . . .
      switch(s) {
                case 1:
. . . . . .
                if(flag == 0)       // 【错误】:39 行

爱喝的三明治 发表于 2022-11-10 22:22:37

jackz007 发表于 2022-11-10 22:12


什么意思哦?{:9_241:}

jackz007 发表于 2022-11-10 22:24:21

本帖最后由 jackz007 于 2022-11-10 22:27 编辑

爱喝的三明治 发表于 2022-11-10 22:22
什么意思哦?

         你代码的 39 行看不出问题?
         提醒一下,判断相等要用 == ,不可以用 =,你最先贴出的代码在 case 2 的语句块内也存在完全一样的问题,还是 if (flag = 0)

爱喝的三明治 发表于 2022-11-10 22:32:37

jackz007 发表于 2022-11-10 22:24
你代码的 39 行看不出问题?
         提醒一下,判断相等要用 == ,不可以用 =,你最先贴出 ...

已改,但是还有问题啊

jackz007 发表于 2022-11-10 22:42:07

爱喝的三明治 发表于 2022-11-10 22:32
已改,但是还有问题啊

          要想解决问题,那就把代码贴全,代码必须要处于可编译、可运行状态。

爱喝的三明治 发表于 2022-11-10 22:43:06

jackz007 发表于 2022-11-10 22:42
要想解决问题,那就把代码贴全,代码必须要处于可编译、可运行状态。

收到,立马贴
页: [1]
查看完整版本: printf不输出数据 死循环