Baixe o app para aproveitar ainda mais
Prévia do material em texto
LISTA DE EXERCÍCIOS SOBRE VETORES EXEMPLO 1: Proponha um programa que realize a leitura de um vetor contendo 10 valores inteiros. Após isto, imprima todas as posições do vetor que possuem valor acima de 100. RESOLUÇÃO DO EXEMPLO 1: #include <stdio.h> int main() { int v[10]; int i; /* ler 10 valores inteiros */ for (i=0; i < 10; i++) { printf ("digite valor %d: ", i); scanf ("%d", &v[i]); } /* varrer vetor e imprimir apenas os valores armazenados */ /* acima de 100 */ for (i=0; i < 10; i++) { if (v[i] > 100) { printf ("v[%d] possui valor %d\n", i, v[i]); } } getch(); } EXERCÍCIOS 1. Proponha um programa que declare um vetor de 5 posições de valores inteiros. Defina cada posição (elemento) do vetor com o valor 0. int main() { int v[5]; int i; for (i=0;i<=4;i++) { v[i]=0; } getch(); } 2. Proponha um programa que declare um vetor de 9 posições de valores inteiros. Associe 0 para a posição 0 do vetor, 1 para a posição 1 e assim por diante. Imprima o vetor na tela. int main() { int v[9]; int i; for (i=0;i<9;i++) { v[i]=i; } getch(); } 3. Explique o que faz o programa abaixo: int main() { int v[5]; in i; v[0] = 10; for (i = 1; i < 5; i++) { v[i] = v[i-1] * 2; } } Programa que declara um vetor de 5 posições de valores inteiros e associa 10 para a posição 0 do vetor, as próximas posições seguem a seguinte logica: a posição i vale o dobro da posição anterior a ela. 4. Proponha um programa que declare um vetor de 26 posições do tipo char. Coloque a letra „A‟ na posição 0, „B‟ na posição 1, e assim por diante. Imprima o vetor na tela. int main() { char v[26]; int i; for (i=0;i<26;i++) { v[i]='A'+i; printf("%c ", v[i]); } getch(); } OUTRO JEITO DE FAZER int main() { char v[26]; char i; for (i='A';i<'Z';i++) { v[i-'A']=i; printf("%c ", v[i-'A']); } getch(); } 5. Proponha um programa que declare um vetor de 10 posições de valores inteiros. Leia o valor a ser colocado em cada posição, calcule a média dos valores digitados e imprima a média na tela. int main() { int v[10]; int i, soma; soma=0; for (i=0;i<10;i++) { scanf ("%d",&v[i]); //ler posição i do vetor soma=soma+v[i]; // acrescenta em soma } printf("media = %f ", soma/10.0); // calcula a media getch(); } 6. Proponha um programa que declare um vetor de 10 posições de valores inteiros. Leia do teclado um valor para cada posição do vetor. Imprima o vetor de trás para a frente. int main() { int v[10]; int i; for (i=0;i<10;i++) { scanf ("%d",&v[i]); } for (i=9;i>=0;i--) { printf("%d ",v[i]); } getch(); } OUTRA FORMA int main() { int v[10]; int i; for (i=0;i<10;i++) { scanf ("%d",&v[i]); } for (i=0;i<10;i++) { printf("%d ",v[9-i]); } getch(); } 7. Declare um vetor de 10 valores inteiros chamado idade. Leia o valor de cada posição do vetor. Após isto, para cada posição, imprima “maior (>=18), menor(<18) ou idade inválida(<0)” conforme os valores presentes no vetor. int main() { int idade[10]; int i; for (i=0;i<10;i++) { scanf ("%d",&idade[i]); if ( idade[i]>=18) printf(" maior \n"); else if ( idade[i]<18 && idade[i]>=0) printf(" menor \n"); else printf ("idade invalida \n"); } getch(); } 8. Escrever um programa que simule a leitura de uma senha. Neste tipo de leitura, não desejamos apresentar os caracteres digitados na tela. Desta forma, devemos utilizar a função getch() para ler cada caractere individualmente. A cada caractere digitado, o programa deve imprimir um asterisco na tela. A leitura da senha termina quando o usuário digitar ENTER. Neste momento, o programa deve imprimir na tela a senha digitada. Atenção: A função getch() retorna o código do caractere digitado. Ex: char ch = getch(); ENTER possui código numérico 13. Não esqueça de colocar o zero no final do vetor de caracteres (string). int main() { char str_senha[500]; char ch; int i=0; do{ ch=getch(); if (ch == 13) str_senha[i]=0; else str_senha[i]=ch; printf ("*"); i++; }while (ch != 13); printf ("\n%s",str_senha); getch(); } 9. Escrever um programa que (a) leia um conjunto de 10 notas, armazenando-as em um vetor (ou arranjo), (b) calcule e imprima a sua média, (c) calcule e imprima o número de alunos com nota superior à média int main() { int nota[10]; int i,x,z; float media; i=x=z=0; do{ printf ("digite a nota do aluno:"); scanf ("%d",¬a[i]); if (nota[i]>=6) x++; z=z+nota[i]; i++; }while(i<10); media=z/10.0; printf ("%d alunos tiveram notas acima da média, a media de notas da classe foi %f", x,media); getch(); } 10. Fazer um programa que (a) leia uma frase de até 80 caracteres, incluindo brancos, (b) conte e imprima quantos brancos existem na frase, (c) conte e imprima quantas vezes a letra A aparece. QUESTÃO ESPECIAL conte e imprima quantas vezes aparece cada letra. int conta_car (char frase [80], char ch) { int i, x; i=0; x=0; while (frase[i] != 0) { if (toupper(frase[i])==toupper(ch)) x++; i++; } return x; } int main() { char frase[80]; char ch; gets(frase); printf ("espacos: %d\n", conta_car(frase,' ')); for (ch= 'A'; ch<='Z'; ch++) { printf ("%c: %d\t", ch, conta_car(frase,ch)); } getch(); } 11. Criar um algoritmo que leia o preço de compra e o preço de venda de dez mercadorias. O algoritmo deverá imprimir quantas mercadorias proporcionam: (a) lucro menor do que 10%, (b) lucro entre 10% e 20%, inclusive, e (c) lucro maior que 20% #define TAM 10 //serve pra caso eu queria mudar o tamanho do vetor, eu posso mudar com facilidade int main() { float c[TAM]; float v[TAM]; int i; for (i=0;i<TAM;i++); { printf ("compra:"); scanf("%f",&c[i]); printf ("venda:"); scanf("%f",&v[i]); } int c1, c2, c3; c1=c2=c3=0; for (i=0;i<TAM;i++); { if (v[i]/c[i] <1,1)c1++; else if (v[i]/c[i] <=1,2)c2++; else c3++; } printf ("%d %d %d\n", c1,c2,c3); getch(); } 12. Criar um algoritmo que leia dois conjuntos de números inteiros, tendo cada um 10 e 20 elementos, e apresentar os elementos que não são comuns aos dois conjuntos. int main() { int a[10]; int b[20]; int i,j,achou; for (i=0;i<10;i++); { printf ("digite o primeiro conjunto de num inteiros "); scanf ("%d",&a[i]); } for (j=0;j<20;j++);{ printf ("digite o segundo conjunto de num inteiros "); scanf ("%d",&b[j]); } for (i=0;i<10;i++); { for (j=0;j<10;j++); { if (a[i] == b[j]) achou=1; } if (achou==0) printf ("%d", a[i]); } getch(); } EXERCÍCIOS SOBRE STRINGS 13. Declare uma string de tamanho 80 e inicialize-a com o valor “AEDS”. int main() { char s[80] = "AEDS"; } 14. Apresente numericamente como esta string foi representada na memória. Consulte a tabela ASCII para saber o código de cada letra. 65 69 68 xx (nao lembra) 00 ou 'A' 'E' 'D' 'S' 0 15. Para cada função abaixo apresente seus parâmetros de entrada, seu retorno e explique o que a função faz. a. Strlen - A função strlen (abreviatura de string length) recebe uma string e devolve o seu comprimento. b. Strcpy - A função strcpy (abreviatura de string copy) recebe duas strings e copia a segunda (inclusive o caractere nulo final) para o espaço ocupado para a primeira. O conteúdo original da primeira string é perdido. Antes de chamar a função, o programador deve certificar-se de que o espaço alocado para primeira string é suficiente para acomodar a cópia da segunda. c. Strncpy - função strncpy tem o mesmo comportamento da função strcpy, exceto por copiar até quantidade caracteres da string d. Strcat - A string origem é copiada para o final da string destino. e. Strstr - Para localizar uma substring dentro da string f. Strchr - Procura o caractere e retorna a primeira ocorrência. g. Memcpy – Copia o número especificado de dados a partir de uma determinada fonte para o destino requisitado. 16. Proponha a implementação em código C para as funções strlen, strcpy, strcat, strncpy. STRLEN int strlenn (char s[]) { int i=0; while (s[i] !=0) i++; return i; } int main() { int d; d = strlenn ("teste"); printf ("%d", d); getch(); } STRCPY int strcpyy (char d[], char o[]) { int i; i = 0; while (o[i] != 0) { printf ("TRANSF. %c DA POSICAO %d de ORIG para DEST\n", o[i], i); getch(); d[i] = o[i]; i++; } d[i] = 0; return i; } int main() { char s1[80]; char s2[100]; strcpyy (s1, "casa"); printf (s1); getch(); } STRCAT int main () { char str1[100],str2[100]; printf ("Entre com uma string: "); gets (str1); strcpy (str2,"Voce digitou a string "); strcat (str2,str1); /* str2 armazenara' Voce digitou a string + o conteudo de str1 */ printf ("\n\n%s",str2); return(0); } STRNCPY int strncpyy (char d[], char o[], int n) { int i; i = 0; while (o[i] != 0 && i<n) { printf ("TRANSF. %c DA POSICAO %d de ORIG para DEST\n", o[i], i); getch(); d[i] = o[i]; i++; } d[i] = 0; return i; } int main() { char s1[80]; strcpyy (s1, "teste",3); printf (s1); getch(); }
Compartilhar