EXERCÍCIOS EM LINGUAGEM C++ Humberto Santos Formador: Luís Charneca 01-02-2012 EXERCÍCIOS EM LINGUAGEM C++ Conteúdo 1. Exercício 1 ................................................................................... 2 2. Exercício 2 ................................................................................... 2 3. Exercício 3 ................................................................................... 2 4. Exercício 4 ................................................................................... 2 5. Exercício 5 ................................................................................... 3 6. Exercício 6 ................................................................................... 4 7. Exercício 7 ................................................................................... 5 8. Exercício 8 ................................................................................... 5 9. Exercício 9 ................................................................................... 6 10. Exercício 10 ............................................................................... 7 11. Exercício 11 ............................................................................... 8 12. Exercício 12 ............................................................................... 8 13. Exercício 13 ............................................................................... 9 14. Exercício 14 ............................................................................... 9 15. Exercício 15 .............................................................................. 10 16. Exercício 16 .............................................................................. 11 17. Exercício 17 .............................................................................. 12 Página 1 de 13 IMSI_002 Humberto Santos EXERCÍCIOS EM LINGUAGEM C++ Caderno de Exercícios projeto C 1. Exercício 1 Explique porque está errado fazer if (num=10) ... R- Nesta situação o sinal (=) está como atribuição e deveria ser como operador relacional (==). 2. Exercício 2 if(num) ...; é equivalente a if(num!=0) ...; a. Verdadeiro b. Falso R- Falso 3. Exercício 3 Qual o valor de x após a seguinte sequência de comandos: a = 10; b = 20; x = 0; x = (b > a) ? b : a; a) 0 b) 2 c) 10 d) 20 e) 40 f) Nenhuma correta R- Alínea d) x=20 4. Exercício 4 Qual o valor de x após a sequência de comandos: a = 1; b = 2; c = 3; x = 0; x = a < b ? a < c ? a : c : b < c ? b : c; Página 2 de 13 IMSI_002 Humberto Santos EXERCÍCIOS EM LINGUAGEM C++ a) 0 b) 1 c) 2 d) 3 e) Nenhuma correta R- Alínea c) a=1 5. Exercício 5 Escreva um programa que coloque os números de 1 a 100 no ecrã na ordem inversa (começando em 100 e terminando em 1). #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int controlo; for (controlo=100;controlo>=1;controlo=controlo-1) printf("%d - ",controlo); system("PAUSE"); return 0; } Página 3 de 13 IMSI_002 Humberto Santos EXERCÍCIOS EM LINGUAGEM C++ 6. Exercício 6 Escreva um programa que leia uma string, conte quantos caracteres dessa string são iguais a 'a' e substitua os que forem iguais a 'a' por 'b'. O programa deve imprimir o número de caracteres modificados e a string modificada. #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { char string[100],letra1,letra2; /* String, ate' 99 caracteres */ int i, cont; letra1=163; // letra ú letra2=130; //letra é printf("\n\n\tDigite uma frase: "); gets(string); printf("\n\n\tFrase digitada: %s \n", string); cont = 0; for (i=0; string[i] != '\0'; i=i+1) { if ( string[i] == 'a' ) /* Se for a letra 'a' */ { cont = cont +1; /* Incrementa o contador de caracteres */ string[i] = 'b'; } } printf("\n\tN%cmero de caracteres a = %d\n\n",letra1, cont); printf("\n\tA nova frase %c %s\n\n",letra2,string); system("PAUSE"); Página 4 de 13 IMSI_002 Humberto Santos EXERCÍCIOS EM LINGUAGEM C++ return 0; } 7. Exercício 7 Escreva um programa que imprima no ecrã todos os números pares entre 1 e 100. #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int controlo; for (controlo=2;controlo<=100;controlo=controlo+2) printf("%d - ",controlo); system("PAUSE"); return 0; } 8. Exercício 8 Escreva um programa que imprima no ecrã todos os números entre 1 e 100 divisíveis por 4. #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) Página 5 de 13 IMSI_002 Humberto Santos EXERCÍCIOS EM LINGUAGEM C++ { int controlo; int divisivel; printf("Programa que mostra os numeros divisiveis por 4 ate 100: "); scanf("%d",&divisivel); for (controlo=100;controlo>=1;controlo=controlo-1) { if(controlo%divisivel==0) printf("%d - ",controlo); } system("PAUSE"); return 0; } 9. Exercício 9 Faça um programa que inverta uma string: leia a string e guarde-a invertida numa outra string. Use o ciclo for para percorrer a string até o seu final. #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char string1[100], string2[100],letra; int contador, i, j; letra=130; printf("\n\n\tDigite o nome a inverter: "); scanf("%s", &string1); Página 6 de 13 IMSI_002 Humberto Santos EXERCÍCIOS EM LINGUAGEM C++ contador = 0; for (i=0; string1[i] != '\0'; i++) //for para descobrir o tamanho da string { contador += 1; } j=contador-1; for (i=0; string1[i] != '\0'; i++) //for para inverter a string { string2[j] = string1[i]; if (j == 0) break; j -= 1; { string2[contador] = '\0'; //Alteração e relação ao primeiro código } } printf("\n\tO nome invertido %c: %s\n\n",letra, string2); system("PAUSE"); return (0); } 10. Exercício 10 Os trechos de programa a seguir são equivalentes entre si, sob o ponto de vista do que é impresso: for (i = 0 ; i < 10; i++) printf("%d", i); Página 7 de 13 IMSI_002 Humberto Santos EXERCÍCIOS EM LINGUAGEM C++ e for (i = 0 ; i < 10; ++i) printf("%d", i); a) . Verdadeiro b) Falso R- A resposta correta é a alínea a) verdadeiro 11. Exercício 11 O trecho de programa a seguir é switch(num) { case 1; printf("O número é 1 "); break; case 2; printf("O número é 2 "); break; default; printf("O número é diferente de 1 e 2"); break; } a) . Válido na linguagem C b) . Não válido na linguagem C R- A resposta correta é a alínea b, pois a seguir a um case leva ‘ : ‘ e não ‘ ; ‘ 12. Exercício 12 Sendo num uma variável inteira, o que imprime o trecho de código a seguir? num = 1; switch(num) { case 1: printf("O número é 1 "); Página 8 de 13 IMSI_002 Humberto Santos EXERCÍCIOS EM LINGUAGEM C++ case 2: printf("O número é 2 "); default: printf("O número é diferente de 1 e 2"); } a) b) c) d) e) O número é 1 O número é 2 O número é diferente de 1 e 2 O número é 1 O número é 2 O número é 1 O número é 2 O número é diferente de 1 e 2 R- A resposta correta é a alínea e “O número é 1 O número é 2 O número é diferente de 1 e 2” 13. Exercício 13 O ciclo for a seguir: int i; for ( i = 0 ; i <= 5; i++ , printf("%d ", i)); a) b) c) d) e) Imprime 0 1 2 3 4 5 Não funciona, pois tem sintaxe errada Imprime 1 2 3 4 5 6 Imprime 1 2 3 4 5 Nenhuma das opções anteriores R- A resposta correta é a alínea c) 1 2 3 4 5 6 14. Exercício 14 Elabore um programa que escreva no ecrã o carácter «*» 80 Vezes, utilizando apenas um printf – ciclo while. #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int a=1; Página 9 de 13 IMSI_002 Humberto Santos EXERCÍCIOS EM LINGUAGEM C++ while (a<=81) { printf ("*"); a++;} system("PAUSE"); return 0; } 15. Exercício 15 Refaça o programa anterior com o ciclo do.. while e o ciclo for. #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int a=1; while (a<81){ printf ("*"); a++; } { for(a=1;a<=80;a++) printf ("#",a); } /* duas formas de fazer com comando do/while ou seja neste caso antes de iniciar já vem com o valor de oitenta do comando for e tem de se retirar do Página 10 de 13 IMSI_002 Humberto Santos EXERCÍCIOS EM LINGUAGEM C++ { printf ("$"); a--;} while (a>1); */ a=1; do { printf ("$"); a++; } while (a<81); system("PAUSE"); return 0; } 16. Exercício 16 Elabore um programa que faça a média de 3 números inseridos pelo utilizador utilizando um ciclo. // programa para pedir ao utilizador 3 números e achar a média #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int x,let1,let2; float media=0,a1; let1=144; // É let2=163; //ú Página 11 de 13 IMSI_002 Humberto Santos EXERCÍCIOS EM LINGUAGEM C++ printf ("\n\n\t\tPROGRAMA QUE MOSTRA A M%cDIA DE TRES N%cMEROS\n\n",let1,let2); for (x=1;x<=3 ;x++) { printf ("\n\t\ INTRODUZA VALOR %d: ",x); scanf("%f",&a1); media=media+a1; // media += a1; printf ("\n\n\tA M%cDIA DOS VALORES %c: %.2f VALORES\n\n",let1,let1,(media)/x); } system("PAUSE"); return (0); } 17. Exercício 17 Elabore um programa que faça a média de N números inseridos pelo utilizador utilizando um ciclo. O utilizador dirá quantos números pretende inserir. #include <stdio.h> #include <stdlib.h> int main4567654(int argc, char *argv[]) { int quant,x,let1,let2,let3; float valor,media=0; let1=144; // É let2=163; //ú Página 12 de 13 IMSI_002 Humberto Santos EXERCÍCIOS EM LINGUAGEM C++ let3=160; // à printf ("\n\n\t\tPROGRAMA QUE MOSTRA A M%cDIA DE V%cRIOS N%cMEROS\n",let1,let3,let2); printf ("\n\t\QUAL O N%cMERO DE NOTAS A INTRODUZIR : ",let2); scanf("%d",&quant); for (x=1;x<=quant;x++) //x++ é igual a x=x+1 { printf ("\n\tQUAL A NOTA DO TESTE %d: ",x); scanf ("%f",&valor); media=media+valor; } printf ("\n\n\tA M%cDIA DOS TESTES %c: %.2f VALORES\n\n",let1,let1,media/quant); system("PAUSE"); return (0); } Página 13 de 13 IMSI_002 Humberto Santos