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

本人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 16: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条)

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算