只想做个有钱的富婆花迪 2022-07-19 07:01 采纳率: 69.2%
浏览 43
已结题

关于#c语言#的问题:int number[cnt]

img


int number[cnt];为什么不行?数组不能是变量?
怎么修改?

  • 写回答

3条回答 默认 最新

  • a5156520 2022-07-19 07:10
    关注

    用变量做数组的长度,应该是需要C99支持。
    可以改为( int * number = (int *)malloc(sizeof(int)*cnt) )这样用函数malloc()动态分配一块内存来存储整数。
    修改如下:

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main(void){
    4. int x;
    5. double sum = 0;
    6. int cnt;
    7. printf("请输入数字的数量:");
    8. scanf("%d",&cnt);
    9. int * number = (int *)malloc(sizeof(int)*cnt);
    10. int i=0;
    11. if(cnt>0){
    12. scanf("%d",&x);
    13. while(x!=-1){
    14. number[i]=x;
    15. sum+=x;
    16. i++;
    17. scanf("%d",&x);
    18. }
    19. }
    20. for(i=0;i<cnt;i++){
    21. printf("%d ",number[i]);
    22. }
    23. return 0;
    24. }

    img

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    a5156520 2022-07-19 07:45

    把while循环的条件改一下更适合,防止数组越界。

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main(void){
    4. int x;
    5. double sum = 0;
    6. int cnt;
    7. printf("请输入数字的数量:");
    8. scanf("%d",&cnt);
    9. int * number = (int *)malloc(sizeof(int)*cnt);
    10. int i=0;
    11. if(cnt>0){
    12. while(i<cnt){
    13. scanf("%d",&x);
    14. number[i]=x;
    15. sum+=x;
    16. i++;
    17. }
    18. }
    19. for(i=0;i<cnt;i++){
    20. printf("%d ",number[i]);
    21. }
    22. return 0;
    23. }

    img

    回复
    a5156520 回复 a5156520 2023-02-11 03:44

    修改下,增加malloc申请内存后使用free释放内存,修改如下:

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main(void){
    4. int x;
    5. double sum = 0;
    6. int cnt;
    7. printf("请输入数字的数量:");
    8. scanf("%d",&cnt);
    9. int * number = (int *)malloc(sizeof(int)*cnt);
    10. int i=0;
    11. if(cnt>0){
    12. while(i<cnt){
    13. scanf("%d",&x);
    14. number[i]=x;
    15. sum+=x;
    16. i++;
    17. }
    18. }
    19. for(i=0;i<cnt;i++){
    20. printf("%d ",number[i]);
    21. }
    22. free(number); // 释放内存
    23. // printf("\n释放内存后;\n");
    24. // for(i=0;i<cnt;i++){
    25. // printf("%d ",number[i]);
    26. // }
    27. return 0;
    28. }

    回复
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 7月26日
  • 已采纳回答 7月19日
  • 创建了问题 7月19日
手机看
程序员都在用的中文IT技术交流社区

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

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

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

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

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

客服 返回
顶部