ps制作烟花效果动态图:大家帮我看看这一段vc++代码(编译通过但运行的时候出错)

来源:百度文库 编辑:神马品牌网 时间:2024/05/04 18:50:26
这是我建立的一个基于对话框的vc程序的一部分
对话框包含:一个按钮控件和两个cedit控件(m_input和m_output)
功能是从m_input接受一个整形数字n代表生成的矩阵个数,之后用一个n+1维数组代表这n个矩阵(可以连乘的矩阵)
最后在m_output输出这n个矩阵的维数。
例如输出格式为The matrix chain is 49*13 13*3 3*12 12*23 23*12593776 12593776*6 6*21 21*24 24*11 11*28 28*7 7*16 16*21
问题一:编译通过但为什么运行时会出错(报告说“该程序遇到问题需要关闭”)?当数值过大时肯定出错,很小时有可能正常。
问题二:求50以内的随机数nMatrixData[i]=rand()%50;为什么会出现大于50的数呢?
按钮的方法如下
void CMatrixChain::OnMatrixchainCreateButton()
{

srand( (unsigned)time( NULL ) );
int n=0;//若有n个矩阵,则初始化的数组应该为n+1
int *nMatrixData;
int i;
m_input.GetWindowText(szTemp1);
//判断
if(szTemp1=="")
{
AfxMessageBox("请输入矩阵个数");
}
else
{
n=atoi(szTemp1); //字符串变成整形
nMatrixData=new int(n+1);//n个矩阵的矩阵数组有n+1个元素;
for(i=0;i<n+1;i++)
{
nMatrixData[i]=rand()%50;//矩阵数组初始化完毕
}
//输出
szResult1="The matrix chain is ";
szTemp1.Format("%d",nMatrixData[0]);//整形转化成字符串
szResult1=szResult1+szTemp1+"*";
for(i=1;i<n;i++)
{
szTemp1.Format("%d",nMatrixData[i]);
szResult1=szResult1+szTemp1+" "+szTemp1+"*";
}
szTemp1.Format("%d",nMatrixData[n]);
szResult1=szResult1+szTemp1;
szTemp1.Format("%d",n);
// szResult1=szResult1+"\r\n"+"There are "+szTemp1+"matrixes been initialed";
m_output.SetWindowText(szResult1);
}
}