ylxd41 2016-11-26 08:24 采纳率: 0%
浏览 1235

为什么程序总是崩溃?

// 素数求和问题.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include
int tolsu(int*p,int n);
int _tmain(int argc, _TCHAR* argv[])
{
int n;
int num;
char bol;
int s;
printf("测试样本次数:");
scanf("%d",&n);
while(n--)
{
printf("样本个数:");
scanf("%d",&num);
//getchar();
int*p;
p=(int*)malloc(num*sizeof(int));
for(int i=0;i<num;i++)
scanf("%d",p[i]);
for(int i=0;i<num;i++)
printf("%d ",p[i]);
printf("请确认输入:Y/N");
scanf("%c",&bol);
if (bol=='Y')
{
s=tolsu(p,num);
printf("%d\n",s);
}
else
{
printf("请重新输入:");
break;
}
free(p);
}
return 0;
}
int tolsu(int*p,int n)
{
int i=0;
int tol=0;
int c=0;
while(i<n)
{
for(int s=1;s<p[i];s++)
{
if (p[i]%s==0)
{
c++;
if (c<=2)
tol+=p[i];
continue;
}
else
continue;
}
i++;
}
return tol;
}

  • 写回答

3条回答 默认 最新

  • tab0tab 2016-11-26 08:35
    关注

    for(int s=1;s<p[i];s++)
    过多的数组直接访问,没有进行有效性判断。如if(i<0),if(p[i] < 0).

    评论

报告相同问题?