If you're trying to achieve a layout in CSS without using a table, it may not be possible directly. However, you can create a "faux column" as a workaround.
Check out this example on JSFiddle: http://jsfiddle.net/3wXv2/
Here is the updated HTML with simplified class names:
<div class="wrap d">
<div class="a">aaa</div>
<div class="bc">
<div class="b">bbb</div>
<div class="c">ccc</div>
</div>
ddd
</div>
For the CSS:
.wrap{
width:500px;
height:500px;
background-color:yellow;
}
.a{
float:left;
height:100%;
background-color:green;
}
.bc{
float:left;
height:100%;
background-color:gray;
}
.b{
background-color:cyan;
height:25px;
}
.c{
background-color:gray;
}
The idea behind this faux column technique is that the container column (.bc) mimics the appearance of extending background, creating the illusion of a full-height column for '.c'.
You can learn more about Faux Columns from this resource: http://www.alistapart.com/articles/fauxcolumns/
Remember, setting the height to 100% doesn't necessarily mean taking up remaining space; rather, it matches the parent's height. In this case, ".bc" inherits the height of ".wrap", which is set at 500px.
Keep in mind that if the content in "div.c" exceeds the available height, the layout might break.
I hope this clarifies things for you!
Cheers!