如何在一个数组中打印出100个数字,然后使用C将它们相加

如何在一个数组中打印出100个数字,然后使用C将它们相加,c,arrays,C,Arrays,我试着用一个循环从一个数组中打印出100个数字,然后把它们加在一起。到目前为止,我已经: #include <stdio.h> #include <stdlib.h> int main(){ int* number = malloc(101 * sizeof(int)); int num = 0; number[num] = 1; while (number[num] <= 100){ printf(" %d\n

我试着用一个循环从一个数组中打印出100个数字,然后把它们加在一起。到目前为止,我已经:

#include <stdio.h>
#include <stdlib.h>

int main(){
    int* number = malloc(101 * sizeof(int));
    int num = 0;
    number[num] = 1;

    while (number[num] <= 100){
        printf(" %d\n ", number[num]);
        num = num +1;
        number[num] = number[num]+1;



    }

    return 0;
}
#包括
#包括
int main(){
int*number=malloc(101*sizeof(int));
int num=0;
数字[num]=1;
而(数字[num]请尝试以下操作:

#include <stdio.h>

int main () {

   int n[ 100 ]; /* n is an array of 100 integers */
   int i,j;
   int sum = 0;

   /* initialization */
   for ( i = 0; i < 100; i++ ) {
      n[ i ] = i + 100;   /* set element at location i to i + 100 */
   }

   /* output each array element's value */
   for (j = 0; j < 100; j++ ) {
      printf("Element[%d] = %d\n", j, n[j]);
      sum += n[j];
   }

   printf("Sum of Elements = %d\n", sum);
   return 0;
}
#包括
int main(){
int n[100];/*n是由100个整数组成的数组*/
int i,j;
整数和=0;
/*初始化*/
对于(i=0;i<100;i++){
n[i]=i+100;/*将位置i处的元素设置为i+100*/
}
/*输出每个数组元素的值*/
对于(j=0;j<100;j++){
printf(“元素[%d]=%d\n”,j,n[j]);
总和+=n[j];
}
printf(“元素的总和=%d\n”,总和);
返回0;
}

记住,你应该声明一个
数组
,然后初始化它,打印出来,最后打印出

你可以只打印出1到100,然后你可以快速使用一些数学来计算所有加在一起的数字,例如,高斯算法之一,具体来说

有一个流行的故事说,杰出的数学家高斯有一位懒惰的老师。这位所谓的教育家想让孩子们忙着打个盹儿;他让全班同学把数字1和100相加

下面是我要做的:-

int i = 0;
for (i = 1; i <= 100; i++) {
  printf("%d", i);
}

// gauss technique 100(100 + 1) / 2

int count = (100 * 100 + 100 * 1) / 2;
printf("all numbers added: %d", count);
inti=0;
对于(i=1;i
您只正确设置了编号[0]
。现在您正试图在第一次迭代中获取编号[1]
中的内容并添加到其中。但您没有将其设置为任何内容,使其处于未初始化状态。这是未定义的行为。您最想做的是

    number[num] = number[num-1]+1;
在打印前和打印后在前一个数字上加上一个数字。现在可以很好地打印

要将它们相加,只需执行以下操作

for (int a = 0; a < 100; a++) {
 number[100] += number[a]; // add number[a] to result
}
printf("%d\n",number[100]);
for(int a=0;a<100;a++){
数字[100]+=数字[a];//将数字[a]添加到结果中
}
printf(“%d\n”,编号[100]);

另外,不要忘记在最后释放动态分配的数组。

基本上你的代码中没有数组。你显示的代码有什么问题?根据你的说法,这是什么行为,“number[num]=number[num]+1?更不用说引用未初始化的值会导致未定义的行为。我已经修复了它。编辑:nvm idk如何将代码添加到注释中。感谢您的帮助。未定义的行为是什么意思。我在注释中解释了这部分代码将数组的位置I初始化为
I+100
。因此
n[0]=100,n[1]=101
等等…@chrisw69我想我弄错了,我认为
n[I]=I+100
是未定义的行为,但现在不确定。我的C相当生锈
for (int a = 0; a < 100; a++) {
 number[100] += number[a]; // add number[a] to result
}
printf("%d\n",number[100]);