**a) Here is a line of code : sum = a+b**

write a complete c function named fun that has a and b parameters and return their calculated sum via the return statement. Assume all the values are integers

Ans)

/* function to calculate sum of two given integers */

int fun(int a, int b)

{

int sum_value = 0;

sum_value = a + b;

return sum_value;

}

**b) What is the purpose of a function prototype ? When is a prototype not needed in the program ?**

Ans)

The function prototype is considered as a best practise to let the compiler know how to respond to a function when it is called. In fact it allows compiler to ensure the parameters passed and values returned from the function is valid by comparing with the function prototype. It actually lets compiler know that these are the arguments function can accept and their return value types. Thats why other name for function prototype is function declaration.

Although function prototype is considered to be a best practise it is not mandatory if you define function before it is called. Here is an example:

#include <stdio.h>

/*

program to calculate sum and return value to the caller

*/

int fun(int a, int b)

{

int sum_value = 0;

sum_value = a + b;

return sum_value;

}

int main()

{

int x, y, sum;

printf(“nEnter two integers: “);

scanf(“%d %d”, &x, &y);

sum = fun(x,y);

printf(“nsum of the two numbers %d and %d is %dn”, x, y, sum);

}

**c) Suppose the function fun is also expected to compute the difference(a-b) and the product(a*b). Rewrite your function so that it can send all three values(sum, diff, prod)back. Do not use structure.**

Ans)

/* function to calculate sum, subtraction and multiplication of two given integers */

void fun(int a, int b, int* add, int* sub, int* mult)

{

*add = a + b;

*sub = a – b;

*mult = a * b;

}

**d) suppose you have the following code fragment:**

int x, y;

printf(“Enter two integers: “);

scanf(“%d %d”, &x, &y);

**//your function call to fun goes after this line**

**Write the code needed to invoke(call) your function. Pass it the x,y values.**

**Also declare any other variables you need to hold the values that the function sends back.**

Ans)

Code:

Unix Terminal> cat arithmetic.c

#include <stdio.h>

/*

program to calculate sum, difference and product of given two integers

*/

/* function prototype declaration */

void fun(int, int, int *, int *, int *);

int main()

{

int x, y, sum, diff, prod;

printf(“nEnter two integers: “);

scanf(“%d %d”, &x, &y);

fun(x, y, &sum, &diff, &prod);

printf(“nsum of the two numbers %d and %d is %dn”, x, y, sum);

printf(“ndifference of the two numbers %d and %d is %dn”, x, y, diff);

printf(“nproduct of the two numbers %d and %d is %dn”, x, y, prod);

}

/* function to calculate sum, subtraction and multiplication of two given integers */

void fun(int a, int b, int* add, int* sub, int* mult)

{

*add = a + b;

*sub = a – b;

*mult = a * b;

}

Execution and output:

Unix Terminal> ./a.out

Enter two integers: 29 89

sum of the two numbers 29 and 89 is 118

difference of the two numbers 29 and 89 is -60

product of the two numbers 29 and 89 is 2581

Unix Terminal> ./a.out

Enter two integers: 10 19

sum of the two numbers 10 and 19 is 29

difference of the two numbers 10 and 19 is -9

product of the two numbers 10 and 19 is 190

Unix Terminal>