```int main()
{
int i,n=0;
int A[n];
printf("请输入数组的长度n为:");
scanf("%d",&n);
if(n>200){
printf("请重新输入数组的长度:");
scanf("%d",&n);
}
else
printf("请输入数组里的值:");
for(i=0;i<n;i++){
scanf("%d",&A[i]);
}
for(i=0;i<n;i++){
printf("A[%d]=%d\n",i,A[i]);
}
return 0;
}
但是如果输入的值不一样又可以输出来,是哪里出了问题?
首先,你这样分配空间是不行的,这样应该是通不过编译的才对,不知道你怎么通过编译了,int A[x]中的x必须为常量。如果你想要动态申请空间,可以按我下面的来,不然一开始你就要指定好大小。
int *A = NULL;//最好赋予初值为空指针,不然这里就是一个野指针,容易出毛病
do{
printf("请输入数组的长度n为:");
scanf("%d",&n);
getchar();
}while(n>=200 && n<=0); //这里直接用个do-while做个循环,就能检测合法值了。
A = malloc(sizeof(int) * n);//动态申请对应大小的数组
for().......输入数组部分
free(A);//前面动态申请空间后要释放
return 0;
另外在C语言做输入时scanf后面最好加一个getchar();
因为有时候scanf会连你的回车一起输入进去,所以需要你先把回车取出来丢掉。
本来就没有判断什么相等,输入什么就输出什么
C语言中,一维数组的定义:类型标识符 数组名[常量表达式]; 你的这个定义方式就错了,int A[n] 其中,n是变量,不是常量表达式。
数组在n被输入之后再定义
首先,数组需要输入之后再定义,像你的代码这样,先n=0,A【0】是个啥。。。。
其次,n>200没多大必要。真的要设一个限定长度,可以设一个n>10之类的。比如说你输入了n=199,也不大可能真的去输199个数字