Examen de nivel 28
Prueba en papel de dos niveles (lenguaje C y C++)
Tiempo : Día 19 de abril de 2008
9am-165438+0am
Parte 1
Conceptos básicos de tecnología de software
(***15 puntos )
1. Preguntas de Verdadero o Falso (1 punto por cada pregunta, ***10 puntos)
(Juzgue si las siguientes preguntas son correctas. Si es así, elija según el número correspondiente en la hoja de respuestas del objetivo A; de lo contrario, elija B)
1. En programación, las matrices unidimensionales se utilizan a menudo para representar el espacio de almacenamiento secuencial de tablas lineales. (1)
2. La representación de datos en la memoria de la computadora se refiere a la estructura de almacenamiento de los datos. (2)
3. Windows es un sistema operativo multiusuario y multitarea. (3)
4. Las tecnologías que afectan la secuencia de respuesta a la interrupción incluyen la prioridad de interrupción y el enmascaramiento de interrupción. (4)
5. Una lista vinculada puede acceder aleatoriamente a cualquier nodo, pero una lista secuencial no. (5)
6. La principal diferencia entre trabajos y procesos es que el primero lo envía el usuario, mientras que el segundo lo genera automáticamente el sistema. (6)
7. La estructura lógica de los datos describe los datos en términos de relaciones lógicas, no tiene nada que ver con la estructura de almacenamiento de los datos y es independiente de la computadora. (7)
8. El modo de control de interrupciones es adecuado para grandes cantidades de intercambio de datos entre la memoria externa y la CPU. (8)
9. Proporcionar programas libres de errores es una medida básica para mejorar la mantenibilidad del software. (9)
10. La estructura del software se basa en el nivel de control de las instrucciones. (10)
2. Preguntas de opción múltiple (65438 + 0 puntos por cada pregunta, ***5 puntos)
1. El diagrama de flujo de datos se describe utilizando un método estructurado ( 11) Herramientas de etapa de trabajo.
11 (1) Análisis de viabilidad (2) Codificación del programa
(c) Diseño detallado (d) Análisis de requisitos
2 Si la secuencia de inserción es 1. , 2, 3, 4, y la pila se puede sacar durante el proceso de empujar, entonces la secuencia imposible de hacer estallar es (12).
12 (A) 1, 4, 3, 2 (B)
(C) 2, 3, 4, 1
3. procesos concurrentes (13).
13 (A) Puede haber sincronización o exclusión mutua (b) Debe haber sincronización.
(c) Deben ser independientes entre sí; (d) Deben ser mutuamente excluyentes.
4. ¿Cuál de las siguientes características no es la característica principal de un sistema operativo de tiempo compartido (14)?
14 (A) Tiempo compartido (b) Exclusivo
(c) Interactividad (d) Ruta múltiple
5. En el análisis de requisitos, los desarrolladores aprenden principalmente de. usuarios (15).
15 (A) Mantenimiento del software (b) Estructura del software
(c) ¿Cuál es la función de este software? Pruebas de software.
Parte 2
Programación en lenguajes C y C++
(***85 puntos)
1 Preguntas de opción múltiple (cada hora). Pregunta 1 punto, ***10 puntos)
1. El lenguaje C++ ha realizado muchas mejoras en el lenguaje C. El cambio más fundamental del lenguaje C++ en comparación con el lenguaje C es (D).
16 (A) Se agregaron algunos operadores nuevos (b) permite que las funciones establezcan parámetros predeterminados.
(c) El prototipo (d) introduce los conceptos de clases y objetos
2 Lo que determina el tipo de valor de retorno de la función en lenguaje C++ es (b).
17 (A) El tipo de expresión en la declaración de devolución
(b) El tipo de datos especificado al definir la función.
(c) El tipo de función principal al llamar a esta función.
(d) El tipo generado aleatoriamente por el sistema al llamar a la función.
3. En lenguaje C, el operador cuyo operando debe ser un número entero es (a).
18(A)%(B)/(C)=(D)"=
4. Si fp es un puntero a un archivo y el final del archivo ha sido lea Take, entonces el valor de retorno de la función feof (fp) es (c).
19(A)EOF(B)-1(C)1(D)
5. Conocido: int a=15, b = 16; El resultado de &b) andamp&br es (a).
20(A)1(B)0(C)16(D)31
6. Conocido: int arr[10]; ( d).
21(A)arr[10](B)arr[3.5](C)arr(5)(D)arr[10-10]
7. programa, el valor de b después del ciclo es (c).
interfaz principal de vpod()
{
int a=1, b = 10;
Hacer
{
b-= a;
a++;
} mientras(b-& gt;10);
}
22 (A) -1 (B) -2 (C) 8 (D) 9
8.
#Definición M(x, y, z) x*y+z
main()
{
int a= 1, b=2, c = 3;
printf("%d\n ", M(a+b, b+c, c+a));
}
23(A)12(B)15(C)17(D)19
9. La expresión condicional subrayada en la declaración if se completa con (24).
Principal()
{
int a[10]={6, 7, 2, 9, 1, 10, 5, 8, 4, 3}, *p=a,I;
for(I = 0;i<10;i++,p++)
if()* a = * p;
printf("%d ",* a);
}
24(A)p>a(B)*p>a[0 ](C)* p> ;* a[0](D)* p[0]& gt;a[0]
10. Si la variable de puntero p apunta a una unidad de almacenamiento dinámico, utilice Para almacenar datos enteros en el programa posterior. secciones, complete (25) en la posición subrayada.
int * p;
p = malloc(tamañode(int));
25(A)int(B)int *(C)(* int)(D)(int *)
2. Lee el programa y responde las preguntas (3 puntos cada una, ***45 puntos)
1. programa para ejecutar el resultado.
# include & ltstdio.h & gt
Fondos no válidos (char *s, char t)
{
while(* s)
{ if(* s = = t)* s = t-' A '+' A ';
s++;
} p>
}
void main()
{
char s[100]= " abcddfefbdd ", c = ' d
fun(s, c);
printf("%s\n ", s);
}
El resultado de salida después de ejecutar el programa Sí(b).
26(A)abcddfeffdbd(B)abcddfeffdbd(C)abcaafeffaba(D)abcddfeffdbd
2.
# include & ltstdio.h & gt
void fun(int a[], int n)
{
int i , t;
for(I = 0;i<n/2;i++)
{
t = a[I];a[I] = a [n-1-I]; a[n-1-I]= t;
}
}
void main() p>
{
int b[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int i, s; = 0;
diversión(b, 8);
for(I = 6;i<10;i++)s+= b[I];
printf( "%d\n ", s);
}
(1) La función de la función fun es (a).
27 (A) Invierta los primeros n elementos de la matriz A (b) Organice los elementos de la matriz en orden ascendente.
(c) Intercambie el primer y último elemento de la matriz (d) Organice los elementos de la matriz en orden descendente.
(2)El resultado de ejecución del programa es (a)
28 (A) 34 (B) 30 (C) 22 (D) 10
3 .Lee el programa y responde las preguntas
# include & ltiostream.h & gt
void main()
{
int a= 0, x = 0;
for(;!x &&a<10;a++)
{ a++;
x++;
}
cout & lt& lta & lt& ltendl
}
El resultado de ejecutar el programa es: (d).
29 (A) 10 (B) 4 (C) 3 (D) 2
4. Lee el programa y responde las preguntas.
# include & ltstdio.h & gt
Fondos no válidos (char *str)
{
int i, j = 0 ;
for(I = 0;str[i]!='\0';i++)
if(str[i]!= ' ')str[j++]= str[I];
s[j]= '\0';
}
void main()
{
String[80];
int n;
printf("Ingrese una cadena:");
gets(str);
fun(str);
printf("%s\n ", str);
}
Programa en ejecución Cuándo, ingrese la cadena asd_ab_123 (nota: los espacios están representados por "_"), el resultado de la ejecución del programa es (A 30).
30(A)asdab 123(B)ASD_ab 123(C)asdab_123(D)ASD
5.
# include & ltstdio.h & gt
# include & ltconio.h & gt
Modelo estructural
{int a, b, c;};
void main()
{ estructura mod st[3]={{1, 2, 3}, {4, 5, 6}, { 7, 8, 9 } };
int total
total=st[0]. a+st[1].
b;
printf("total=%d\n ", total
getch();
}
Programa Producción total de la ejecución = (b).
31 (A)5 (B) 6 (C) 7 (D) 8
6. Existen los siguientes programas:
# include & ltstdio .h & gt
void main()
{
int x=10, y = 5;
Cambiar (x) p>
{ caso 1: x++;
Predeterminado: x+= y
Caso 2: y-
Caso 3: x -
}
printf("x=%d,y=%d ",x,y);
}
Programa La salida es (a).
(A) x=14, y=4 (B) x=15, y=4
(C) x=10, y=5 (D) x=15 , y=5
7. Lee el programa y responde las preguntas.
# include & ltstdio.h & gt
Entero f (entero m)
{
static int n = 1;
m/= 2;
m = m * 2;
Si (m)
{ n * = m; p>
p>
return(f(m-2));
}
elsereturn(n);
} p>
void main()
{
int a, I, j
for(I = 0; i<2;i++) p>
{
a = f(4+I);
printf("%d\n ", a);
}
}
(1)La primera salida del programa es (a).
33 (A) 8 (B) 0 (C) 64 (D) 4
(2) La salida del segundo programa es (c).
34 (A) 8 (B) 0 (C) 64 (D) 4
8. Si el programa está compilado y vinculado para generar el archivo ejecutable CAD.EXE, ingrese la siguiente línea de comando:
Archivo CAD 1 archivo 2 <CR>(<CR> significa retorno de carro)
El resultado de ejecutar el programa es (d).
# include & ltstdio.h & gt
void main(int argc, char *argv[])
{
int I;
printf("%d\n ", argc);
for(I = 0;i<= argc-1;i++)
printf ("%s ", argv[I]);
printf(" \ n ");
}
35 (A) 2 ( B) 3
Archivo CAD 1 archivo 2 archivo 1 archivo 2
Artículo 2, párrafo 4, punto 3
CAD.EXE archivo 1 archivo 2 CAD. EXEFILE1FILE2
9. La función del siguiente programa es representar 316 como la suma de dos números. Estos dos sumandos se pueden dividir entre 13 y 11 respectivamente. El subrayado del programa while debe completarse en (d).
# include & ltstdio.h & gt
void main()
{ int i=0, j, k
Hacer {
i++;
k = 316-13 * I;
} while();
j = k/11 ;
printf(" 316 = 13 * % d+11 * % d ", I, j
}
36(A)k/); 11(B)k % 11(C)k(D)k % 11 = = 0
10.
# incluir & ltstdio.h & gt
void main()
{
int a=1, b=3, c=5, d=4, x;
Si (a & ltb)
si (c & lt; d)x = 1;
Otros
si (a & ltc)
si (b & lt;d)x = 2;
si no x = 3;
más x = 6;
más x = 7;
printf("%d ", x
}
(1) Una vez ejecutado el programa, el valor de x es (b).
37 (A)1 (B) 2 (C) 3 (D) 6
(1) Cuando el valor de d se cambia a 2, el valor de x después del El programa que se ejecuta es (c).
38 (A)1 (B) 2 (C) 3 (D) 6
11.
# include & ltstdio.h & gt
void sub(int x, int y, int *z)
{ * z = y-x;}
void main()
{
int a=1, b=2, c = 3;
Sub(a, b , y ampa);
sub(b, a, & ampb);
sub(a, by ampc);
printf("% d, %d, %d\n ", a, b, c);
}
39 (A) 1, 1, 0 (B) 1, 2, 3 (C) 1, -1, -2 (D) 1, 2, 1
12.
# incluir & ltstdio.h & gt
# incluir & ltstring.h & gt
void main()
{ char *p1="abc ", *p2="ABC ", str[50]= " XYZ ";
strcpy(cadena+3, p2);
strcat(cadena+ 2); , p 1);
printf("%s\n ", str);
}
40(A)xyzabcABC(B)xyzabcABC( C )yzabcABC (D)xyzabcABC
Nota: ① Escriba las respuestas a las siguientes preguntas en "Rellene los espacios en blanco según el procedimiento" en la hoja de respuestas a preguntas subjetivas.
(2) Complete solo una afirmación o parte de una afirmación en cada espacio.
3. Complete los espacios en blanco (2 puntos por cada espacio en blanco, ***30 puntos)
1. La función divertida encuentra el número de caracteres especificados en la cadena representada por S. y devuelve este número. Por ejemplo, en la función principal, si se ingresan la cadena de entrada abcdabacaa y el carácter especificado a, el resultado de salida es 5, es decir, hay 5 caracteres a en la cadena abcdabacaa. Por favor complete los espacios en blanco.
# include & ltstdio.h & gt
#Definición M 81
int fun(char *s, char c)
{
int i, CNT = 0
for(I = 0; ① ;i++)
if(*(s+i)==c )
cnt++;
②
}
void main()
{
char str[M], ch;
printf("\nPor favor, introduzca una cadena:");
gets(str);
printf( "\nPor favor ingrese un carácter:");
ch = getchar();
printf("\nEl número del carácter es: %d\n", ③ );
}
2. La función de diversión es calcular la suma S de los primeros n elementos de la secuencia de acuerdo con la fórmula. El resultado del cálculo lo devuelve el puntero de parámetro formal. S; el valor de n es mayor o igual a 0. Por favor complete los espacios en blanco.
# include & ltstdio.h & gt
Fondos no válidos (float *s, int n)
{
float t = 0.0
int i, k =-1;
for(I = 0;i<= n;i++)
{
k =①* k;
t = t+k * 1.0/②;
}
③
}
void main()
{
int n;
float s;
printf("Entrada n :" );
scanf("%d ",& ampn);
Diversión(&s,n);
printf("s=% f\n ", s);
}
3. La función del siguiente programa es encontrar la suma de los elementos en cada fila de un arreglo bidimensional M*N, y coloque la suma en secuencia en una matriz unidimensional y regrese a la función principal. Por ejemplo, si tiene la siguiente matriz 2D:
6 10 2 10 15
17 14 15 8 6
4 18 10 19 12
0 12 1 2 7
La salida es: 43 60 63 22. Por favor complete los espacios en blanco.
#Definición M 4
#Definición N 5
# include & ltstdio.h & gt
fsum(int a[] [N]), int b[])
{ int i, j;
for(I = 0; i & ltm, i++)
① ;
for(I = 0;i<m;i++)
for(j = 0;j<n;j++)
②= a[ I][j ];
}
void main()
{
int x[M][N], y [M], I, j;
printf("La matriz %d x %d :\n ", M, N
for(I = 0; I& ltm ; i++) p>
{ for(j = 0; j & ltn; j++)
{③= rand()% 20;
printf("% 6d ",x[ I][j]);
}
printf(" \ n ");
}
fsum(x, y );
printf("Suma de cada fila:\n");
for(I = 0;i<m;i++)
printf("% 6d ",y[I]);
printf("\n");
}
4. El siguiente programa encuentra el número de caracteres len y el número de línea de la línea más larga del archivo ab.c. Por favor complete los espacios en blanco.
# include & ltstdio.h & gt
void main()
{
int línea, I, j=0, len = 0;
char c;
ARCHIVO * fp
fp=fopen("ab.c", "r");
Rebobinar(FP);
mientras(fgetc(fp)!EOF)
{ I = 1;
mientras(fgetc(fp) ! = '\n')①;
j++;
Si (i & gtlen){ len = I ;}
}
printf("\n%d\t%d\n ",len,line);
③;
}
5. La función de la función divertida a continuación es convertir el valor del parámetro formal. Por favor complete los espacios en blanco.
# incluir & ltstdio.h & gt
int fun(int x, int b[])
{ int k=0, r; p>
p>
Hacer
{ r = x % 2;
b[①]= r;
x/=② ;
} while(x);
Regresar ③;
}
void main()
{
int k, n, a[20];
printf("\nIngrese n:");
scanf("%d ",& ampn);
k=fun(n, a);
mientras(k & gt;=0)
printf("%d ", a [k-] );
}