gpt4 book ai didi

c - System.AccessViolationException 错误 c++ VS 2010 Express(简单代码)

转载 作者:行者123 更新时间:2023-11-30 18:57:29 25 4
gpt4 key购买 nike

每次我想运行此代码时,我都会从 VS c++ 2010 Express 收到此错误消息:

Eine nicht behandelte Ausnahme des Typs "System.AccessViolationException" ist in Automat.exe aufgetreten.

Zusätzliche Informationen: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist haufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.

以下是使用 Google 翻译翻译成英语的错误消息:

An unhandled exception of type "System.AccessViolationException 'occurred in Automat.exe.

Additional information: Attempted to read or write protected memory was. This is often an indication that other memory is corrupt.

这是我的代码:

#include "stdafx.h"
#include <stdio.h>
#include <conio.h>

int main ()
{int g[5]={14,28,24,24,12},ag[3]={30,25,17},w[5]={0,0,0,0,0},a;
float e,p[3]={1.2,1.0,0.95},s=0;
while(1)
{while(1)
{printf("\n1)Drink1 1.2Euro");
printf("\n2)Drink2 1Euro");
printf("\n3)Drink3 0.95Euro");
printf("\nWaehlen sie ein Getraenk aus: ");
scanf("%f",&a);
if(a==123456)
{printf("\nEs sind noch folgende Getraenke vorhanden:");
printf("\n%dxDrink1\n%dxDrink2\n%dxDrink3",ag[0],ag[1],ag[2]);
printf("\nEs ist noch folgendes Wechselgeld vorhanden:");
printf("\n%fx1Euro\n%fx50Cent\n%fx20Cent\n%fx10Cent\n%fx5Cent\n",g[0],g[1],g[2],g[3],g[4]);
break;
}
else
{if(ag[a-1]==0)
{printf("\n\nDas Ausgewaehlte Getraenk ist nicht mehr verfuegbar\n");
}
else
{if(a==1 || a==2 || a==3)
{break;
}
}
}

printf("\n\nIhr Auswahl ist ungueltig!\n");
}
a--;
printf("\n\n Bitte werfen sie %.2f Euro ein\n",&p[a]);
while(s<p[a])
{while(1)
{printf("\nDerzeit: %f\nEinwurf: \n",s);
scanf("%f",&e);
if(e==2 || e==1 || e==0.5 || e==0.2 || e==0.1 || e==0.05)
{break;
}
printf("\nDer eingeworfene Wert ist ungueltig!\n");
}
s=s+e;
}
ag[a]--;
s=s-p[a];
if(s==0)
{printf("\n\nGeniessen sie ihr Getraenk!\n");
}
else
{printf("\nSie bekommen noch %f Euro\n",s);
while(s-1>0)
{w[0]++;
s=s-1;
}
while(s-0.5>0)
{w[1]++;
s=s-0.5;
}
while(s-0.2>0)
{w[2]++;
s=s-0.2;
}
while(s-0.1>0)
{w[3]++;
s=s-0.1;
}
while(s-0.05>0)
{w[4]++;
s=s-0.05;
}
printf("\nIhr Wechselgeld:");
printf("\n%fx1Euro\n%fx50Cent\n%fx20Cent\n%fx10Cent\n%fx5Cent",w[0],w[1],w[2],w[3],w[4]);
printf("\n\nGeniessen sie ihr Getraenk!\n");
g[0]=g[0]-w[0];
g[1]=g[1]-w[1];
g[2]=g[2]-w[2];
g[3]=g[3]-w[3];
g[4]=g[4]-w[4];
}
}


getch();
return 0;
}

调试时我发现,当我输入 123456 时,它甚至不认为第一个语句 (if(a==123456)) 为 true。

请帮忙。

最佳答案

您不应该使用 %f 格式说明符在 scanf 中读取整数 (a)。请改用 %d

关于c - System.AccessViolationException 错误 c++ VS 2010 Express(简单代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20905507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com