快乐至上!~ 2019-01-31 07:24 采纳率: 50%
浏览 1164
已采纳

本人C语言小白,自己尝试做了一个关于数组的输入输出的程序,却输不出来

```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;
}

但是如果输入的值不一样又可以输出来,是哪里出了问题?
  • 写回答

5条回答 默认 最新

  • 非实在码农 2019-01-31 08:10
    关注

    首先,你这样分配空间是不行的,这样应该是通不过编译的才对,不知道你怎么通过编译了,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会连你的回车一起输入进去,所以需要你先把回车取出来丢掉。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部