谭浩强的教材题。[不用解决]
请教一下:原意是说数组形参改变实参,只要函数用数组名作参数(指针的例题不考虑),但在vc6.0sp6中测试不通过,是不是vc不允许?
#include <stdio.h>
void sort(int array[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
if(array[j]<array[k]);k=j内存只读,赋初值后会有相反的错误提示,比如先是读错误后是写错误。
t=array[k];array[k]=array[i];array[i]=t;
}
void main()
{
int a[10],i;
printf("enter\n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
printf("sort:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}不
[[it] 本帖最后由 新牛魔王 于 2008-5-9 13:36 编辑 [/it]]
----------------解决方案--------------------------------------------------------
#include <stdio.h>
void sort(int array[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(array[j]>array[j+1])
{
t=array[j];
array[j]=array[j+1];
array[j+1]=t;
}
}
void main()
{
int a[10],i;
printf("enter\n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
printf("sort:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
[[it] 本帖最后由 sunkaidong 于 2008-5-6 21:55 编辑 [/it]]
----------------解决方案--------------------------------------------------------
二楼的排序算法访问越界
[color=white]
----------------解决方案--------------------------------------------------------
J和K没初值`````这样乱访问不好吧```
----------------解决方案--------------------------------------------------------
也许是未赋初值的原因。
也许是未赋初值的原因。但赋值后仍有些小问题。不过我在另一个例子(排处素数)里已经理解了数组参数的问题。通过数组值改变。一般用指针要更好。
在教材的其它例题也有些也许是印刷上的错误。不亲自试试也不知道。
----------------解决方案--------------------------------------------------------
回复 5# 的帖子
确实是
我突然发现我以前放过很多同类的错误
----------------解决方案--------------------------------------------------------