Linux环境下Runtime Error:Segmentation fault 错误求教
在Windows下的VC++6.0中编写的程序,在Linux下编译时出现“Runtime Error:Segmentation fault ”错误,真心求教高手解答~
因为项目要求用Linux编译环境,而自己的电脑里只有Windows系统,只好先试着写了这个程序,
windows下编译运行通过,但是提交后被告知有错误
附上程序源码:
#include <iostream>
#include "string.h"
using namespace std;
#define min(a,b) (a)<=(b)?(a):(b)
struct money{
float faceValue;//面值
int numAll;//该面值钱币的总张数
int numRet;//该面值的找零数
};
int main(void)
{
money moneyAll[7];
moneyAll[0].faceValue = 50; moneyAll[0].numAll = 10; moneyAll[0].numRet = 0;
moneyAll[1].faceValue = 20; moneyAll[1].numAll = 20; moneyAll[1].numRet = 0;
moneyAll[2].faceValue = 10; moneyAll[2].numAll = 50; moneyAll[2].numRet = 0;
moneyAll[3].faceValue = 5; moneyAll[3].numAll = 100; moneyAll[3].numRet = 0;
moneyAll[4].faceValue = 1; moneyAll[4].numAll = 100; moneyAll[4].numRet = 0;
moneyAll[5].faceValue = 0.5; moneyAll[5].numAll = 200; moneyAll[5].numRet = 0;
moneyAll[6].faceValue = 0.1; moneyAll[6].numAll = 500; moneyAll[6].numRet = 0;
float sum = 0;
cin>>sum;
if (0 == sum)
{
return 0;
}
if (2150 < sum)
{
cout<<"the operate is fail"<<endl;
return 0;
}
//考生需要实现
int i=0;
while(sum >= 0)
{
int numRet = (int)(sum/moneyAll[i].faceValue+0.001);
moneyAll[i].numRet = min(numRet,moneyAll[i].numAll);
sum = sum - moneyAll[i].numRet * moneyAll[i].faceValue;
i++;
}
cout<<"the results are";
cout<<" num_"<<moneyAll[0].faceValue<<"="<<moneyAll[0].numRet;
cout<<" num_"<<moneyAll[1].faceValue<<"="<<moneyAll[1].numRet;
cout<<" num_"<<moneyAll[2].faceValue<<"="<<moneyAll[2].numRet;
cout<<" num_"<<moneyAll[3].faceValue<<"="<<moneyAll[3].numRet;
cout<<" num_"<<moneyAll[4].faceValue<<"="<<moneyAll[4].numRet;
cout<<" num_"<<moneyAll[5].faceValue<<"="<<moneyAll[5].numRet;
cout<<" num_"<<moneyAll[6].faceValue<<"="<<moneyAll[6].numRet;
return 0;
}
[解决办法]
[root@localhost c++]# g++ -o segment segment.cpp
[root@localhost c++]#
在linux上编译没什么错误!