Colección de citas famosas - Colección de consignas - 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, estaba muy ocupado en el trabajo y no hice ningún preparativo. El examen que me dieron tenía muchas preguntas y tuve que completarlo en una hora. Me sorprendió ver la cantidad de preguntas que incluían listas vinculadas, matrices multidimensionales y mucha lectura de programas. Afortunadamente, mis habilidades básicas eran bastante sólidas y no perdí nada. Cuando terminé las preguntas de programación, me di cuenta de que no había escrito un programa durante mucho tiempo y desperdicié demasiada energía en la corrección de errores triviales y el mantenimiento del código. Seguí haciéndolo y me sorprendí secretamente. En una hora, si me acabara de graduar, todavía sería posible completar este problema. Después de trabajar durante algunos años, la presión disminuyó gradualmente y básicamente lo usé cuando. Escribir programas. No conocía las funciones estándar de la biblioteca. La comprensión de los principios y las habilidades de programación están empeorando cada vez más. Como el tiempo era escaso en ese momento, el programa que escribí no era lo suficientemente perfecto. Lo pensé nuevamente más tarde y rápidamente resumí estos problemas nuevamente cuando llegué a casa. El siguiente es un análisis de los problemas de programación encontrados en la entrevista. Es cierto que las personas en la sociedad son como ríos y lagos, y aprender es algo que no se puede relajar ni por un momento. Si no tienes cuidado, no podrás protegerte durante la noche, sino que volcarás en la cuneta.

1. Obtenga el nombre del archivo en la ruta

char * FindFileName(char * s)

{

int len;<. /p> 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 tipo entero a tipo carácter

char * i2a(int n, char *s)

{

int i, signo;

ASSERT(s != NULL);

si ((signo = n) < 0)

{

n = -n; //Convierte a un número positivo para facilitar la selección de posición

}

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 espacios antes de la cadena, omita todos; espacios

}

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

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

{

i++ //Determina si es una cadena entera positiva o negativa

}

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

{

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

}

signo de retorno*n;

}

4. Texto inverso de la cadena de salida, 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 != NULO) &

& (searchstr != NULL));

//Calcular la posición final

end = strlen(str) - strlen(searchstr); fin > 0 )

{

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

{

para ( j = i; cadena[j] == cadena de búsqueda[j-i]; j++ )

{

if (cadena de búsqueda[j-i+1] == '/0' ) /* sub Fin de la cadena palabra*/

{

return i + 1 /* Subcadena encontrada*/

}

}

}

}

devuelve -1;

}