For better understanding of arguments and return type in functions, user-defined functions can be categorised as:

  1. Function with no arguments and no return value
  2. Function with no arguments and return value
  3. Function with arguments but no return value
  4. Function with arguments and return value.

Let's take an example to find whether a number is prime or not using above 4 categories of user defined functions.

Function with no arguments and no return value.

// 1.program to check whether a number entered by user is prime or not 
// 2.using function with no arguments and no return value

#include <stdio.h>
void prime();
int main(){
    prime();      //No argument is passed to prime().
    return 0;
}
void prime(){  
/* There is no return value to calling function main(). Hence, return type of prime() is void */
    int num,i,flag=0;
    printf("Enter positive integer enter to check:\n");
    scanf("%d",&num);
    for(i=2;i<=num/2;++i){
        if(num%i==0){
             flag=1;
         }
    }
    if (flag==1)
        printf("%d is not prime",num);
    else
       printf("%d is prime",num);  
    }

Function prime() is used for asking user a input, check for whether it is prime of not and display it accordingly. No argument is passed and returned form prime() function.

Function with no arguments but return value

// 1.program to check whether a number entered by user is prime or not 
// 2.using function with no arguments but having return value 

#include <stdio.h>
int input();
int main(){
    int num,i,flag = 0;
    num=input();     /* No argument is passed to input() */
    for(i=2; i<=num/2; ++i){
    if(num%i==0){
        flag = 1;
        break;
    }
    }
    if(flag == 1)
        printf("%d is not prime",num);
    else
        printf("%d is prime", num);
    return 0;
}
int input(){   /* Integer value is returned from input() to calling function */
    int n;
    printf("Enter positive integer to check:\n");
    scanf("%d",&n);
    return n;
}

There is no argument passed to input() function But, the value of n is returned from input() to main() function.

Function with arguments and no return value

// 1.Program to check whether a number entered by user is prime or not 
// 2.using function with arguments and no return value

#include <stdio.h>
void check_display(int n);
int main(){
    int num;
    printf("Enter positive enter to check:\n");
    scanf("%d",&num);
    check_display(num);  /* Argument num is passed to function. */
    return 0;
}
void check_display(int n){     
// There is no return value to calling function. 
// Hence, return type of function is void. */
    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 prime",n);
    else
        printf("%d is prime", n);
}

Here, check_display() function is used for check whether it is prime or not and display it accordingly. Here, argument is passed to user-defined function but, value is not returned from it to calling function.

Function with argument and a return value

// 1.Program to check whether a number entered by user is prime or not 
// 2.using function with argument and return value 

#include <stdio.h>
int check(int n);
int main(){
    int num,num_check=0;
    printf("Enter positive enter to check:\n");
    scanf("%d",&num);
    num_check=check(num); /* Argument num is passed to check() function. */
    if(num_check==1)
       printf("%d is not prime",num);
    else
       printf("%d is prime",num);
    return 0;
}
int check(int n){   
/* Integer value is returned from function check() */ 
    int i;
    for(i=2;i<=n/2;++i){
    if(n%i==0)
        return 1;
}
   return 0;
}

Here, check() function is used for checking whether a number is prime or not. In this program, input from user is passed to function check() and integer value is returned from it. If input the number is prime, 0 is returned and if number is not prime, 1 is returned.