TEST: 1 b 2 d 3 d 4 b 5 b Cuestión 1: (Buscar errores) Línea 2: No puede ir un igual. - correcto: #define TAM 100 Línea 15: Falta punto y coma al final. Línea 17: Se intenta cambiar el valor de la constante C Línea 19: Se accede a elementos más allá del final del vector. - correcto: for( i=0; i < TAM; i++ ) { Línea 21: Los corchetes con el índice deben de ir junto al nombre del vector. - correcto: v[i].parcial = i + C; Líneas 23 y 26: Falta que las instrucciones del "if ( i > 0 )" vayan entre llaves. Cuestión 2: for( exp1; exp2; exp3 ) { instrucciones; } Se convierte en: exp1; while( exp2 ) { instrucciones; exp3; } Cuestión 3: (Traza) el valor de a es 0 0 el valor de a es 4 2 el valor de a es 16 4 el valor de a es 36 6 el valor de a es 64 8 Problema 1: struct fecha { int d, m, a; }; struct cuenta { char ncuenta[22]; int tipo_de_cuenta; float saldo; struct fecha apertura, ultima_act; char posee_tarjeta; }; Problema 2: #include #define N 100 int main() { int V[N], i, alternado; for( i=0; i < N; i++ ) { printf( "Dame un valor para V[%d]: ", i ); scanf( "%d", &V[i] ); } alternado = 1; for( i=1; i < N; i++ ) { if ( V[i] * V[i-1] > 0 ) { alternado = 0; break; } } printf( "El vector %s alternado\n", (alternado) ? "ES" : "NO ES" ); return 0; } Problema 3: #include #define N 5 struct surtidor { char nombre[15]; int codigo; float cantidad, precio; }; void Inicio( struct surtidor S[N], int n ) { int i; for( i=0; i < n; i++ ) { printf( "Tipo de combustible: " ); gets( S[i].nombre ); printf( "Código: " ); scanf( "%d", &S[i].codigo ); printf( "Precio/Litro: " ); scanf( "%f", &S[i].precio ); printf( "Cantida de combustible: " ); scanf( "%f", &S[i].cantidad ); } } void Repostar( struct surtidor S[N], int n ) { int codigo, i, encontrado; float cantidad, dinero; printf( "Código del combustible: " ); scanf( "%d", &codigo ); printf( "Dinero que desea gastar: " ); scanf( "%f", dinero ); encontrado=0; for( i=0; i < n; i++ ) { if ( S[i].codigo == codigo ) { encontrado = 1; break; } } /** Al romper el bucle una vez encontrado, en la variable 'i' nos queda el índice del elemento correcto. **/ if ( encontrado ) { cantidad = dinero / S[i].precio; if ( cantidad < S[i].cantidad ) { printf( "Usted va a respostar %f litros de %s\n", cantidad, S[i].nombre ); S[i].cantidad -= cantidad; } else { printf( "No queda suficiente combustible de %s\n", S[i].nombre ); } } else { printf( "El código %d no ha sido encontrado\n", codigo ); } } int main() { struct surtidor Gasolinera[N]; int opc; do { printf( "\n\n -- GASOLINERA --\n\n" ); printf( " 1.- Entrada de datos iniciales\n" ); printf( " 2.- Repostar\n" ); printf( " 3.- Salir\n" ); printf( "\n\n Pulsa opción: " ); scanf( "%d", &opc ); switch( opc ) { case 1 : Inicio( Gasolinera, N ); break; case 2 : Repostar( Gasolinera, N ); break; case 3 : break; default : printf( "\a\a!!! CUIDADO !!! Opción errónea\n" ); break; } } while( opc != 3 ); }