主题:C初学者求助~~
我是初学者,最近有了电脑,可是刚开始的几个程序就出现了问题,那位好心人帮忙看看怎么回事啊,谢谢了!!!!
下面的程序在VC++6.0上运行后出现错误 "0x0040136c"指令引用的"oxffffffe4"内存。该内存不能为written。
1.使用筛法求素数。
//sieve.cpp
#define DELETED 0
#define N 100
#include <stdio.h>
void main()
{
int i,j,n,m;int prime[N];int x[N];
for(i=0;i<N;i++)x[i]=i+i+3;
prime[0]=2;//The first prime.
for(i=0;i<N;i++){
for(n=1;j<2*N+3;n++)
j=n*x[i]+i;
x[j]=DELETED;
}
i=0;j=1;
while(i<N)
if(x[i]!=DELETED)prime[j++]=x[i++];
m=j;
for(j=0;j<N;j++)
printf("%d\n",prime[j]);
printf("\n There are %d primes in total.\n",j);
}
2.求素数
//每次显示输出的都是从N/2开始的素数,找不出原因~~
#include<iostream.h>
#define N 200
void prime(int n)
{int sum=1;//素数总数sum
cout<<'2'<<endl;//第一个素数
for(int k=3;k<N;k++)
{ int comp=0;//comp=1时为合数
for(int i=2;i<=N/2;i++)
if(k%i==0){comp=1;break;}
if(!comp)
{++sum;
cout<<k<<endl;
}
}
cout<<"There are"<<sum<<"prime in total."<<endl;
}
void main()
{prime(N);
}
3.求最大最小值
//下面这个小程序也不能预想的输出,min得不到正确的值。不知道是什么原因。
#define n 10
#include<iostream.h>
int a[n]={1,3,53,42,34,54,32,32,112,23};
void MaxMin(int i,int j,int &max,int &min)
{
if(i==j)max=min=a[i];
else if(i=j-1)
{if(a[i]<a[j])
{max=a[j];
min=a[i];
}
else{max=a[i];max=a[j];}
}
else{int mid=(i+j)/2;
int max1,min1;
MaxMin(i,mid,max,min);
MaxMin(mid+1,j,max1,min1);
if(max<max1)max=max1;
if(min>min1)min=min1;
}
}
void main()
{
int x,y;int i;
for(i=0;i<n;i++)
{
cout<<a[i]<<"\n";
}
MaxMin(0,n-1,x,y);
cout<<x<<"\n"<<y<<endl;
}
下面的程序在VC++6.0上运行后出现错误 "0x0040136c"指令引用的"oxffffffe4"内存。该内存不能为written。
1.使用筛法求素数。
//sieve.cpp
#define DELETED 0
#define N 100
#include <stdio.h>
void main()
{
int i,j,n,m;int prime[N];int x[N];
for(i=0;i<N;i++)x[i]=i+i+3;
prime[0]=2;//The first prime.
for(i=0;i<N;i++){
for(n=1;j<2*N+3;n++)
j=n*x[i]+i;
x[j]=DELETED;
}
i=0;j=1;
while(i<N)
if(x[i]!=DELETED)prime[j++]=x[i++];
m=j;
for(j=0;j<N;j++)
printf("%d\n",prime[j]);
printf("\n There are %d primes in total.\n",j);
}
2.求素数
//每次显示输出的都是从N/2开始的素数,找不出原因~~
#include<iostream.h>
#define N 200
void prime(int n)
{int sum=1;//素数总数sum
cout<<'2'<<endl;//第一个素数
for(int k=3;k<N;k++)
{ int comp=0;//comp=1时为合数
for(int i=2;i<=N/2;i++)
if(k%i==0){comp=1;break;}
if(!comp)
{++sum;
cout<<k<<endl;
}
}
cout<<"There are"<<sum<<"prime in total."<<endl;
}
void main()
{prime(N);
}
3.求最大最小值
//下面这个小程序也不能预想的输出,min得不到正确的值。不知道是什么原因。
#define n 10
#include<iostream.h>
int a[n]={1,3,53,42,34,54,32,32,112,23};
void MaxMin(int i,int j,int &max,int &min)
{
if(i==j)max=min=a[i];
else if(i=j-1)
{if(a[i]<a[j])
{max=a[j];
min=a[i];
}
else{max=a[i];max=a[j];}
}
else{int mid=(i+j)/2;
int max1,min1;
MaxMin(i,mid,max,min);
MaxMin(mid+1,j,max1,min1);
if(max<max1)max=max1;
if(min>min1)min=min1;
}
}
void main()
{
int x,y;int i;
for(i=0;i<n;i++)
{
cout<<a[i]<<"\n";
}
MaxMin(0,n-1,x,y);
cout<<x<<"\n"<<y<<endl;
}