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:22 编辑
39 行有错误,必须修改
void search()
{
. . . . . .
switch(s) {
case 1:
. . . . . .
if(flag == 0) // 【错误】:39 行 jackz007 发表于 2022-11-10 22:12
什么意思哦?{:9_241:} 本帖最后由 jackz007 于 2022-11-10 22:27 编辑
爱喝的三明治 发表于 2022-11-10 22:22
什么意思哦?
你代码的 39 行看不出问题?
提醒一下,判断相等要用 == ,不可以用 =,你最先贴出的代码在 case 2 的语句块内也存在完全一样的问题,还是 if (flag = 0) jackz007 发表于 2022-11-10 22:24
你代码的 39 行看不出问题?
提醒一下,判断相等要用 == ,不可以用 =,你最先贴出 ...
已改,但是还有问题啊 爱喝的三明治 发表于 2022-11-10 22:32
已改,但是还有问题啊
要想解决问题,那就把代码贴全,代码必须要处于可编译、可运行状态。 jackz007 发表于 2022-11-10 22:42
要想解决问题,那就把代码贴全,代码必须要处于可编译、可运行状态。
收到,立马贴
页:
[1]