アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語の問題について分からないところがあります!

#include <stdio.h>

void print_int_dim(int *pa, int n);
int sum_int_dim(int *pa, int n);

int main(void)
{
int a[] = { 5, 9, 6, 3, 4};
int n;
int sum;

n = 5;

sum = sum_int_dim(a, n);
printf("合計 = %d\n", sum);

print_int_dim(a, n);


return 0;
}

/*
整数型配列の内容n件の合計を返す
int sum_int_dim(int *pa, int n)
引数 : int *pa :整数型配列
  int n :データ数
戻り値 : int :合計
*/

int sum_int_dim(int *pa, int n)
{
int sum = 0;
int pend;
pend = pa + n;
if(pa < pend) {
sum += *pa;
pa++;
}
return sum;
}

void print_int_dim(int *pa, int n)
{
int *pend;

pend = pa + n;
while (pa < pend) {
printf("%d", *pa);
pa++;
}
printf("\n");

return ;
}

この実行結果は

合計 = 5
59634

になりますが、

合計 = 27
59634

このようにしたいのですがどうすればよろしいでしょうか。

回答お待ちしています。

質問者からの補足コメント

  • 別のパソコンでコンパイルしたら
    合計 = 0
    59634
    でした。すみません。

    int n;
    int sum;

    n = 5;

    は元から問題に書いてある文です。

      補足日時:2022/03/09 16:52

A 回答 (2件)

int sum = 0;


int pend;
pend = pa + n;
if(pa < pend) {
sum += *pa;
pa++;
}

int sum = 0;
for(int i = 0;i < n;i++) {
sum += pa[i];
}
にかえるとかの工夫が必要です。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2022/03/09 18:44

コードの問題ではなく、


≫≫ int a[] = { 5, 9, 6, 3, 4};
≫≫ int n;
≫≫ n = 5;
なので、できません。

なお、正しく動作しているのでしたら、
≫≫ 合計 = 5
≫≫ 59634
にはならないと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!