Interview Question
Country: United States
#include <stdio.h>
#include <string.h>
int main() {
char user_string[257];
unsigned char ascii[26];
char c;
unsigned short len;
int i;
memset(ascii, 0, sizeof(ascii));
memset(user_string, 0, sizeof(user_string));
printf("Enter a String: ");
gets(user_string);
len = strlen(user_string);
printf("len = %d\n",len);
if (len > 255) {
printf("Please enter a string which is less than 255\n");
} else {
for (i=0; i < len; i++) {
if ((user_string[i] >= 0x41) && (user_string[i] <= 0x5A)) {
++ascii[user_string[i] - 0x41];
} else if ((user_string[i] >= 0x61) && (user_string[i] <= 0x7A)) {
++ascii[user_string[i] - 0x61];
}
}
c = 0x61;
for (i=0; i < 26;i++) {
printf("%c : %2d ",c, ascii[i]);
++c;
}
}
return 0;
}
#include <stdio.h>
#include <string.h>
int main() {
char user_string[257];
unsigned char ascii[26];
char c;
unsigned short len;
int i;
memset(ascii, 0, sizeof(ascii));
memset(user_string, 0, sizeof(user_string));
printf("Enter a String: ");
gets(user_string);
len = strlen(user_string);
printf("len = %d\n",len);
if (len > 255) {
printf("Please enter a string which is less than 255\n");
} else {
for (i=0; i < len; i++) {
if ((user_string[i] >= 0x41) && (user_string[i] <= 0x5A)) {
++ascii[user_string[i] - 0x41];
} else if ((user_string[i] >= 0x61) && (user_string[i] <= 0x7A)) {
++ascii[user_string[i] - 0x61];
}
}
c = 0x61;
for (i=0; i < 26;i++) {
printf("%c : %2d ",c, ascii[i]);
++c;
}
}
return 0;
}
void CCDemo(std::string&s, int chars[])
{
int slen = s.length();
char *ch = new char[slen+1];
strcpy(ch, s.c_str());
int index ;
for ( int i = 0 ; i < slen ; ++i )
{
if ( ch[i] == '.' )
continue ;
else
{
index = toupper(ch[i]) - 'A';
chars[index]++;
}
}
void CharCount()
{
std::string s = "Time and Tide Wait for No Man";
int chars[26] = {0};
CCDemo(s,chars);
for (int i = 0; i < 26; ++i)
std::cout << char('a'+i) << ':' << chars[i] << std::endl ;
}
You have already explained the logic..... This is java implementation of the same
- Joey March 07, 2016