Относно първия въпрос наистина общия вид на дифиниране на функция е този
return_type name_of_func(type a,type b..)
{
return x; //
}
като това дали ще се използват прототипи на функциите или не зависи изцяло от програмиста или по друг начин
#include <iostream.h>
#include <conio.h>
int func(int a,int

{
return a+b;//
}
main()
{
cout<<"a=";
int a;
cin>>a;
cout<<"b=";
int b;
cin>>b;
cout<<"a+b="<<func(a,b);
getch();
}
но ако дифинирането на func е след главната функция т.е main() тогава е необходимо да декларираш func преди main() или :
#include <iostream.h>
#include <conio.h>
int func(int,int); //prototip na func
main()
{
cout<<"a=";
int a;
cin>>a;
cout<<"b=";
int b;
cin>>b;
cout<<"a+b="<<func(a,b);
getch();
}
int func(int a,int

{
return a+b;//
}