Cを学習するだけで、2つの関数を使用して数値の合計を取得する方法を理解しようとしていますが、結果が正しくありません。
関数mainの配列に格納されている10個の数値をユーザーに要求しようとしています。次に、合計が別の関数で計算され、メインに表示されます。
これは、複数の関数が機能しない元のコードです。
int main()
{
int n[10];
int index;
int sum_n = 0;
int largest_n;
int smallest_n;
int *p;
p = &n[10];
int a;
printf("Enter 10 Integers\n");
for (index = 0; index < 10; index ++){
scanf("%d", &n[index] );
sum_n += n[index];
}
printf("The Sum of numbers is %d\n", sum_n);
}
これが関数に変換しようとしているのですが、合計がうまくいきません:
int calculations (int);
int main()
{
int n[10];
int index;
int largest_n;
int smallest_n;
int *p;
p = &n[10];
int a;
printf("Enter 10 Integers\n");
for (index = 0; index < 10; index ++){
scanf("%d", &n[index] );
}
if (n[index] = 10){
//sum_n += n[index];
printf("The Sum of numbers is %d\n",calculations(n[index]));
}
&
int calculations (int num){
int sum_n = 0;
sum_n += num;
return sum_n;
}
1から10までの関数を使用して2番目のプログラムを実行すると、次のようになります。
私は露骨に間違ったことをしている、または私がしていることをまったく理解していないかのどちらかです。
関数を呼び出すたびに、関数内で宣言された変数がリセットされます。関数を呼び出すたびにリセットされない変数が必要な場合は、単純に静的にすることができます。
さらに、引数n [10]を渡していますが、配列にはn [0]からn [9]までの数値が格納されています。また、10個すべての数値の合計が必要な場合は、すべての数値に対して計算関数を呼び出す必要があります。そうしないと、配列全体を渡すことができます。ここに変更されたコードがあります。
#include<stdio.h>
int calculations (int);
int main()
{
int n[10];
int index;
int largest_n;
int smallest_n;
int *p;
p = &n[10];
int a;
int ans=0;
printf("Enter 10 Integers\n");
for (index = 0; index < 10; index ++){
scanf("%d",&n[index]);
ans = calculations(n[index]);
}
printf("The Sum of numbers is %d\n",ans);
}
int calculations (int num){
static int sum_n;
sum_n += num;
return sum_n;
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加