为什么不正确添加我的号码

时间:2016-02-02 22:57:27

标签: c loops while-loop

我正在尝试在数组中添加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

3 个答案:

答案 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] = ...;
}