Prompting the user to enter Name value pairs and then printing it out using a Name_value class
Yes, global variables really are that bad. Do try to avoid them.
Personally I find it easier to read if you add some vertical space to your member initializer list like so:

Foo(int a, int b)
    : a{a}
    , b{b}
{}

Don't omit braces as that can lead to hard to find bugs (For example Apple's goto fail bug would have been much easier to spot if braces had been used.
Prefer prefix over postfix
It's okay to use whitespace more leniently

// This might be debatable
pairs.push_back(Name_value(x,y));

// But this just looks strange
catch (exception&amp;e)


Considering that you add a space everywhere else in the code you might as well add one in those cases.
Your naming could be improved. Namely put_in, x and y are not the greatest variable names. Also why is Name capitalized? Why names and scores when they only hold one name/score? Remember that variable names should always reflect intent as your goal is to write self-documenting code.
This code is confusing

pairs = put_in(names, scores); //put the values into the vector list


First get rid of that comment. Second, why are you returning the vector after you already added the values to it? Why even use a function for this in the first place? Simply doing:

pairs.push_back(Name_value(names, scores));


Has the same effect.
While you didn't write it, you still use using namespace std included via the header file provided by Bjarne(?).
Just a reminder that this is considered bad
but hopefully it will be explained further into the book as well.
I'm no expert on exceptions but the way you use them seems wonky, maybe someone else can chime in here.