求C语言高手,给予 指点:为什么这个程序 在执行时 总是 出现:非法内存引用的 错误!

求C语言高手,给予 指点:为什么这个程序 在执行时 总是 出现:非法内存引用的 错误!,第1张

char *a = "I am a boy !"

char *b = "I am a teacher!"

指针a 指向字符串常量的首地址 不能修改字符串里面的值

修改为

char a[100]= "I am a boy !"//最后保证数组a有足够的长度存下数销枝组b的内容

char b[] = "I am a teacher!"

其他模斗渗的不用变 就可旦脊以了

非法引用问题原因:这里i和j混用。

for(j=1j<=mi++) // 这里j为条件,但是i++。圆模

{

temp=a[i]

for(j=ij>扒纤0j--)

a[j]=a[j-1]

a[0]=temp

}

修改后,但是还是出现死循环,你的算法需要调整。

#include<stdio.h>

#define MAX_LEN 10000

void main()

{

int last(int a[],int n)

int a[MAX_LEN] = {0}

int n,i

printf("Input n(n must be a natural number less than 10000):")

scanf("%d",&n)

if(n>MAX_LEN||n<=0)

printf("%d is out of range of valid values."春腔仿,n)

else

{

for(i=0i<ni++)

a[i]=i+1

printf("Last No. is:%d\n",last(a,n))

}

}

int last(int a[],int n)

{

int b[MAX_LEN] = {0}

int i=0,j,m,k,temp,count=0

while(n>3)

{

m=n%3

i=0

for(j=0j<nj++)

{

if((j+1)%3!=0)

{

b[i]=a[j]

i++

}

}

for(j=0j<=ij++)

a[j]=b[j]

n=i+1

for(j=1j<=mj++)

{

temp=a[j]

for(k=jk>0k--)

a[k]=a[k-1]

a[0]=temp

}

}

return a[1]

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8203220.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存