Cien batallas c++ (10)

1. ¿La tabla de funciones virtuales en la clase polimórfica se crea en tiempo de compilación o en tiempo de ejecución?

2. Almacene un archivo 1M-10M en orden inverso a otro archivo, que es el último archivo del archivo anterior

Los caracteres se guardan en el primer carácter del nuevo archivo, y así sucesivamente.

3. Después de ejecutar la función principal principal, ¿es posible ejecutar otra pieza de código?

4. Una clase principal escribe una función virtual.Si la subclase anula su función sin agregar virtual, ¿puede también lograr polimorfismo?

En el espacio de la subclase, ¿existe esta función de la clase principal o una variable privada de la clase principal?

5. Dada una cadena, como "ababc", se requiere que devuelva "ab", ya que "ab" aparece repetidamente y es la más larga.

  Escriba una función en lenguaje C/C++ para completar el algoritmo y proporcione la complejidad

6. Para las secuencias 1, 1, 2, 3, 5, 8, 13. . . . es la secuencia de Fab..

  2, 3, 5, 13... son secuencias de números primos Fab.., porque son primos entre sí con la secuencia Fab... delante de ellos

Dado k, devuelve el k-ésimo Fab.. número primo más pequeño

7.101 monedas, 100 son verdaderas y 1 falsa, la diferencia entre verdadera y falsa radica en el peso. Pese dos veces con una balanza sin pesas para dar una conclusión sobre si la moneda real es pesada o la moneda falsa es pesada.

8. Puede usar las funciones sprintf, strcpy y memcpy para completar la copia de cadenas.¿Cuál es la diferencia entre estas funciones, cuál le gusta usar y por qué?

9. ¿Cuál es la diferencia entre declaración y definición de variables?

10. Escriba el resultado de ejecución del siguiente código en una plataforma de 32 bits y explique la naturaleza del tamaño de:

#incluir <stdio.h>

#incluir <stdlib.h>

int principal (vacío)

{

        char a[30];

        char *b = (char *)malloc(20 * sizeof(char));

        printf("%d\n", tamaño de(a));

        printf("%d\n", tamaño de(b));

        printf("%d\n", tamaño(a[3]));

        printf("%d\n", tamaño(b+3));

        printf("%d\n", tamaño(*(b+4)));

        devolver 0;

}

12. Por favor complete las siguientes preguntas. Tenga en cuenta que no llame directamente a la implementación de la función en la biblioteca de funciones ANSI C.

   a) Escriba una función en C que proporcione el número de bits establecidos en 1 en un byte y pregunte

     Da al menos una solución diferente al problema.

   b) Escriba una función C que convierta una cadena dada en un número entero.

   c) Escriba una función C que convierta un entero dado en una cadena.

   d) Escriba una función C que invierta una cadena.

   e) Escriba una función C que busque un carácter determinado en un área de memoria determinada y devuelva

     El valor de índice de la posición donde se encuentra el carácter.

   f) Escriba una función C que encuentre la subcadena más larga posible en una cadena,

     La cadena se compone de los mismos caracteres.

Proporcione un programa simple para demostrar las funciones de las funciones anteriores y escriba el Makefile correspondiente

13. Necesitamos escribir un programa de aplicación relacionado con gráficos, que necesita procesar una gran cantidad de información gráfica (Forma),

Los gráficos incluyen rectángulo (Rectángulo), cuadrado (Cuadrado), círculo (Círculo) y otros tipos, aplicación

El área de estos gráficos debe calcularse y es posible que deba mostrarse en un dispositivo (utilizado en el estándar

La forma en que se imprime la información en la salida es ilustrativa).

    a) Utilice el método orientado a objetos para diseñar la aplicación anterior y escribir las clases que puedan ser necesarias

    b) Proporcione un código de ejemplo para realizar las funciones de la aplicación anterior, obtener información gráfica de algún lugar,

      y calcular y dibujar

    c) Si su Cuadrado hereda de Rectángulo, dé una razón, si no,

      Explique las razones y compare las ventajas y desventajas de los dos métodos.

    d) ¿Puedo preguntar cómo se comportará la clase que escribió en el siguiente código? Explique

    void test_rectangle_area(Rectángulo&r)

    {

        r.set_width(10);

        r.establecer_altura(15);

        afirmar(r.area() == 150);

    }

14. Suponga que hay una lista enlazada unidireccional, pero solo sepa que solo hay un puntero p que apunta a este nodo, y suponiendo que este nodo no es el nodo final, intente programar para eliminar este nodo

15. Escriba un programa para factorizar un número natural dentro de 100. (La factorización de números naturales consiste en descomponer un número natural en el producto de varios números primos. Sugerencias, dado que el número no es muy grande, puede guardar los números primos en una matriz para acelerar el cálculo)

16. Escriba una función de asignación y liberación de identificación, que es un número natural entre 1 y 10000.

17. Realizar itoa y atoi respectivamente.

18. Considere el siguiente código:

#incluir <stdio.h>

#incluir <cadena.h>

int main(int argc, char *argv[]) {

int i = 1;

charbuf[4];

strcpy(buf, "AAAA");

printf("%d\n", yo);

devolver 0;

}

a) Cuando se compila y ejecuta en x86, ¿por qué este programa generalmente no funciona?

salida lo que el programador pretendía?

b) Nombre varias formas en que el problema de seguridad que causa esto

Se puede evitar que el programa no genere lo que el programador pretendía.

SIN cambiar el código.

19.int w=1,x=2,y=3,z=4;

m=(w<x)?w:x;

m=(m<y)?m:y;

m=(m<2)?m:z;

printf("m=%d",m); Di el resultado

20. Di el resultado

#incluir <stdio.h>

principal()

{

    ARCHIVO *fp;

    int i,a[4]={1,2,3,4},b;

    fp=fopen("data.dat","wb");//Aquí para ayudar a explicar

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

    fwrite(&a[i],sizeof(int),1,fp);//Aquí también ayuda a echar un vistazo

    fcerrar(fp);

    fp=fopen("datos.dat","rb");

    fseek(fp,-2L*sizeof(int),SEEK_END);//Y aquí

    fread(&b,sizeof(int),1,fp);//También hay un vistazo aquí

    fcerrar(fp);

    printf("b=%d\n",b);

}

21. Hay nodos de lista enlazada circular bidireccional:

nodo de estructura typedef

{

  fecha interna;

  nodo de estructura *frente,*siguiente;

}_Nodo;

Hay dos listas enlazadas circulares bidireccionales A y B, y los punteros principales son: pHeadA, pHeadB, escriba una función para eliminar los nodos con el mismo valor de fecha en las dos listas enlazadas

22

char * GetStr()

{

char *tmp;

mp = "123"

volver tmp;

}

vacío principal()

{

printf("%s", GetStr());

}

¿Saldrá 123? 123 ¿Se crea en el montón o en la pila? ¿Cuándo se estrenó el espacio de 123?

23

¿Cuál de los tres tipos de variables, punteros de caracteres, punteros de coma flotante y punteros de función, ocupa más memoria? ¿Por qué?

Class ClassB se deriva de ClassA, luego ClassA *a = new ClassB(...); ¿Es legal esta expresión? ¿Por qué?

Si la función virtual int func(void) se define e implementa en ClassA, y la función también se implementa en ClassB, ¿a qué función de clase llamará la variable anterior a->func()? ¿Qué pasa si int func(void) no es virtual? ¿Por qué?

char **p, a[16][8]; P: ¿P=a causará problemas en el programa más adelante? ¿Por qué?

¿Cuál de las siguientes sentencias if else o switch es más eficiente? ¿Por qué?

En el mismo proceso, ¿puede un módulo destruir la memoria de otros módulos mediante la manipulación de punteros, por qué?

La memoria del programa de aplicación en tiempo de ejecución incluye el área de código y el área de datos, y ¿qué partes incluye el área de datos?

24. Tarea 2: Procesamiento de imágenes

Use C++, Java o lenguajes similares y/o cualquier middleware como EJB y J2EE para procesar una imagen con alta resolución (3 megapíxeles, por ejemplo). Use algunas metodologías para degradar la resolución de la imagen para que sea más rápida para navegar. Luego divida la imagen degradada en 9 sectores por igual. Haga clic en cualquiera de los 9 sectores para obtener una imagen detallada de este sector con la misma resolución que la imagen original. Esta tarea está diseñada para que demuestres tu habilidad para manejar imágenes.

25. Usa <<,>>,|,& para intercambiar los bits alto y bajo de una PALABRA (2 bytes)!!

26. Es necesario abrir la memoria P1, P2, P3 y P4 para el almacenamiento en búfer, y el tamaño es autodeterminado, pero el tamaño de estos cuatro búferes debe ser el mismo, ¡y son continuos!

27. Hay una matriz de coma flotante A. Escriba una función en lenguaje C para ordenar la matriz de coma flotante A en orden descendente y generar el resultado. Se requiere usar la matriz A como entrada de la función. (Es se recomienda utilizar el método de clasificación de burbujas)

28. Encuentra errores:

#incluir <cadena.h>

#incluir <stdio.h>

base de clase

{

privado:

nombre del personaje;

público:

Base (char * nombre de clase)

{

nombre = new char[strlen(className)];

strcpy(nombre, nombre de clase);

}

~Base()

{

borrar nombre;

}

char * copiarNombre()

{

char nuevo nombre [256];

strcpy(nuevo nombre, nombre);

volver nuevo nombre;

}

char * getNombre()

{

devolver nombre;

}

impresión de vacío estático (base base)

{

printf("nombre: %s\n", base.nombre);

}

};

clase Subclase: base pública

{

público:

Subclase (char * className) : Base (className)

{

}

};

int principal()

{

Base * pBase = nueva Subclase("prueba");

Base::imprimir(*pBase);

printf("nombre: %s\n", pBase->getName());

printf("nuevo nombre: %s\n", pBase->copyName());

devolver 0;

}

29. Escribe una función. La función recibe una cadena, que es un conjunto de cadenas compuesto por números hexadecimales. La función de la función es convertir el conjunto de cadenas recibido en números decimales y devolver los números decimales.

30. Escriba una función para dividir una cadena en dos partes, ordene la primera mitad en orden ascendente de código ASCII y mantenga la segunda mitad sin cambios (si la cadena es impar, los caracteres en el medio no cambiarán) y finalmente intercambie las dos partes antes y después, y luego generar esa cadena,

Cadena de prueba "ADZDDJKJFIEJHGI"

Supongo que te gusta

Origin blog.csdn.net/hebtu666/article/details/127205366
Recomendado
Clasificación