В этом случае:
if(sm>c)
{
for(i=0;i<strlen(s);i++)
{
cout<<tolower(s[i])<<endl;
}
}
да, вы должны ожидать значение ASCII.Это потому, что tolower - это функция, которая возвращает целое число, а cout выводит непосредственно то, что ей дано, она не выполняет никаких манипуляций.
Однако вы сказали, что в этом случае:
else
{
for(i=0;i<strlen(s);i++)
{
//cout<<toupper(s[i])<<endl;
putchar(toupper(s[i]));
}
}
Вы также получаете значение ASCII, но я думаю, что вы ошиблись.Это должно вывести символ, потому что функция putchar () не только выводит то, что ему дано, но и заранее выполняет манипуляции, чтобы убедиться, что он в формате char.