#include lt;stdio.hgt;
#define MAXLEN 80
int main(void)
{
int k=0, número=0;
char str[MAXLEN]
while((str[k]=getchar())!='#')
k ;
str[k]='\0'
para(k=0; str[k]; k )
if(str[k]gt;='0'amp;amp;str[k]lt;='9'||str[k]=='A'||str[k]=='B ')
if(str[k]gt;='0'amp;amp;str[k]lt;='9')
número=número*12 str[ k]-'0';
else if(str[k]=='A'||str[k]=='B')
número=número*12 str[k]-'A' 10;
else ; /*Línea 15*/
else break; /*Línea 16*/
printf( "d\n",número);
devuelve 0;
}
----El análisis es el siguiente----
Pregunta 17
El programa ingresa 10#,
El número del primer paso=0*12 1=1
El número del segundo paso=1 * 12 0=12
Pregunta 18
Entrada del programa 1a0#
El número del primer paso=0*12 1=1
Debido a que a no está dentro del rango de A y Z, el bucle salta. En este momento, número = 1
Pregunta 19, línea de modificación del programa 16
Entrada del programa a*. 0#
Debido a que ni a ni * están dentro del rango de 0 a 9, A y B, el valor numérico no se puede calcular
Entonces número=0*12 0=0
No.Pregunta 20, el programa elimina la línea 15 y restaura la línea 16
La función en este momento es similar a la de la pregunta 19, porque de lo contrario no se ejecutará LZ; analizarlo por sí mismo
El primer paso: num=0*12 1=1
El segundo paso: num=1*12 6=18
El tercer paso: num=18*12 0=216
LZ piénsalo detenidamente. . .