C プログラミングにおけるユーザー定義関数のタイプ
C プログラミングにおけるユーザー定義関数の種類
このチュートリアルでは、関数を使用して同じ問題を解決するために使用できるさまざまなアプローチについて学習します。
以下の 4 つのプログラムは、ユーザーが入力した整数が素数かどうかをチェックします。
以下のこれらすべてのプログラムの出力は同じであり、各例でユーザー定義関数を作成しました。ただし、各例で採用したアプローチは異なります。
例 1:引数が渡されず、戻り値もありません
#include <stdio.h>
void checkPrimeNumber();
int main()
{
checkPrimeNumber(); // argument is not passed
return 0;
}
// return type is void meaning doesn't return any value
void checkPrimeNumber()
{
int n, i, flag = 0;
printf("Enter a positive integer: ");
scanf("%d",&n);
for(i=2; i <= n/2; ++i)
{
if(n%i == 0)
{
flag = 1;
}
}
if (flag == 1)
printf("%d is not a prime number.", n);
else
printf("%d is a prime number.", n);
}
checkPrimeNumber()
関数はユーザーからの入力を受け取り、それが素数かどうかをチェックして、画面に表示します。
checkPrimeNumber();
の空の括弧 main()
内のステートメント function は、関数に引数が渡されないことを示します。
関数の戻り値の型は void
です .したがって、関数から値は返されません。
例 2:引数が渡されず、戻り値が返される
#include <stdio.h>
int getInteger();
int main()
{
int n, i, flag = 0;
// no argument is passed
n = getInteger();
for(i=2; i<=n/2; ++i)
{
if(n%i==0){
flag = 1;
break;
}
}
if (flag == 1)
printf("%d is not a prime number.", n);
else
printf("%d is a prime number.", n);
return 0;
}
// returns integer entered by the user
int getInteger()
{
int n;
printf("Enter a positive integer: ");
scanf("%d",&n);
return n;
}
n = getInteger();
の空の括弧 ステートメントは、関数に引数が渡されないことを示します。そして、関数から返された値が n に代入されます .
ここでは、getInteger()
関数はユーザーからの入力を受け取り、それを返します。素数かどうかを調べるコードは main()
の中にあります 関数。
例 3:引数は渡されたが戻り値がない
#include <stdio.h>
void checkPrimeAndDisplay(int n);
int main()
{
int n;
printf("Enter a positive integer: ");
scanf("%d",&n);
// n is passed to the function
checkPrimeAndDisplay(n);
return 0;
}
// return type is void meaning doesn't return any value
void checkPrimeAndDisplay(int n)
{
int i, flag = 0;
for(i=2; i <= n/2; ++i)
{
if(n%i == 0){
flag = 1;
break;
}
}
if(flag == 1)
printf("%d is not a prime number.",n);
else
printf("%d is a prime number.", n);
}
ユーザーが入力した整数値は checkPrimeAndDisplay()
に渡されます 関数。
ここでは、checkPrimeAndDisplay()
関数は、渡された引数が素数かどうかをチェックし、適切なメッセージを表示します。
例 4:渡された引数と戻り値
#include <stdio.h>
int checkPrimeNumber(int n);
int main()
{
int n, flag;
printf("Enter a positive integer: ");
scanf("%d",&n);
// n is passed to the checkPrimeNumber() function
// the returned value is assigned to the flag variable
flag = checkPrimeNumber(n);
if(flag == 1)
printf("%d is not a prime number",n);
else
printf("%d is a prime number",n);
return 0;
}
// int is returned from the function
int checkPrimeNumber(int n)
{
int i;
for(i=2; i <= n/2; ++i)
{
if(n%i == 0)
return 1;
}
return 0;
}
ユーザーからの入力は checkPrimeNumber()
に渡されます 関数。
checkPrimeNumber()
関数は、渡された引数が素数かどうかをチェックします。
渡された引数が素数の場合、関数は 0 を返します。渡された引数が素数でない場合、関数は 1 を返します。戻り値は flag に割り当てられます。
フラグかどうかに応じて 0 または 1 の場合、適切なメッセージが main()
から出力されます 関数。
どちらのアプローチが優れていますか?
まあ、それはあなたが解決しようとしている問題に依存します。この場合、引数を渡して関数から値を返す (例 4) 方が適切です。
関数は特定のタスクを実行する必要があります。 checkPrimeNumber()
関数はユーザーからの入力を受け付けず、適切なメッセージを表示しません。数値が素数かどうかのみをチェックします。
C言語