快乐至上!~
2019-01-31 15:24
采纳率: 100%
浏览 1.1k

本人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会连你的回车一起输入进去,所以需要你先把回车取出来丢掉。

    已采纳该答案
    打赏 评论
  • Zoey_C 2019-01-31 16:02

    本来就没有判断什么相等,输入什么就输出什么

    打赏 评论
  • wuerlongxin 2019-01-31 16:04

    C语言中,一维数组的定义:类型标识符 数组名[常量表达式]; 你的这个定义方式就错了,int A[n] 其中,n是变量,不是常量表达式。

    打赏 评论
  • Lemon_poiu 2019-01-31 16:30

    数组在n被输入之后再定义

    打赏 评论
  • 怂怂的小白菜 2019-02-01 11:58

    图片说明
    首先,数组需要输入之后再定义,像你的代码这样,先n=0,A【0】是个啥。。。。
    其次,n>200没多大必要。真的要设一个限定长度,可以设一个n>10之类的。比如说你输入了n=199,也不大可能真的去输199个数字

    打赏 评论

相关推荐 更多相似问题