Construct function prototypes that match the following descriptions:

i) ab () takes no arguments and has no return value.
ii) start() takes an int argument and returns a float.
iii) mk() takes two type double arguments and returns a double.
iv) func6() returns an int and takes three arguments. The first and third arguments are of
type double. The second argument is of type int.
v) func4() returns a char and takes one argument that is also of type char.

Sure! Here are the function prototypes that match the given descriptions:

i) `void ab();`

Explanation: The function `ab()` takes no arguments and has no return value. The data type `void` is used to specify that the function does not return any value.

ii) `float start(int);`

Explanation: The function `start()` takes an integer argument and returns a float. The argument is specified within the parentheses after the function name.

iii) `double mk(double, double);`

Explanation: The function `mk()` takes two double arguments and returns a double. The arguments are specified within the parentheses after the function name, with their corresponding data types.

iv) `int func6(double, int, double);`

Explanation: The function `func6()` returns an integer and takes three arguments. The first and third arguments are of type double, while the second argument is of type int. The arguments are specified within the parentheses after the function name, with their corresponding data types.

v) `char func4(char);`

Explanation: The function `func4()` returns a character and takes one argument of type char. The argument is specified within the parentheses after the function name, with its corresponding data type.

Remember that these are just the function prototypes. You would still need to define the functions separately, specifying their actual functionality.