1) a) void le_dados(float temp[], float orvalho[], float pressao[], float vel_vento[], float dir_vento[][360]) { int i,j; for(i=0;i<31;i++) { scanf("%f", & temp[i]); } for(i=0;i<31;i++) { scanf("%f", & orvalho[i]); } for(i=0;i<31;i++) { scanf("%f", & pressao[i]); } for(i=0;i<31;i++) { scanf("%f", & vel_vento[i]); } for(i=0;i<31;i++) { for(i=0; i<360; i++) scanf("%f", & dir_vento[i][j]); } } int main() { float temp[31], orvalho[31], pressao[31], vel_vento[31], dir_vento[31][360]; le_dados(temp, orvalho, pressao,vel_vento,dir_vento); } 2) void converte(tempC[], pressaohPA[], ventomph[], tempF[], pressaoHg[],ventokmh[]) { int i; for(i=0; i<31; i++) { tempC[i]=(tempF[i] - 32)/1.8; pressaoPA[i]=pressaoHg[i]*33.8639; ventomph[i]=ventokmh[i]*1.609344 } } 3) float soma(int n) { int i, pot; float soma=0; for(i=0; i 31) || (mesA < 1) || (mesA>12)) return -1; if((diaN < 1) || (diaN > 31) || (mesN < 1) || (mesN>12)) return -1; idade=anoA-anoN; if((mesN > mesA) || ((mesN == mesA) && (diaN > diaA))) idade--; return idade; } 5) a) void inverte(char *str) { if(*str=='\0') return; inverte(str+1); printf("%c", *str); } b) está na Prova 2 6) Para saber onde é o fim da string. 7) O vetor deve estar ordenado. Se não estiver, podemos usar busca seqüencial ou ordenar o vetor e realizar busca binária. 8) a) são apontadores para char. O apontador guarda um endereço de memória. As variáveis contém nomes de arquivos. b) O primeiro parametro é uma string que contém um nome de arquivo. O segundo é uma string que significa se o arquivo será aberto para leitura/escrita. c) Enquanto não chegar ao fim do arquivo fr, fscanf le um caractere de fr e guarda em c. Em seguida esse caractere é escrito em fw. Na prática, a função copia o arquivo indicado pela string nome1 para o arquivo indicado na string nome2