Red de conocimiento informático - Conocimiento sistemático - Colección de preguntas de prueba preliminares para el 17º grupo de popularización de NOIP (lenguaje C)

Colección de preguntas de prueba preliminares para el 17º grupo de popularización de NOIP (lenguaje C)

I. Preguntas de opción múltiple (***20 preguntas, cada pregunta vale 1,5 puntos, totalizando 30 puntos. Cada pregunta tiene una y sólo una opción correcta).

1. En binario, 1101001 + ( ) = 1110110.

A.1011 B. 1101 C. 1010 D. 1111

2. El código ASCII de 0 " es 48, luego el código ASCII del carácter "9 " es ().

A.39 B. 57 C. 120 D. Depende de la computadora específica

3. Una tarjeta SD con una capacidad de 8 GB puede almacenar aproximadamente ( ) 2 MB de archivos digitales.

A.1600 B. 2000 C. 4000 D. 16000

4. La Ley de Moore fue propuesta por Gordon Moore, uno de los fundadores de Intel. Gordon Moore es uno de los fundadores de Intel Corporation. Según la Ley de Moore, el nivel de integración de un único circuito integrado se ha duplicado aproximadamente cada ( ) mes durante las últimas décadas y seguirá haciéndolo en los años futuros previsibles.

A. 1 B. 6 C. 18 D. 36

5. Una gráfica completa no dirigida es una gráfica simple y hay exactamente una línea entre cada par de vértices en la lado gráfico. Se sabe que el gráfico completo no dirigido G tiene 7 vértices, luego **** tiene ( ) aristas.

A.7 B. 21 C. 42 D. 49

6.

A. Disco duro B. Caché C. Memoria D. Unidad central de procesamiento

7. Si la profundidad del nodo raíz se registra como 1, entonces habrá un árbol binario. con exactamente 2011 nodos de hojas. La profundidad mínima es ().

A.10 B. 11 C. 12 D. 13

8. Sonó el timbre de la clase de educación física y los alumnos corrieron hacia el patio de recreo uno tras otro y siguieron al maestro. requisitos del maestro de mayor a mayor. Párese en una fila hasta la posición más corta. Después de que cada estudiante llega al patio de recreo en orden, camina desde el final de la fila hasta el frente de la fila, encuentra al primer estudiante que es más alto que él y luego se para detrás de él. Este método de tomar partido es similar al algoritmo ().

A. Clasificación rápida B. Clasificación por inserción C. Clasificación por burbuja D. Clasificación por combinación

9. El número binario de un entero positivo tiene 100 dígitos y su número hexadecimal tiene ( ) dígitos.

A.7 b. 13 c. 25 d. No estoy seguro

10. Algunas personas piensan que poner archivos en la papelera de reciclaje antes de enviar su computadora personal a reparar será equivalente. para eliminar el archivo. Esta idea es ( ).

A. Correcto, poner archivos en la Papelera de reciclaje significa que se han eliminado por completo y no se pueden recuperar.

B. Incorrecto, solo vaciar la Papelera de reciclaje significa que se han eliminado por completo. , irrecuperable

C. Incorrecto, incluso si se vacía la Papelera de reciclaje, los archivos simplemente se marcan como eliminados, aún pueden recuperarse mediante el software de recuperación

D. Mientras el archivo siga en el disco duro, nunca se eliminará por completo

11. La estructura de datos requerida para la búsqueda en amplitud es ().

A. Lista enlazada B. Cola C. Pila D. Tabla hash

12. Al escribir programas en lenguajes de alto nivel, el "espacio" en "complejidad del espacio" generalmente se refiere. a ( ).

A. La cantidad teórica de espacio de memoria ocupada cuando el programa se está ejecutando

B. Teóricamente la cantidad de espacio de matriz ocupada cuando el programa se está ejecutando

C. Cuando el programa se está ejecutando Espacio en el disco duro teóricamente ocupado

D. Espacio en el disco duro teóricamente ocupado por el archivo fuente del programa

13. que consta de n elementos de k, el peor de los casos es ejecutar una consulta para averiguar si hay un elemento de la clave k, entonces el peor de los casos es la complejidad del tiempo de ejecución ().

A.O(1) B. O(log n) C. O(n) D. O(n log n)

14. propia tecnología de autenticación biométrica. En la actualidad, tecnologías como el reconocimiento de huellas dactilares, el reconocimiento de iris y el reconocimiento facial se han utilizado ampliamente en el gobierno, la banca, la seguridad y la defensa, y otros campos. Las siguientes no son tecnologías biométricas y sus aplicaciones ( ).

A. Verificación de las venas del dedo B. Verificación de la marcha C. Verificación de la contraseña del cajero automático D. Verificación de voz

15. Hay un documento que debe comprimirse mediante codificación binaria de Huffman. En aras de la simplicidad, supongamos que este párrafo de texto consta de sólo cuatro caracteres "Zhi", "Hu", "Zhe" y "Ye". Los tiempos de aparición de estos caracteres son 700, 600, 300 y 200 respectivamente, luego la longitud de codificación del carácter "también" es ().

A.1 B. 2 C. 3 D. 4

16. ¿Cuál de las siguientes afirmaciones sobre el lenguaje ensamblador es incorrecta ( )?

A. Es un lenguaje de programación específico del hardware

B. Su tamaño de código es mayor que el de los lenguajes de alto nivel y no es fácil de depurar al escribir programas complejos

C. Permite el acceso directo a registros, ubicaciones de memoria y puertos de E/S

D Con la aparición de los lenguajes de alto nivel, se ha eliminado por completo

17.>

17.() es un método de búsqueda preferencial, que busca hacia adelante según los criterios de selección para lograr el objetivo. Cuando se busca un determinado punto y se descubre que la elección original no fue óptima o no se logró el objetivo, retrocederá un paso y tomará una nueva elección.

A. Método de retroceso B. Método de enumeración C. Método de programación dinámica D. Método codicioso

18, ( ) fue otorgado a William Shockley, John Bardeen y Walter -Bratan. , por su trabajo sobre semiconductores y el descubrimiento del efecto transistor.

A. Premio Nobel de Física

B. John von Bardeen ganó el Premio Nobel de Física.

B. Premio John von Neumann de Física Premio Neumann

C. Premio Turing

Premio D. Donald E. Knuth

19. Se dice que un grafo dirigido está fuertemente conectado si hay un camino desde cada nodo a cualquier otra imagen de nodo. Por ejemplo, la imagen de la derecha es un gráfico fuertemente conectado. De hecho, después de quitar el borde ( ), todavía está fuertemente conectado.

A. a B. b C. c D. d

20. Desde ENIAC hasta los ordenadores más avanzados de la actualidad, la arquitectura von Neumann siempre ha jugado un papel importante en la El desarrollo de las computadoras juega un papel importante. La arquitectura de Neumann siempre ha jugado un papel importante. La arquitectura de von Neumann siempre ha ocupado un lugar importante. El núcleo de la arquitectura Neumann es ().

A. Uso de circuitos de conmutación B. Uso de dispositivos semiconductores

C Uso de programas almacenados y principios de control de programas D. Uso de entrada de teclado

II. , Resolución de problemas (***2 preguntas, 5 puntos cada una, ***10 puntos)

1. Cada prueba tiene un número de serie binario de 8 dígitos. Un número de secuencia es válido si y sólo si contiene un número par de unos. Por ejemplo, 00000000, 01010011 son números de serie válidos, pero 11111110 no lo son. Entonces, hay ________ números de serie válidos****.

2. Las operaciones básicas para definir una cadena son tres operaciones: eliminar un carácter, insertar un carácter y modificar un carácter a otro. La distancia de edición desde la cadena "ABCDEFG" hasta la cadena "BADECG" es ________.

El número mínimo de pasos necesarios para cambiar la cadena A a la cadena B se denomina distancia de edición de la cadena A a la cadena B.

3. Leer el programa y escribir los resultados (***4 preguntas, 8 puntos cada una, ***32 puntos en total)

1.

# incluir

int main() {

int i, n, m, ans

scanf("%d%d " , &n, &m);

i = n;

ans = 0

mientras (i <= m) {

ans += i;

i++;

}

printf("%d\n",

devuelve 0 ;

}

Entrada: 10 20

Salida: _________

2. h>

#include

#include

#include

3.h>

# define TAMAÑO 20

int main()

{

char map[] = "2223334445556667778889999 " ;

char tel[TAMAÑO];

int i;

scanf("% s", tel);

para ( i = 0; i < strlen(tel); i++)

if ((tel[i] >= '0') && (tel[i] <= '9')))

printf("%c", tel[i]);

else if ((tel[i] >= 'A') && (tel[i] <= 'Z' ) )

printf("%c", mapa[tel[i] - 'A']

retorno

}

Entrada: CCF-NOIP- 2011

Salida: _________

3.

#include

#include

#define TAMAÑO 100

int main()

{

int n, i, suma, x, a[TAMAÑO];

scanf("%d", &n

memset(a, 0, tamaño de(a)); p > for (i = 1; i <= n; i++) {

scanf("%d", &x

a[x]++; >

}

i = 0;

suma = 0;

mientras (suma < (n / 2 + 1)) {

i++;

suma += a[i];

}

printf("%d\n", i

devolver 0;

}

Entrada:

11

>

4 5 6 6 4 3 3 2 3 2 1

Salida: _________

4

#include < ;stdio.h> <. /p>

int solve(int n, int m)

{

int i, suma

if (m == 1)

devolver 1;

suma = 0;

para (i = 1; i < n; i++)

suma += resolver (i, m - 1);

devolver suma

}

int main.

int main()

{

int n, m

scanf("%d %d", &n, &m;

printf("%d); \n", solve(n, m));

devuelve 0;

}

Entrada: 7 4

Salida: _________

4. Procedimientos de mejora (los primeros 11 espacios en blanco, 2 puntos por cada espacio en blanco, los últimos 2 espacios en blanco, 3 puntos por cada espacio en blanco, total 28 puntos)

1... (Submatriz) Ingrese la matriz a de n1*m1 y la matriz b de n2*m2, y pregunte si hay una submatriz en a que sea igual a b. Si existe, genere las coordenadas de la esquina superior izquierda de todas las submatrices; si no existe, genere "sin respuesta".

#include

#define TAMAÑO 50

int n1, m1, n2, m2, a[TAMAÑO][TAMAÑO], b [TAMAÑO][TAMAÑO];

int main()

{

int i, j, k1, k2, bueno, haveAns;

scanf("%d %d", & n1, &m1

para (i = 1; i <= n1; i++)

para (j = 1; j <= m1; j++)

scanf("%d", &a[i][j]); & m2);

para (i = 1; i <= n2; i++)

para (j = 1; j <= m2; j++)

① ;

haveAns = 0;

para (i = 1; i <= n1 - n2 + 1; i++)

para (j = 1; j <= ② ; j++) {

para (k1 = 1; k1 <= n2; k1++)

para (k2 = 1; k2 <= ④ ; k2++) {

si (a[i + k1 - 1][j + k2 - 1] != b[k1][k2])

bueno = 0;

}

if (bueno == 1) {

printf("%d %d\n", i, j)

⑤ ;

}

}

si (haveAns == 0)

printf(" No hay respuesta\n");

devuelve 0;

}

2. (Cuadrado entero grande) Ingrese un número entero positivo n (1 ≤ n <10100) e intenta dividirlo en dos para encontrar la parte entera de su raíz cuadrada.

#include

#include

#define TAMAÑO 200

typedef struct nodo {

int len, num[TAMAÑO] ;

} enormeint;

// donde len representa el número de dígitos en un número entero grande; representa el primer dígito, num[2] representa el segundo dígito, y así sucesivamente

hugeint times(hugeint a, hugeint b)

// Calcula el producto de enteros grandes a y b

{

int i, j;

enormeint ans;

memset(ans.num, 0, sizeof(ans. num) );

para (i = 1; i <= a.len; i++)

para (j = 1; j <= b.len; j++)

① += a.num[i] * b.num[j];

for (i = 1; i <= a.len + b.len; i++) {

ans.num[i + 1] += ans.num[i] / 10

}

si; (ans .num[a.len + b.len] > 0)

ans.len = a.len + b.len

En caso contrario

ans.len = a.len + b.len - 1;

Devuelve ans;

}

enorme add(enorme a, enormeint b)

// Calcula la suma de enteros grandes a y b

{

int i

Hugeint ans; > memset( ans.num, 0, sizeof(ans.num));

if (a.len > b.len)

ans.len = a.len

else

ans.len = b.len;

for (i = 1; i <= ans.len; i++) {

ans.num[i] += ③

ans.num[i + 1] += ans.num[i] / 10; ] %= 10;

}

si (ans.num[ans.len + 1] > 0)

ans.len++;

return ans;

}

enorme promedio(enorme a, enormeint b)

// Calcula la parte entera del promedio de enteros grandes a. y b

{

int i

enormeint ans

ans = agregar (a, b

);

for ( i = ans.len; i >= 2; i--) {

ans.num[i - 1] += ( ④ ) * 10; > ans.num[ i] /=

2;

}

ans.num[1] /= 2

si (ans.num[ans.len] == 0)

p> p>

ans.len--;

return ans;

}

enorme plusdos(enorme a)

/ / Calcula el resultado de sumar 2 a un entero grande a

{

int

hugeint ans; = a;

p>

ans.num[1] += 2;

i = 1; && (ans.num[i ] >= 10)) {

ans.num[i + 1] += ans.num[i] / 10; [i] %= 10;

i++;

}

si (ans.num[ans.len + 1] > 0)

⑤;

p>

return ans;

}

int over(enorme a, enormeint b)

// Si es un entero grande a>b, devuelve 1; de lo contrario, devuelve 0

{

int

if ( ⑥ )

<. p> devolver 0;

if (a.len > b.len)

if (a.len > b.len)

devolver 0. len)

Devuelve 1;

for (i = a.len; i >= 1; i--) {

if (a.num[ i] < b.num[i])

devuelve 0

if (a.num[i] > ; b.num[i])

devolver 1;

}

Devolver 0

}

int main()

{

char s[TAMAÑO];

int i;

enormeint objetivo, izquierda, medio, derecha

scanf("%s; ", s);

memset(target.num, 0, sizeof(target.len = 1;

left.num[1] = 1; p>

derecha = objetivo;

hacer {

medio = promedio(izquierda, derecha

si (sobre( ⑧ ) =); = 1 )

derecha = medio;

else

izquierda = medio

} while (over(plustwo(izquierda), derecha) == 0)

for (i = izquierda.len; i >= 1; i--)

printf("%d", izquierda.num [i]); /p >

printf("\n");

devuelve 0;