1. La programación requiere la entrada de números enteros A y b. Si a2 b2 es mayor que 100, se generará un número con a2 b2 mayor que 100 dígitos; Se generarán los dos números.
# incluir ltstdio.h gt
int main()
{
int a, b;
printf("Ingrese dos números: ");
scanf("d d ", amp one, ampb
if((a * a b * b) gt; = 100); )
printf("\n d ", (a * a b * b)/100
Otros
printf("\n d ", a b ) ;
getch();
}
2. Intente programar para determinar si los enteros positivos de entrada son todos múltiplos de 5 y 7. En caso afirmativo, la salida es; de lo contrario, el número de salida
# incluye ltstdio.h gt
int main()
{
int a;
printf("Ingrese un número: ");
scanf("d ", ampa
if(a 5 = =); 0 amp; ampa7==0)
printf(" si ");
Otros
printf(" no ");
getch();
}
Aguja
1. Escriba un programa para asignar la cadena de la computadora a una matriz de caracteres y luego inicie cada carácter desde allí. primera letra Genera una cadena de vez en cuando. Complételo con sugerencias.
# include ltstdio.h gt
int main()
{
char string[]= "Computadora"; p>
p>
char * p = cadena
mientras(*p)
{
printf("c ", * p );
p;
p
}
obtener(); >
2, ingrese una cadena y luego agregue un espacio entre cada letra en la cadena; use un puntero para completar.
#incluye ltstdio.h gt
#incluye ltstdio.h gt. H gt
# incluye ltSTDLIB.
H gt
#Definir hasta 100
char * copyString
copia vacía(char *, char *);
inserción vacía ( char *);
int main()
{
char * cadena
cadena = (char *)malloc(max * sizeof(char));
scanf("s ", cadena);
Insert(string
printf("s ", cadena de caracteres); );
getch();
Devuelve 0
}
Copia no válida (char * c, char * s)
{
mientras(*s!='\0')
{
*c = *s;
s;
c;
}
*c='\0
}
Inserción nula (carácter)
{
copiar cadena =(char *)malloc(2 * max * sizeof(char));
copiar(copyString, s);
while(*copyString!='\0')
{
* s = * copyString
s ;
copiar cadena ;
* s = ""
s ;
}
* s = ' \ 0
}
1. Elección:
1. Dé la siguiente definición:
char acX[]= "abcdefg ";
char acY[ ]= {'a', 'b', 'c', 'd', 'e', 'f', 'g' };
La afirmación correcta es ()
a) La matriz acX y la matriz acY son equivalentes b) La matriz acX y la matriz acY tienen la misma longitud;
c) La longitud de la matriz acX es mayor que la longitud de la matriz acY d) La longitud de la matriz acX es menor que la longitud de la matriz acY;
Respuesta: c
2.
Ejemplo de vacío (char acHello[])
{
printf ("d ",sizeof(acHello));
Retorno;
}
void main()
{
char acHello[] = "Hola";
Ejemplo (Accello); //El nombre de la matriz se utiliza como parámetro y se pasa la dirección. Una dirección ocupa cuatro bytes.
Regreso;
}
La salida es
Incierta
Respuesta: Respuesta
3. Existe el siguiente segmento de programa
char Acar[]= "ABCDE";
char * pcPtr
for(pcPtr = acArr; pcPtr ltacArr 5; pcPtr )
{
printf("s\n ", pcPtr);
}
Regresar; p >
El resultado de salida es ()
A) ABCD B) A C) E D) ABCDE
BCDE
CDE
D B DE
E A'E
Respuesta: d
4. En una interrupción, el semáforo no se puede adquirir sincrónicamente, pero se puede liberar.
A. Verdadero b. Incorrecto
Respuesta: Respuesta
5. ¿Cuál de las siguientes afirmaciones es incorrecta ()
a ) Las variables con el mismo nombre se pueden usar en diferentes funciones
b) Los parámetros formales en las funciones son variables locales.
c) Las variables definidas en una función sólo son válidas dentro del alcance de la función.
d) Las variables definidas por sentencias compuestas dentro de una función son válidas dentro del alcance de la función (las sentencias compuestas se refieren al código formado por pares de corchetes dentro de la función).
Respuesta: d
6. Se proporciona la siguiente definición:
Unsigned long pulArray[] = {6, 7, 8, 9, 10 };
Unsigned long * pulPtr
El resultado de salida del siguiente segmento del programa es ()
pulPtr = pulArray
*(pulPtr 2 ) = 2;
printf ("d, d\n ", *pulPtr, *(pulPtr 2));
a)810 B)6.8 C)7.9D) 610
Respuesta: d
7. Hay varias afirmaciones a la hora de definir una estructura. Indique la correcta (múltiples opciones): _ _ _ _ _ _ _
a Cada parte de la estructura debe estar alineada en cuatro bytes;
b, la longitud total. de la estructura se alinea preferiblemente en cuatro bytes;
c. El almacenamiento de miembros en la estructura no considera la alineación de bytes;
Respuesta: a, b
p>8.void ejemplo()
{
int I;
char AC new[20];
for( I = 0;ilt10;i)
{
AC nuevo[I]= ' 0 ';
}
printf( "d\n ",strlen(AC new));
Regresar;
}
La salida es ()
A 0 B 10 C 11 D No estoy seguro.
Respuesta: d
9. El tipo de datos de c en el interruptor (c) puede ser char, long, float, unsigned, bool. ()
A. Verdadero b. Incorrecto
Respuesta: b
10. De forma predeterminada, el orden de bytes transmitidos en la red es grande. Si el host es pequeño, el orden de bytes debe convertirse al comunicarse en la red; si el host es big endian, por razones de coherencia y portabilidad del programa, es mejor agregar el orden de bytes al programa Operación de conversión (no). operación).
A. Verdadero b. Incorrecto
Respuesta: Respuesta
11. num
Nombre del personaje[10];
int age
};
Fondos no válidos (estructura stu *p)
{
printf("s\n ", (*p). Nombre
Retorno
}
<); p>void main(){
estructura estudiantes[3]= { { 9801, "张", 20},
{9802, "王", 19},
{9803, "Zhao", 18 } };
Diversión (estudiante 2);
Regreso;
p>
}
El resultado de salida es ()
a) Zhang B) Zhao C) Wang D) 18
Respuesta: b
12. Después de ejecutar el siguiente programa, el resultado de salida es ().
void main()
{
char * szStr = " abcde
sztr = 2;
printf("lu \n ", sztr);
Return;
}
El valor del código ASCLL de un carácter cde B
C "abcde" es un error en la dirección D donde se encuentra el carácter C
Respuesta: c
13, existe el siguiente proceso. >
#.incluye ltstdio.h gt
void main()
{
alianza
{
int k;
char I[2];
}*s,
s = ampa; s- gt; I[ 0]= 0x 39;
s- gt; I[1]= 0x 38;
printf("x\n ", a . k) ;
}
El resultado de salida es ()
A) 3839 B) 3938 C) 380039 D) Impredecible
Respuesta: d
14. Las variables globales pueden estar en varios archivos .c
A. Falso
Respuesta: b
15.void.Ejemplo()
{
int I;
char acNew[20] = {0, 0, 0, 0, 0, 0 , 0, 0 ,0,0,0,0,0,0,0,0,0,0,0,0,0};
for(I = 0;ilt10;i)
{
AC nuevo[I]= ' 0 ';
}
printf("d\n ",strlen(AC new)) ;
Regresar;
}
La salida es:
A 0 B 10 C 11 D No estoy seguro.
Respuesta: b
16. Las siguientes definiciones son correctas (múltiples opciones): ()
a: char * pcPtr = "ABCD"; p>
p>
b: carácter PC[4]= "ABCD";
c: carácter PC[]= "ABCD";
d: carácter PC[]= ' ABCD ';
E: char pc[] = {'a', 'b', 'c', 'd', '\0'};
f: char PC[]= ' a ' ' b ' ' c ' ' d ';
Respuesta: Ace
17. registrar variables y otras variables especiales Excepto) la memoria está en la memoria de la pila, por lo que al definir variables dentro de la función, la pila no debe desbordarse. Si la variable temporal
ocupa un espacio grande, debe utilizar el método de asignación de memoria para que la memoria apuntada por esta variable esté en la memoria del montón.
A. Verdadero b. Incorrecto
Respuesta:
18. Las variables locales pueden tener el mismo nombre que las variables globales y no habrá errores durante compilación, pero puede usar accidentalmente la variable incorrecta, por lo que cuando cronometre las variables locales, no tenga el mismo nombre que la variable global.
A. Verdadero b. Incorrecto
Respuesta: Respuesta
19. Se proporcionan las siguientes definiciones de macro:
#Definición N 3
#define Y(n) ((N 1)*n) /*El uso de esta definición está estrictamente prohibido en las especificaciones de programación*/
Luego ejecuta la sentencia: z = 2 *(N Y (5 1)); Después de eso, el valor de z es ()
a) Incorrecto B) 42 C) 48 D) 54
Respuesta: c
20.int *(* ptr)();
La siguiente afirmación correcta es ()
A) ptr es una variable puntero que apunta al número de grupos unidimensionales.
B) ptr es una variable puntero que apunta a datos int.
ptr es un puntero que apunta a una función que devuelve datos int.
D) ptr es un puntero a una función y el valor de retorno de la función es un puntero a datos int.
Respuesta: d
El orden de la memoria 21.0x12345678 es _ _ _ _ _ en BigEndian y _ _ _ _ _ en LittleEndian.
(Las respuestas aumentan de izquierda a derecha.)
12 34 56 78
C.78 56 34 12
La respuesta es : Corriente alterna
2. Completa los espacios en blanco:
1.
Etiqueta de estructura a
{
Carácter sin firmar ucId: 1;
Carácter sin firmar UCP ara 0:
Carácter sin firmar ucState: 6;
Cola UC de carácter sin firmar: 4;
Carácter UCAvail sin firmar
Cola UC de carácter sin firmar 2: 4;
Longitud sin firmar ulData
} AAA_S;
P: ¿Cuánto espacio ocupa AAA_S cuando la alineación de bytes es 1 y 4 respectivamente?
Respuesta: 9 12
2.prueba de etiqueta de estructura typedef
{
UCHAR ucFlag
ULONG ulLen
} TEST_S;
TEST_S TEST[10];
Alineación de cuatro bytes: sizeof (test_s) = _ _ _ _ , sizeof(test)_ _ _ _ _ _ _.
Respuesta: 8 80
Tres
char a chello[]= " hola \ 0 mundo ";
char AC new[ 15]= { 0 };
strcpy(acNew, un chello);
strlen(acNew) = ____
sizeof(acHello) = _____ p>
Respuesta: 5 12
4.#pragma pack(4)/*Opción de compilación, que indica alineación de 4 bytes*/
int main(int argc, char * argv[])
{
Prueba de etiqueta de estructura 1
{
Corto a;
char d;
Largo b;
Largo c;
};
Prueba de calificación estructural 2
{
Larga b;
Corta c;
char d;
Larga a;
};
Prueba de marcado de estructura 3
{
C corta;
B larga;
char d; p>
p>
Largo a;
};
struct tagtest 1 STT 1;
struct tagTest2 stT2
struct tagTest3 stT3
printf("d d d ", sizeof(stT1), sizeof(stT2), sizeof(STT 3));
Return 0; p>}
}
p>
#pragma pack()(opciones de fin de compilación)
¿Cuál es el resultado? _ _ _ _ _ _ _
Respuesta: 12 12 16.
5. Enumeración ENUM_A
{
X1,
Y1,
Z1 = 5,
Y1. p>
A1,
B1
};
ENUM ENUM _ A enumA = y 1;
ENUM ENUM _ A ENUM b = b 1;
Disculpe, enumA = _ _ _ _enum b = _ _ _ _ _ _ _;
Respuesta: 1 7
6.La salida del siguiente programa es _ _ _ _ _ _.
# include ltstdio.h gt
int fun(int x, int y)
{
static int m = 0; ocho
estático int I = 2; tres
I = m 12
m = I x y;
return m;
}
void main()
{
int j = 4
int m = 1; ;
int k;
k = divertido(j,m);
printf("d ",k);
k=diversión(j, m);
printf("d\n ", k
Retorno
}
Respuesta: 8 17
7. La salida del siguiente programa es _ _ _ _ _ _ _ _ _
#Define CIR(r) r*r /*Por favor pague atención a esta definición Defecto, no se permite definir */
void main()
{
int a = 1; int b = 2 ;
int t;
t = CIR(a b);
printf("d\n ",t);
Retorno;
}
Respuesta: 5
8. En VRP, se implementa una función similar a strncpy, y su definición es la siguiente. :
#Definir carácter
#Definir tipo largo sin firmar ULONG
#Definir vacío
#definir MACRO_COPYWORLDLENGTH 4
CHAR *VOS_strncpy (CHAR *pcDest, const CHAR *szSrc, ULONG ulLength)
{
CHAR * pcPoint = pcDest
if((NULL = = SZ src)| (NULL = = destino de PC)))
{
Devuelve NULL
}
Y ( ulLength amp amp(*pcPoint = *szSrc))/*Aquí se utiliza el método de asignación de declaración de juicio (*pcPoint = *szSrc Se recomienda no utilizar */
{
<). p>Punto PC;SZ src;
ulLength-;
}
if (! ulLength)
{
* pcPoint = ' \ 0
}
Devolver pcDest
} p>
Controlador no válido (no válido)
{
CHAR sztrbuf[]= " 1234567890 ";
CHAR szstrbuf 1[]= " 1234567890 " ;
CHAR *szHelloWorld = "¡Hola mundo!";
strncpy(szStrBuf, szHelloWorld, MACRO _ COPYWORLDLENGTH
VOS_strncpy(szStrBuf1, szHelloWorld, MACRO); _ COPYWORLDLENGTH);
pri
ntf("s s ", szStrBuf, szStrBuf 1);
}
La salida del programa es _ _ _ _ _ _ _ _ _
Respuesta : Hell567890 Infierno
9.
char a chello[]= " hola \ 0 mundo ";
char AC new[15]= { 0 };
p>
memcpy(acNuevo, acHola, 12);
strlen(acNuevo) = ____
tamaño de(acHola) = ____
Respuesta: 5 12
10.encabezado de estructura typedef
{
UCHAR AUC src[6];
ULONG ulType
} HEAD_S;
Al forzar la alineación de un solo byte, especifique sizeof(head_s)=_ _ _ _ _ _;
Al forzar la entrada binaria en el caso de alineación, especifique sizeof(head _ s)= _ _ _ _ _ _ _;
Si se fuerza una alineación de cuatro bytes, especifique sizeof(head _ s)= _ _ _ _ _ _ _;
Respuesta: 10 10 12
Etiqueta UnitedAAAA
{
Estructura
{
char ucPrimero
corto usSegundo
char ucTercero
}Mitad;
Longli;
}Número;
Etiqueta de estructura BBBBB
{
char ucPrimero
Us cortoSegundo
char ucTercero
Abreviado
}Mitad;
Etiqueta de estructura CCCC
{
Estructura
p>{
char ucPrimero
corto usSegundo
char ucTercero
}mitad;
Long Li;
};
Cuando la alineación de bytes es 1, sizeof(union tagAAAA), sizeof(struct tagBBBBB) y sizeof(struct tagCCCC) son _ _ _ _ _ _ _ _ _ _.
Cuando la alineación de bytes es 4, sizeof(union tagAAAA), sizeof(struct tagBBBBB) y sizeof(struct tagCCCC) son _ _ _ _ _ _ _ _ _.
Respuesta: 4 6 8
8 8 12
12. Etiqueta de estructura
{
char cB
sC corto;
char CD
tirón largo;
} * pAbc
pAbc = 0x 100000 ;
Entonces PABC 0x 100 = 0x _ _ _ _ _ _ _ _ _;(ULONG)pAbc 0x 100 = 0x _ _ _ _ _ _ _ _;(ULONG *)pAbc 0x 100 = 0x _ _ _ _ _ _ _ _ _;(char *)pAbc 0x 100 = 0x _ _ _ _ _ _ _ _ _;
Respuesta: 100 c 00100100100400100100.
13. Tipo de entero largo sin signo FUNC_C (operación de entero largo sin signo)
{
Tipo de entero largo sin signo ul resultado = 0;
p>
Cambiar (acción u)
{
Operación de caso_A:
{
ul resultado = 1; /p>
Pausa;
}
Caso operación_B:
{
ul resultado = 1;
}
Valor predeterminado:
{
ul resultado = 1;
}
}
printf( "ulResult = u ",ul resultado);
Devolver ulResult
}
Cuando la entrada es ACTION_B Cuando, el resultado de salida es: resultado UL = _ _ _ _ _ _ _;
Respuesta: 2 (porque esta rama no tiene punto de interrupción)
14. la prueba de funcionamiento, el resultado impreso es _ _ _ _.
G_ul largo sin firmar global = 0;
void GlobalInit(ulArg largo sin firmar)
{
ulArg = 0x 01; p>
Retorno;
}
Prueba no válida()
{
init global (g _ ul global);
printf("lu ", g _ ul global
Retorno
}
Respuesta: 0
15. El resultado de salida del siguiente programa es _ _ _ _ _ _ _ _ _
int x = 3;
void incr();
void main()
{ int I;
for(I = 1;iltx;i)
{
incre();
}
Retorno;
}
Incremento no válido()
p>{
Estático int x = 1;
x * = (x 1
printf("d ", x
Regresar;
}
Respuesta: 2 6
16. El resultado de salida del siguiente programa es _ _ _ _ _ _ _ _ _
#pragma pack(4)/*Alineación de cuatro bytes*/
int main(int argc, char* argv[])
{
Carácter sin firmar puc[4];
Etiqueta de estructura
{
Carácter sin firmar ucpim 1;
Datos UC de carácter sin firmar 0:1;
Datos UC de caracteres sin firmar 1:2;
Datos UC de caracteres sin firmar 2:3;
} * pstPimData
pstPimData =(estructura etiqueta PIM *)puc;
memset(puc, 0, 4);
pstPimData- gt; pstPimData-gt; datos UC 0 = 2;
pstPimData-gt; datos UC 1 = 3;
datos UC 2 = 4; >printf("02X 02X 02X 02X\n ", puc[0], puc[1], puc[2], puc[3]);
Devuelve 0;
}
#pragma pack()/*Restaurar alineación predeterminada*/
Respuesta: 01 26 00 00
17 .
char * Color de PC = " azul 1 ";
char acColor[] = " azul 1 "
strlen(pcColor) = ____ p>
strlen(acColor) = ____
tamaño de(pcColor) = ____
tamaño de(acColor) = ____
Respuesta: 5 5 4 6
18.
char str[]= " \ \ \ 0 ";
char * p;
= str
int n = 1000;
Por favor, calcule
sizeof (str) = _________
sizeof (p) = ______________
tamaño de ( n ) = ______________
Respuesta: 3 4 4
19.UCHAR * pucCharArray[10][10];
typedef union unRec
{
ULONG ulIndex
USHORT us level[6];
UCHAR ucPos
} REC_S;
REC_S stMax, *pstMax
Alineación de cuatro bytes: sizeof(pucCharArray) = __matriz de punteros, la dirección de cada puntero es de 4 bytes_ _ _ _, Sizeof ( stmax) = _ _ _ _, Tamaño de (pstmax) = _ _ _ _ _ _ _ _, Tamaño de (* pstmax) = _ _ _ _ _ _ _.
Respuesta: 400 12 4 12
20.typedef union unHead
{
UCHAR AUC src[6];
Contenido de la marca de estructura
{
UCHAR UC flag[3];
ULONG ulNext
} contenido; p>
p>
} HEAD _ S;
32CPU, entorno de compilación VC:
En el caso de forzar la alineación de un solo byte, especifique sizeof(head _ s)= _ _ _ _ _ _ _;
En el caso de alineación binaria forzada, especifique sizeof(head _ s)= _ _ _ _ _ _ _;
Si se fuerza la alineación de cuatro bytes, especifique sizeof(head _ s)= _ _ _ _ _ _ _;
Respuesta: 7 8 8
21.
UCHAR * pszTest = " hola
UCHAR AUC test[]= " hola ";
Disculpe, sizeof (psztest) = _ _ _, sizeof (* psztest ) = _ _ _ _, sizeof (auctionest) = _ _ _
Respuesta: 4 1 6
22. >
lNum largo
char * pcName
SFecha corta
char cHa[2];
SBa corta[6] ;
} * p;
p = 0x 100000;
p 0x1 = 0x___
(Entero largo sin signo)p 0x1 = 0x______
(Unsigned long *)p 0x1 = 0x______
(char *)p 0x1 = 0x______
Respuesta: 10001810001 100004 10001.
23. En el caso de alineación de 4 bytes:
estructura typedef tagRec
{
龙la 1;
char cA2
char cA3
龙lA4
龙lA5
} REC_S;
void main(int argc, char *argv[])
{
REC _ S stMax
printf("\r\n sizeof(stMax)= d ",sizeof(stMax));
Return;
}
El resultado de salida es:
sizeof(stMax) = ___
Respuesta: 16
24.void main()
{
UlA largo sin firmar = 0x 11000000
;printf("\r\nx", *(carácter sin firmar *) amp; ulA
Retorno
}
El resultado de salida; es:
Respuesta: 0
En tercer lugar, señale el único error en el siguiente proceso que hace que el resultado esperado falle (independientemente de los errores de especificación de programación)
1. El siguiente programa se utiliza para generar la cadena ingresada por el usuario. Por favor señale el problema.
#Definición OK 0
#Error de definición 1
#Error de definición (-1)
#Tamaño del búfer de definición 256< / p>
int GetMemory(char **ppszBuf, int num)
{
if( NULL == ppszBuf)
{
Aserción(0);
Error de retorno;
}
* ppszBuf =(char *)malloc(num);
if(NULL == *ppszBuf)
{
Devolver error;
}
Devolver OK;
}
Prueba no válida (no válida)
{
char * pcStr = NULL
if(OK == GetMemory ( amp; pcStr, BUFFER_SIZE))
{
scanf("s ", pcStr); /* Se supone que BUFFER_SIZE es lo suficientemente grande como para evitar cruzar el límite*/ p>
printf(pcStr);
Gratis(pcStr);
}
Devolver;
}
Respuesta: Imprima en forma de printf ("s", str); de lo contrario, ingrese en forma de s, d, etc. Puede conducir a lo desconocido.
2. Esta función puede imprimir la dirección IP de 32 bits (secuencia de host) como una cadena.
Encuentre el error en el código:
char *IpAddr2Str (unsigned long ulIpAddr)
{
char szIpAddr[32];
(void)VOS_sprintf(szIpAddr," d.d.d.d",ulIpAddr gt gt24,
(ulIpAddr gt gt16); 0xff, (ulIpAddr gt gt8) amp; 0xff, ulIpAddr amp0x ff);
p >Devuelve szIpAddr
}
Respuesta: Las variables locales de la función se almacenan en la pila. Esta función devuelve la dirección en la pila y el contenido de la pila no está disponible después de que sale la función.
3. El siguiente programa se utiliza para generar "Bienvenido a casa". Señale el error:
Prueba no válida(inválida)
{
char PC array[12];
strcpy(pcArray ," Bienvenido a casa");
printf("s!", matriz de PC);
Regresar;
}
Respuesta : La matriz está fuera de los límites.
4. El siguiente programa se utiliza para devolver una cadena "azul", indique el error:
char *GetBLUE(void)
{
char * pcColor
char * pcNewColor
pcColor = " azul
pcNewColor =(char *)malloc(strlen(pColor)) ;
if(NULL == pcNewColor)
{
Devolver NULL
}
strcpy(pcNewColor , pcColor );
Devuelve pcNewColor
}
Respuesta: El espacio de memoria solicitado es insuficiente y hay un ' \0 ' al final del string.
5. El siguiente programa espera generar str = hola mundo, indique el error:
char * GetStr(char *p)
{
p = " hola mundo
Devolver p;
}
void main()
{
char * str = NULL
if(NULL!= GetStr(str))
{
printf("\r\ n str = s ", str);
}
Return;
}
Respuesta: No se puede devolver una cadena, el Los parámetros se utilizan incorrectamente.