我正在尝试在数组中添加100个数字这是我的代码: 从17到117的数字应该加起来更多。
#include <stdio.h>
#include <stdlib.h>
int main(){
int* number = malloc(101*sizeof(int));
int num = 0;
while (num != 101){
number[num] = 17 + num;
num = num + 1;
};
num = 0;
while(num != 101){
printf(" %d \n", number[num]);
num = num + 1;
}
num = 0;
int sum = 0;
while (num != 101){
number[num] = 17;
sum = sum + number[num];
num = num + 1;
}
printf(" %d \n ", sum );
return 0;
}
底部打印声明给出的值为1717
答案 0 :(得分:1)
while (num != 101){
number[num] = 17;
sum = sum + number[num];
删除已将所有内容重置为17
的第二行答案 1 :(得分:0)
错误在于这一额外的一行:
number[num] = 17;
无条件地用17替换数组中的正确数字。删除该行以解决问题。
当然,您不需要数组或循环来执行此操作,因为它是arithmetic progression的总和:
int sum = (start - end)(start + end) / 2;
此外,在分配声明中将void*
强制转换为int*
更为正确:
int* number = (int*)malloc(101*sizeof(int));
事实上,使用gcc,即使没有演员也不会编译。
答案 2 :(得分:0)
您正在添加101个数字,而不是100:
想象一下,而不是:
int num = 0;
while (num != 101)
你写道:
int num = 0;
while (num != 11)
您将添加0,1,2,3,4,5,6,7,8,9,10。这些是10个数字。
在C中,用< LIMIT
写上限以解决此问题是惯用的:
int num = 0;
while (num < 100)
请注意,也是惯用的,第一个值是数字。
也许你有一个VisualBasic背景,这就是为什么你觉得需要创建一个101个元素的数组来添加100个数字的原因。在C中你不需要这样的废话。写这个循环的C方式是:
int* number = malloc(100*sizeof(int));
for (num = 0; num < 100; ++num)
{
number[num] = ...;
}