Simple random number guessing game
One variable per line please.

int gess,i=0,found=0,  r = rand()%100;


This makes the code hard to read. There is also one corner case (with pointers) were this will not work as expected for beginners. As a result this is usually banned in most companies coding standards.

You are using found as a boolean variable.
Treat it as such. use TRUE/FALSE.

I would change the while() into a for(;;) loop. Then you can remove all the increments.

while (i&lt;10 &amp;&amp; found==0)

--

for(int i = 0; i &lt; 10 &amp;&amp; !found; ++i)


White space is your friend:

if (found==1&amp;&amp;gess==1)  // This is hard to read and will get worse with more conditions.

if (found &amp;&amp; (guess == 1)) // much more readable
//  ^^^^^  boolean use it as such.


Your "st", "nd", "rd", "th" is not correct.

10-19    =&gt; th
x1       =&gt; st
x2       =&gt; nd
x3       =&gt; rd
x[4-9]   =&gt; th


Also you print basically the same string every time on success. So we not have one print statement and just separate the logic for getting the ending.
I would change the logic:

if (!found)
{
    printf("\n Never mind try again");
}
else
{
    char const* ext = "th";
    if ((gess &lt; 10) || (gess &gt;= 20))  // 10-&gt;19 already set
    {
        int end = gess % 10;
        if      (end == 1) { ext = "st";}
        else if (end == 2) { ext = "nd";}
        else if (end == 3) { ext = "rd";} 
    }

    printf("\n Very good the number is %d this is your %d%s gess", gess, i, ext);
}