int number[cnt];为什么不行?数组不能是变量?
怎么修改?
用变量做数组的长度,应该是需要C99支持。
可以改为( int * number = (int *)malloc(sizeof(int)*cnt) )这样用函数malloc()动态分配一块内存来存储整数。
修改如下:
- #include <stdio.h>
- #include <stdlib.h>
- int main(void){
-
- int x;
- double sum = 0;
- int cnt;
-
- printf("请输入数字的数量:");
- scanf("%d",&cnt);
-
- int * number = (int *)malloc(sizeof(int)*cnt);
- int i=0;
- if(cnt>0){
-
-
- scanf("%d",&x);
-
- while(x!=-1){
- number[i]=x;
- sum+=x;
- i++;
- scanf("%d",&x);
- }
- }
-
-
- for(i=0;i<cnt;i++){
- printf("%d ",number[i]);
- }
-
-
- return 0;
-
- }
-
把while循环的条件改一下更适合,防止数组越界。
- #include <stdio.h>
- #include <stdlib.h>
- int main(void){
-
- int x;
- double sum = 0;
- int cnt;
-
- printf("请输入数字的数量:");
- scanf("%d",&cnt);
-
- int * number = (int *)malloc(sizeof(int)*cnt);
- int i=0;
- if(cnt>0){
-
-
-
-
- while(i<cnt){
- scanf("%d",&x);
- number[i]=x;
- sum+=x;
- i++;
- }
- }
-
-
- for(i=0;i<cnt;i++){
- printf("%d ",number[i]);
- }
-
-
- return 0;
-
- }
-
修改下,增加malloc申请内存后使用free释放内存,修改如下:
-
-
- #include <stdio.h>
- #include <stdlib.h>
- int main(void){
-
- int x;
- double sum = 0;
- int cnt;
-
- printf("请输入数字的数量:");
- scanf("%d",&cnt);
-
- int * number = (int *)malloc(sizeof(int)*cnt);
- int i=0;
- if(cnt>0){
-
-
-
-
- while(i<cnt){
- scanf("%d",&x);
- number[i]=x;
- sum+=x;
- i++;
- }
- }
-
-
- for(i=0;i<cnt;i++){
- printf("%d ",number[i]);
- }
-
- free(number); // 释放内存
-
- // printf("\n释放内存后;\n");
- // for(i=0;i<cnt;i++){
- // printf("%d ",number[i]);
- // }
-
- return 0;
-
- }