Red de conocimientos turísticos - Información de alquiler - Análisis de varias preguntas comunes de entrevistas en lenguaje C

Análisis de varias preguntas comunes de entrevistas en lenguaje C

Una vez fui a una pequeña empresa para una entrevista, pero no le presté mucha atención porque estaba muy ocupado en ese momento y no hice ningún preparativo. El examen que me dieron tenía muchas preguntas y se estipulaba que tenía que completarlo en una hora. Me sorprendió ver la cantidad de preguntas que incluían listas enlazadas, matrices multidimensionales y una. Muchos programas para ver. Afortunadamente, mis habilidades básicas eran bastante sólidas y no fue humillante. La misión está casi completa. Cuando estaba haciendo las preguntas de programación, me di cuenta de que hacía tanto tiempo que no escribía un programa que desperdiciaba demasiada energía en correcciones de errores triviales y mantenimiento de código. Seguí haciéndolo y me sorprendí secretamente. En una hora, si me acabara de graduar, aún sería posible completar esta pregunta. Después de trabajar durante algunos años, la presión sobre los programas de escritura era básicamente una misofobia. una buena comprensión de los principios de las funciones de biblioteca estándar y las habilidades de programación cada vez más degradadas. Debido al tiempo limitado en ese momento, el programa que escribí no era lo suficientemente perfecto. Después de pensarlo, rápidamente resumí estos problemas cuando llegué a casa. A continuación se presenta un análisis de los problemas de programación encontrados en las entrevistas. Es cierto que las personas en la sociedad están como en un lago y aprender es algo que no se puede relajar ni por un momento. Si no tienes cuidado, tu cabeza colgará sobre tu cabeza y tus nalgas te apuñalarán.

1. Obtenga el nombre del archivo en la ruta

char * FindFileName(char * s)

{

int len;

p>

char *tmp=NULL;

ASSERT(s != NULL);

for (len=strlen(s); len>0;len --)

{

if((s[len]=='/') ||(s[len]=='//'))

{

tmp = &s[len+1];

descanso;

}

}

return tmp;

}

2. Convertir números enteros a caracteres

char * i2a(int n, char *s)

{

int i, signo;

ASSERT(s != NULL);

si ((signo = n) < 0)

{

n = -n; //conversión a un número positivo para tomar el lugar más fácilmente

}

hacer

{

s[i++] = n % 10 + '0';

}

mientras ((n /= 10) > 0)

si (signo < 0)

{

s[i++] = '-';

}

s [i ] = '/0';

reverse(s);

}

3. Convertir tipo de carácter a tipo entero

int a2i(char * s)

{

int i, n, signo;

ASSERT(s != NULL);

for (i = 0; s[i] == ' '; i++)

{

NULL //Si hay un espacio delante de la cadena, salte todos los espacios

}

signo = (s[i] == '-') ?-1 :1;

si (s[i] = = '+' || s[i] == '-')

{

i++; //determina si es una cadena de enteros positivos o una cadena de enteros negativos< / p>

}

for (n = 0; s[i] > = '0' && s[i] <= '9'; i ++)

{

n = 10 * n + (s[i] - '0');

}

signo de retorno*n;

}

4. La cadena de salida se invierte y la memoria no se puede asignar dinámicamente

char * reverse(char * s)

{

int c, i, j;

ASSERT(s! = NULL);

for (i = 0, j = strlen(s) - 1; i < j; i++, j--)

{

c = s[i];

s[i] = s[j];

s[j] = c;

>}

return s;

}

5. Encuentra si la subcadena existe

int strindex(char *str,char * searchstr)

{

int end, i, j;

ASSERT((str ! = NULL) && (searchstr != NULL)

//Calcular la posición final

end = strlen(str) - strlen(searchstr);

if ( end > 0 )

{

para (i = 0; i <= fin; i++)

{

para (j = i; str[j] == searchstr[ j-i];j++ )

{

if ( searchstr[j-i+1] == '/0' ) /* Fin de la palabra de subcadena*/

{

return i + 1 /* Buscar subcadena*/

}

}

}

}

}

}

devuelve -1;