首页 新闻 赞助 找找看

c语言关于数组的一些问题

0
悬赏园豆:15 [已解决问题] 解决于 2021-08-11 21:19

include<stdio.h>

int main(void)
{
int x=0;
double sum = 0;
int cnt;
double average=0;
printf("请输入数字的数量:");
scanf("%d",&x);
if(cnt>0){
number[cnt];
printf("请输入数字:");
scanf("%d", &x);
while (x != -1) {
number[cnt] = x;
sum += x;
cnt++;
scanf("%d", &x);
}
if (cnt > 0) {
average = sum / cnt;
for (int i = 0; i < cnt; i++) {
if (number[i] > average) {
printf("%d",number[i]);
}
}
}
}
while (1);
return 0;
}
这个代码中,数组的长度是否可以用一个变量代替

新手小白。的主页 新手小白。 | 初学一级 | 园豆:75
提问于:2021-08-11 19:49

可以简单了解下Markdown,自己做笔记或者提问都能做到更漂亮的形式

给给龙 2年前
< >
分享
最佳答案
0

可以搜索C语言 VLA(变长数组)了解。
总之就是C99版本新增了这种写法,但是并不是必需特性,也不推荐这么写。课上一般直接就说不能这么写了。
这个功能用 int * number = (int*) malloc(sizeof(int) * cnt); 实现,malloc函数会申请cnt个int大小的空间,并返回首地址。
此时number就和你所想的int number[cnt]一致了,就可以像使用数组那样使用它了。
这种方法涉及到指针,可以跳到指针的部分看一看指针和数组的关系加以了解。
以下是一个例子:

int cnt = 0;
scanf("%d", &cnt);
int * number = (int*) malloc (sizeof(int) * cnt);
for (int i = 0; i < cnt; i++) {
    scanf("%d", &number[i]);
}

for (int i = 0; i < cnt; i++) {
    printf("%d ", number[i]);
}
收获园豆:9
给给龙 | 菜鸟二级 |园豆:235 | 2021-08-11 20:50

该函数需要 #include <stdlib.h>

给给龙 | 园豆:235 (菜鸟二级) | 2021-08-11 20:52

谢谢了,懂了

新手小白。 | 园豆:75 (初学一级) | 2021-08-11 21:05
其他回答(1)
0

你是指什么?是在声明的时候写成int number[x]的形式吗?

收获园豆:6
计算机知识杂谈 | 园豆:470 (菜鸟二级) | 2021-08-11 19:53

printf("请输入数字的数量:");
scanf("%d",&cnt);
if(cnt>0){
int number[cnt];
希望数组的长度是可变的,通过scanf输入

支持(0) 反对(0) 新手小白。 | 园豆:75 (初学一级) | 2021-08-11 19:57

@新手小白。:
这样写完全可以,没有语法错误。C++应该允许整型变量做数组下标的个数。(不过这类场合还是建议使用malloc和指针建立动态数组,如下:)

printf("请输入数字的数量:");
scanf("%d",&cnt);
int number;
if(cnt>0){
number=(int
)malloc(cnt*sizeof(int));

支持(0) 反对(0) 计算机知识杂谈 | 园豆:470 (菜鸟二级) | 2021-08-11 20:38

@计算机知识杂谈: 好的多谢了

支持(0) 反对(0) 新手小白。 | 园豆:75 (初学一级) | 2021-08-11 21:05

@计算机知识杂谈: 但我在vs2019下运行会报错,说不允许这样写,是vs2019不支持c99吗

支持(0) 反对(0) 新手小白。 | 园豆:75 (初学一级) | 2021-08-11 21:06

@新手小白。:
应该是的

支持(0) 反对(0) 计算机知识杂谈 | 园豆:470 (菜鸟二级) | 2021-08-11 21:12

@计算机知识杂谈: 一般写c的话用哪个比较好些

支持(0) 反对(0) 新手小白。 | 园豆:75 (初学一级) | 2021-08-11 21:13

@新手小白。:
我一直用dev c++的。学校机房装的也是这个。

支持(0) 反对(0) 计算机知识杂谈 | 园豆:470 (菜鸟二级) | 2021-08-11 21:17

@计算机知识杂谈: 好的,谢谢了

支持(0) 反对(0) 新手小白。 | 园豆:75 (初学一级) | 2021-08-11 21:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册