c++-C++程序编译出错,帮忙修改,可以的话,把修改后的完整程序发上来

问题描述

C++程序编译出错,帮忙修改,可以的话,把修改后的完整程序发上来

#include
#include
#include
#define max 5
typedef struct{
char b;//存储商品名
//商品日期年、月、日
int year;
int month;
int day;
}Data;
typedef struct{
Data a[max];//0为栈底位置
int top;//栈顶
}Stack;
//初始化空栈
Stack *initstack(){
Stack *S;
S=(Stack *)malloc(sizeof(Stack));//申请空间 //判断是否申请到栈空间
if(!S){
printf("空间不足!n");
return NULL;}
else{
S->top=-1;
return S;}}//将货架上摆放的货物打印出来
void Print(Stack *S){
printf(“这个商品的货架上摆放了%d个货物n",S->a[S->top].b,S->top+1); while(S->top>-1){
printf("%c%d/%d/%dn",S->a[S->top].b,S->a[S->top].year,S->a[S->top].month,S->a[S->top].day);
S->top--;}}
//上货
Stack *onput(Stack *S){
int j;char k1;
int k2,k3,k4;
for(j=0;j
if(S->top==max-1){
printf("栈满!n");//栈满不能入栈
return S;}
S->top++;
printf("栈数%d ",S->top);
//输入商品名和生产日期
fflush(stdin);//清除缓存区
scanf("%c %d/%d/%d",&k1,&k2,&k3,&k4);
S->a[S->top].b=k1;
S->a[S->top].year=k2;
S->a[S->top].month=k3;
S->a[S->top].day=k4;}
printf("该商品的货架满了!n");
printf("此时该商品的货架上共有%d个商品nn",S->top+1);
return S;}
//倒货
Stack *outstack(Stack *S,Stack *L){
L->top++;
L->a[L->top]=S->a[S->top];
S->top--;
printf("此时的栈顶数为:%dn",S->top);
printf("倒货一次!nn");
return L;}
//补货
void backstack(Stack *S,int x){
int i,ii;
int temp;
char k1;//储存商品名
int k2,k3,k4;//储存生产日期分别对应年月日
Stack *L;
L=initstack();//重新申请一个空栈用来倒货时存放货物
printf("请输入要补上货架的商品名(一个字符)空一格并输入该商品生产日期(年/月/日)每上货一件以回车键结束:n");
for(i=1;i<=x;i++){
//输入商品名和生产日期
fflush(stdin);//清除缓存区
scanf("%c %d/%d/%d",&k1,&k2,&k3,&k4);
if(S->top==-1){//此时货架上无商品可以直接上货
S->top++;
S->a[S->top].b=k1;
S->a[S->top].year=k2;
S->a[S->top].month=k3;
S->a[S->top].day=k4;
printf("补货成功第%d件!n",i);
printf("此时的栈顶数为:%dn",S->top);}
else{
if(k2a[S->top].year){
//若生产年份要补上货架的比货架上的早则直接上货架
S->top++;
S->a[S->top].b=k1;
S->a[S->top].year=k2;
S->a[S->top].month=k3;
S->a[S->top].day=k4;
printf("补货成功第%d件!n",i);
printf("此时的栈顶数为:%dn",S->top);
temp=1;}
else{for(ii=S->top;ii>-1&&S->top!=-1;ii--){
temp=0;//用来标记是否有货物上架
if(k2==S->a[S->top].year){
//若生产年份要补上货架的与货架上的一样则比较月份
if(k3a[S->top].month){
//若生产月份要补上货的比货架上的早则直接上货
S->top++;
S->a[S->top].b=k1;
S->a[S->top].year=k2;
S->a[S->top].month=k3;
S->a[S->top].day=k4;
printf("补货成功第%d件!n",i);
printf("此时的栈顶数为:%dn",S->top);
temp=1;
if(temp==1)break;}
else{
if(k3==S->a[S->top].month){
//若生产月份要补上货架的与货架上的一样则比较生产当天日期
if(k4<=S->a[S->top].day){
//若生产当天日期要补上货的比货架上的早或是相同则直接上货否则要倒货重新上货架
S->top++;
S->a[S->top].b=k1;
S->a[S->top].year=k2;
S->a[S->top].month=k3;
S->a[S->top].day=k4;
printf("补货成功第%d件!n",i);
printf("此时的栈顶数为:%dn",S->top);
temp=1;
if(temp==1)break;}
else{//倒货L=outstack(S,L);}}
else{//倒货L=outstack(S,L);}}}
if(k2>S->a[S->top].year){//此时生产年份要补上货架的比货架上的近
L=outstack(S,L);}//倒货
if(temp==0){
S->top++;
S->a[S->top].b=k1;
S->a[S->top].year=k2;
S->a[S->top].month=k3;
S->a[S->top].day=k4;
printf("补货成功第%d件!n",i);
printf("此时的栈顶数为:%dn",S->top);}
while(L->top>-1){//将存储在L栈中的商品上架
S->top++;
S->a[S->top]=L->a[L->top--];}
L=initstack();}}}
printf("补货完成!!nn");
Print(S);}
//出货
void *outpush(Stack *S){
printf("请店主输入今天%c这个商品销售出去的数量:",S->a[S->top].b); int x,i;fflush(stdin);
do{fflush(stdin);
scanf("%d",&x);
if(x>max)
printf("该货架上没有这么多商品!请重输!n");
}while(x>max);
for(i=1;i<=x;i++)S->top--;
printf("此时%c这个商品的货架的数量剩下%d件需要补上货架的数量为%dnn",S->a[S->top].b,S->top+1,x);
//补货
backstack(S,x);}
int main(void){
Stack *s[5];//5种商品
int i;
printf("计算机科学与技术1班 丁逸悦 学号:1308010108nn");
printf("商店共有5种商品,分别是a,b,c,d,enn");
for(i=0;i<5;i++){
s[i]=initstack();//初始化栈
printf("请输入要上货的第%d种商品名(一个字符)空一格并输入该商品生产日期(年/月/日)每上货一件以回车键结束:n",i+1);
s[i]=onput(s[i]);}//将商品入栈(上货)
char c,yes_no;
do{
fflush(stdin);
printf("请店主输入今天有销售出去一个商品的商品名:n");
fflush(stdin);
scanf("%c",&c);
switch(c){
case 'a':outpush(s[0]);break;
case 'b':outpush(s[1]);break;
case 'c':outpush(s[2]);break;
case 'd':outpush(s[3]);break;
case 'e':outpush(s[4]);break;
default:printf("商店无%c此商品!输入错误!n",c);}
do{fflush(stdin);
printf("请问店主还有销售出去的商品么?如果有请按Y,否则按Nn"); yes_no=getchar();
if(yes_no!='Y'&&yes_no!='N'){
printf("输入错误!!!nn");}
}while(yes_no!='Y'&&yes_no!='N');
}while(yes_no=='Y');
return 0;}

解决方案

Stack在哪里定义的,代码都不全。

解决方案二:

看错了

printf(“这个商品的货架上摆放了%d个货物n",S->a[S->top].b,S->top+1); while(S->top>-1){
这里第一个引号都是全角的。

还有好多错误。

解决方案三:

else{//倒货L=outstack(S,L);}}
else{//倒货L=outstack(S,L);}}}
这里else都不配对,什么乱七八糟的,缩进也没有。

解决方案四:

把代码放到代码片里。

解决方案五:

好乱,你可以把错误信息顺便贴出来就更好了

解决方案六:

这种错误自己可以找出来的就慢慢找,慢慢调试,这也是一种能力,谁有那么多工夫去看你这么乱的代码

解决方案七:

#if 1
#include
#include

#define max 5

typedef struct{
char b;//存储商品名
//商品日期年、月、日
int year;
int month;
int day;
}Data;

typedef struct{
Data a[max];//0为栈底位置
int top;//栈顶
}Stack;

//初始化空栈
Stack *initstack(){
Stack *S;
S = (Stack *)malloc(sizeof(Stack));//申请空间 //判断是否申请到栈空间
if (!S){
printf("空间不足!n");
return NULL;
}
else{
S->top = -1;
return S;
}
}

//将货架上摆放的货物打印出来
void Print(Stack *S)
{
printf("这个商品的货架上摆放了%d个货物n",S->a[S->top].b,S->top+1);
while(S->top>-1)
{
printf("%c%d/%d/%dn", S->a[S->top].b, S->a[S->top].year, S->a[S->top].month, S->a[S->top].day);
S->top--;
}
}

//上货
Stack *onput(Stack *S)
{
int j; char k1;
int k2, k3, k4;
for (j = 0; j < S->top; j++)
{
if(S->top == max - 1)
{
printf("栈满!n");//栈满不能入栈
return S;
}
S->top++;
printf("栈数%d ", S->top);
//输入商品名和生产日期
fflush(stdin);//清除缓存区
scanf_s("%c %d/%d/%d", &k1, &k2, &k3, &k4);
S->a[S->top].b = k1;
S->a[S->top].year = k2;
S->a[S->top].month = k3;
S->a[S->top].day = k4;
}
printf("该商品的货架满了!n");
printf("此时该商品的货架上共有%d个商品nn", S->top + 1);
return S;
}

//倒货
Stack *outstack(Stack *S, Stack *L)
{
L->top++;
L->a[L->top] = S->a[S->top];
S->top--;
printf("此时的栈顶数为:%dn", S->top);
printf("倒货一次!nn");
return L;
}
//补货
void backstack(Stack *S, int x)
{
int i, ii;
int temp;
char k1;//储存商品名
int k2, k3, k4;//储存生产日期分别对应年月日
Stack *L;
L = initstack();//重新申请一个空栈用来倒货时存放货物
printf("请输入要补上货架的商品名(一个字符)空一格并输入该商品生产日期(年/月/日)每上货一件以回车键结束:n");
for (i = 1; i <= x; i++)
{
//输入商品名和生产日期
fflush(stdin);//清除缓存区
scanf_s("%c %d/%d/%d", &k1, &k2, &k3, &k4);
if (S->top == -1)
{//此时货架上无商品可以直接上货
S->top++;
S->a[S->top].b = k1;
S->a[S->top].year = k2;
S->a[S->top].month = k3;
S->a[S->top].day = k4;
printf("补货成功第%d件!n", i);
printf("此时的栈顶数为:%dn", S->top);
}
else
{
if (S->a[S->top].year)
{
//若生产年份要补上货架的比货架上的早则直接上货架
S->top++;
S->a[S->top].b = k1;
S->a[S->top].year = k2;
S->a[S->top].month = k3;
S->a[S->top].day = k4;
printf("补货成功第%d件!n", i);
printf("此时的栈顶数为:%dn", S->top);
temp = 1;
}
else
{
for (ii = S->top; ii > -1 && S->top != -1; ii--)
{
temp = 0;//用来标记是否有货物上架
if (k2 == S->a[S->top].year)
{
//若生产年份要补上货架的与货架上的一样则比较月份
if (S->a[S->top].month)
{
//若生产月份要补上货的比货架上的早则直接上货
S->top++;
S->a[S->top].b = k1;
S->a[S->top].year = k2;
S->a[S->top].month = k3;
S->a[S->top].day = k4;
printf("补货成功第%d件!n", i);
printf("此时的栈顶数为:%dn", S->top);
temp = 1;
if (temp == 1)break;
}
else
{
if (k3 == S->a[S->top].month)
{
//若生产月份要补上货架的与货架上的一样则比较生产当天日期
if (k4 <= S->a[S->top].day)
{
//若生产当天日期要补上货的比货架上的早或是相同则直接上货否则要倒货重新上货架
S->top++;
S->a[S->top].b = k1;
S->a[S->top].year = k2;
S->a[S->top].month = k3;
S->a[S->top].day = k4;
printf("补货成功第%d件!n", i);
printf("此时的栈顶数为:%dn", S->top);
temp = 1;
if (temp == 1)break;
}
//else{倒货L=outstack(S,L);}}
else
{//倒货L=outstack(S,L);}}}
if (k2 > S->a[S->top].year)
{//此时生产年份要补上货架的比货架上的近
L = outstack(S, L);
}//倒货
if (temp == 0)
{
S->top++;
S->a[S->top].b = k1;
S->a[S->top].year = k2;
S->a[S->top].month = k3;
S->a[S->top].day = k4;
printf("补货成功第%d件!n", i);
printf("此时的栈顶数为:%dn", S->top);
}
while (L->top > -1)
{//将存储在L栈中的商品上架
S->top++;
S->a[S->top] = L->a[L->top--];
}
L = initstack();
}

                        }
                    }
                    printf("补货完成!!nn");
                    Print(S);
                }
            }
        }
    }
}

}

//出货
void *outpush(Stack *S)
{
printf("请店主输入今天%c这个商品销售出去的数量:", S->a[S->top].b); int x, i; fflush(stdin);
do{
fflush(stdin);
scanf_s("%d", &x);
if (x>max)
printf("该货架上没有这么多商品!请重输!n");
} while (x>max);
for (i = 1; i <= x; i++)S->top--;
printf("此时%c这个商品的货架的数量剩下%d件需要补上货架的数量为%dnn", S->a[S->top].b, S->top + 1, x); //补货
backstack(S, x);
return NULL;
}

int main(void)
{
Stack *s[5];//5种商品
int i;
printf("计算机科学与技术1班 丁逸悦 学号:1308010108nn");
printf("商店共有5种商品,分别是a,b,c,d,enn");
for (i = 0; i<5; i++){
s[i] = initstack();//初始化栈
printf("请输入要上货的第%d种商品名(一个字符)空一格并输入该商品生产日期(年/月/日)每上货一件以回车键结束:n", i + 1);
s[i] = onput(s[i]);
}//将商品入栈(上货)
char c, yes_no;
do{
fflush(stdin);
printf("请店主输入今天有销售出去一个商品的商品名:n");
fflush(stdin);
scanf_s("%c", &c);
switch (c){
case 'a':outpush(s[0]); break;
case 'b':outpush(s[1]); break;
case 'c':outpush(s[2]); break;
case 'd':outpush(s[3]); break;
case 'e':outpush(s[4]); break;
default:printf("商店无%c此商品!输入错误!n", c);
}
do{
fflush(stdin);
printf("请问店主还有销售出去的商品么?如果有请按Y,否则按Nn"); yes_no = getchar();
if (yes_no != 'Y'&&yes_no != 'N'){
printf("输入错误!!!nn");
}
} while (yes_no != 'Y'&&yes_no != 'N');
} while (yes_no == 'Y');
return 0;
}
#endif

时间: 2024-12-23 04:30:34

c++-C++程序编译出错,帮忙修改,可以的话,把修改后的完整程序发上来的相关文章

测试-c语言程序编译出错error: syntax error before &amp;amp;quot;typedef&amp;amp;quot;

问题描述 c语言程序编译出错error: syntax error before "typedef" 设计的一个顺序循环队列和测试函数,结果编译的时候就有好多error: syntax error before ""不知道要怎么改,求帮助~ 这是我的代码: 头文件: #include typedef struct SeqCQueue { DataType queue[MaxQueueSize]; int MaxQueueSize; int rear; int fro

C++控制台程序编译出错

问题描述 C++控制台程序编译出错 编译程序时出现错误: f:练习raceracerace.cpp(1): fatal error C1083: 无法打开包括文件:"stdafx.h": No such file or directory 网上的方法都用过了,结果都还是生成失败,请问怎么解决. 解决方案 方案一:可以不使用预编译头,将include "stdafx.h"注释掉,然后直接在文件中直接包含你所需的标准库文件 方案二:可以新建一个工程,然后从解决方案资源管

media-程序编译出错 missing &amp;amp;#39;;&amp;amp;#39; before identifier &amp;amp;#39;m_ActiveMovie&amp;amp;#39;

问题描述 程序编译出错 missing ';' before identifier 'm_ActiveMovie' 错误: c:usersadministrator.win-42esb6vovundesktoplilymplilympdlg.h(40) : error C2146: syntax error : missing ';' before identifier 'm_ActiveMovie' c:usersadministrator.win-42esb6vovundesktoplily

online adaboost tracking 程序调试出错 ,求大神帮忙

问题描述 online adaboost tracking 程序调试出错 ,求大神帮忙 大家好,我使用opencv +C++调的online adaboost tracking 程序.怎么编译可以成功,到了调试,就出现下面这种错误呢? 解决方案 已经解决问题.原来是config.txt 文件没有配置正确

Nginx整合nginx-gridfs时,编译出错,请帮忙看看,谢谢。

问题描述 Nginx整合nginx-gridfs时,编译出错,请帮忙看看,谢谢. ./configure --prefix=/usr/local/nginx-1.8.0 --with-http_ssl_module --with-pcre=/usr/local/nginx_install/pcre-8.32 --with-zlib=/usr/local/nginx_install/zlib-1.2.7 --with-openssl=/usr/local/nginx_install/openssl

linux 并行-Linux下MPI+OpenMP程序编译运行出错

问题描述 Linux下MPI+OpenMP程序编译运行出错 如题,错误提示如下: [node65:03787] *** Process received signal *** [node65:03787] Signal: Segmentation fault (11) [node65:03787] Signal code: Address not mapped (1) [node65:03787] Failing at address: 0x44000098 [node65:03787] [ 0

cocos2d-x-小白求救,Cocos2dx代码编译成android程序时出错!

问题描述 小白求救,Cocos2dx代码编译成android程序时出错! 当我使用eclipse去编译Cocos2dx里的proj.android工程时下面的控制台报错:cc1plus.exe: error: unrecognized command line option ""-std=c++11""cc1plus.exe: warning: unrecognized command line option ""-Wno-extern-c-co

c++-这程序编译无报错,运行时出错

问题描述 这程序编译无报错,运行时出错 #include<iostream> int Two(int a, const int* c) { if(a >= *c) return a; else return *c; } int main() { std::cout << "请输入两个数:" ; int a, b, *c; std::cin >> a >> b; *c = b; std::cout << "二者中

visual studio-VS2015编译C++程序总是出错

问题描述 VS2015编译C++程序总是出错 最近新下了个VS2015,编写任何程序生成时总是下图相似的错误,不知道是下载时漏下了什么还是其他什么原因,求指点. 解决方案 vs2015默认不安装windows桌面支持,你重新运行安装程序,选择自定义,勾选C++下所有的选项 解决方案二: vs2015编译gdal出错及解决方案 解决方案三: 你在安装VS有没勾选安装C++插件什么的.