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) p>
{
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 p>
}
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;
}