c语言初学者,运行时出现“该内存不能为"written"”

这是我的程序,应该没啥问题啊。我是想输入10个数然后从小到大排列。
但是,输完这10个数后按回车就这情况了。而且排列的不对,我也试过用0到9的个位数进行排列,还是不对。用的vc6.0。按F7时没有提示错误

#include<stdio.h>
void main()
{
int a[10];数组尽量多开10%的空间,以避免数组越界
int n,m=0,t=0;
printf("请输入十个数:");
for(n=0;n<10;n++)
scanf("%d",&a[n]);
for(n=0;n<10;n++)
for(m=1;m<10-n;m++)
if(a[m]>a[m+1])///////根据你的程序,意思应该是冒泡排序,修改点之一
{ ////////////////你的程序这儿有个大括号丢了,这是导致数组越界的原因,就是不能为written
t=a[m];a[m]=a[m+1];a[m+1]=t;
}
for(n=0;n<10;n++)
printf("%d ",a[n]);
}
这是修改完的程序,上面有注释
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-25
#include "stdafx.h"
#include<iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int a[10];
int n,m=0,t=0;
cout<<"please input 10n umbers"<<endl;

for(n=0;n<10;n++)
cin>>a[n];

for(n=0;n<10;n++)
{
for(m=0;m<10-n;m++)
{
if(a[n]>a[m])
{
t= a[n];
a[n]= a[m];
a[m] =t;
}
}
}

for(n=0;n<10;n++)
cout<<a[n]<<endl;

return 0;

}

这就可以了,你的排序写错了
另外Scanf输入个数不含空格,最好用回车输入
上面的代码cin cout 改成scanf printf 就可以
第2个回答  2014-03-25
新建一个 再粘贴过去试试
相似回答