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

本人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 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题