1) Dada uma seqüência de números inteiros não-nulos, seguida por 0, imprimir seus quadrados. int numero, /* usada para leitura da sequencia */ quadrado; /* guarda o quadrado do numero lido */ printf("\n\tcalculo dos quadrados de uma sequencia de numeros\n"); printf("\nentre com uma sequencia de numeros inteiros nao-nulos, seguida por 0:\n"); scanf("%d", &numero); while (numero!= 0) quadrado = numero * numero; printf("o quadrado do numero %d e' %d\n", numero, quadrado); scanf("%d", &numero); 2) Dado um número inteiro positivo n, calcular a soma dos n primeiros números inteiros positivos. int n, /* guarda o numero dado */ i, /* contador */ soma; /* guarda as somas parcias */ printf("\n\t Calculo da soma dos n primeiros inteiros positivos\n"); /* Inicializacoes */ printf("\ndigite o valor de n: "); scanf("%d", &n); soma = 0; i = 1; /* Calculo da soma */ while (i <= n) soma = soma + i; i = i + 1; /* Escreve a resposta */ printf("a soma dos %d primeiros inteiros positivos e' %d\n", n, soma);
3) Dados um inteiro x e um inteiro não-negativo n, calcular x n. int x, /* base */ n, /* expoente */ i; /* numero de multiplicoes feitas */ /* Inicializacoes */ printf("\n\tcalculo de potencias\n"); printf("digite a base (inteiro): "); scanf("%d", &x); printf("digite o expoente (inteiro nao-negativo): "); scanf("%d", &n); i = 0; /* Calculo da potencia */ while (i < n) x = x * x; i = i + 1; printf("\no valor de %d elevado a %d= %d\n", x, n, x); 4) Dados dois números inteiros positivos, determinar o máximo divisor comum entre eles usando o algoritmo de Euclides. int anterior, atual, resto; printf("digite os dois inteiros positivos: "); scanf("%d %d", &anterior, &atual); printf("mdc(%d,%d) = ", anterior, atual); resto = atual % anterior; while (resto!= 0) resto = anterior % atual; anterior = atual; atual = resto; printf("%d\n", anterior);
5) Dado um número natural na base binária, transformá-lo para a base decimal. int num, /* numero dado (na base 2) */ pot2, /* guardara uma potencia de 2 */ final; /* numero dado convertido para base 10 */ printf("digite o numero a ser transformado da base 2 para a base 10: "); scanf("%d", &num); /* inicializacoes */ final = 0; pot2 = 1; printf("%d na base 10 e': ", num); while (num!= 0) final = final + num % 10 * pot2; /* processa um digito binario */ num = num / 10; pot2 = pot2 * 2; printf("%d\n", final); 6) Dizemos que um número natural n é palíndromo, se o 1º algarismo de n é igual ao seu último algarismo, o 2º algarismo de n é igual ao penúltimo algarismo, e assim sucessivamente. Exemplos: o o 567765 e 32423 são palíndromos. 567675 não é palíndromo. Dado um número natural n > 10, verificar se n é palíndrome
int num, /* numero dado */ aux, /* guarda o pedaco do numero que resta inverter */ reverso; /* guarda o numero de tras para frente */ printf("digite um natural: "); scanf("%d", &num); /* inicializacoes */ aux = num; reverso = 0; while (aux!= 0) reverso = reverso * 10 + aux % 10; /* acrescenta mais um digito a direita */ aux = aux / 10; /* joga fora esse digito */ if (reverso == num) printf("%d e' palindrome\n", num); else printf("%d nao e' palindrome\n", num); 7) Dados dois vetores x e y, ambos com n elementos, determinar o produto escalar desses vetores. #define MAX 10 int i, n; float prod, x[max], y[max]; printf("digite o tamanho dos vetores: "); scanf("%d", &n); printf("digite os componentes do vetor x: "); for (i = 0; i < n; i++) scanf("%f", &x[i]); printf("digite os componentes do vetor y: "); for (i = 0; i < n; i++) scanf("%f", &y[i]); prod = 0; for (i = 0; i < n; i++) prod = prod + x[i] * y[i]; printf("produto escalar desses vetores: %f\n", prod);
8) Dadas dois strings (um contendo uma frase e outro contendo uma palavra), determine o número de vezes que a palavra ocorre na frase. Exemplo: Para a palavra ANA e a frase : ANA E MARIANA GOSTAM DE BANANA Temos que a palavra ocorre 4 vezes na frase. Resolver (Desafio). 9) Simule a execução do programa abaixo destacando a sua saída. Dados: 7 10 3 6 12 13 15 #include <stdio.h int main() int n, inic, fim, i, aux, para, a[100]; printf("digite n: "); scanf("%d", &n); printf("n = %d\n", n); printf("digite uma sequencia de %d numeros.\n", n); for (i = 0; i < n; i++) scanf("%d", &a[i]); printf("%d ", a[i]); printf("\n"); inic = 0; fim = n - 1; aux = a[inic]; while (inic < fim) para = 0; while ((inic < fim) &&!para) if (a[fim] <= aux) para = 1; else fim = fim - 1; if (para) a[inic] = a[fim]; inic = inic + 1; para = 0; while ((inic < fim) &&!para) if (a[inic] <= aux) inic = inic + 1; else para = 1; if (para) a[fim] = a[inic]; fim = fim - 1; for (i = 0; i < n; i++)
printf("%d ", a[i]); printf("\n"); a[inic] = aux; for (i = 0; i < n; i++) printf("%d ", a[i]); printf("\n"); return 0; Digite n: 7 n = 7 Digite uma sequencia de 7 numeros. 10 3 6 12 13 7 15 7 3 6 12 13 12 15 7 3 6 12 13 12 15 7 3 6 10 13 12 15 10) Usando a função do item anterior, faça um programa que lê dois inteiros positivos a e b e verifica se o menor deles é segmento do outro. Exemplo: a b 567890 678 => b é segmento de a 1243 2212435 => a é segmento de b 235 236 => um não é segmento do outro #define TRUE 1 #define FALSE 0 int encaixa(int a, int b) while (b!= 0 && a % 10 == b % 10) a = a/10; b = b/10; if (b == 0) return TRUE; else return FALSE; int a, b, subseq, maior, menor; printf("digite dois inteiros positivos: "); scanf("%d %d", &a, &b); if (a > b) maior = a; menor = b;
else maior = b; menor = a; subseq = FALSE; while (maior >= menor) if (encaixa(maior,menor) == TRUE) subseq = TRUE; maior = maior/10; if (subseq == TRUE) printf("%d e' segmento de %d\n",b,a); else printf("%d nao e' segmento de %d\n",b,a); 11) Sabe-se que um número da forma n 3 é igual a soma de n ímpares consecutivos. Exemplo: 1 3 = 1, 2 3 = 3+5, 3 3 = 7+9+11, 4 3 = 13+15+17+19,... Dado m, determine os ímpares consecutivos cuja soma é igual a n 3 int m, /* dado de entrada */ n, i, inicio; /* primeiro dos impares de uma sequencia que soma n^3 */ printf("digite o valor de m: "); scanf("%d", &m); inicio = 1; for (n = 1; n <= m; n++) printf("%d*%d*%d = %d", n, n, n, inicio); for (i = 1; i < n; i++) printf("+%d", inicio + 2 * i); inicio = inicio + 2 * n; /* inicio da proxima sequencia */ printf("\n");
12) Os pontos (x,y) que pertencem à figura H (abaixo) são tais que x > 0, x > 0 e x 2 + y 2 < 1. Dados n pontos reais (x,y), verifique se cada ponto pertence ou não a H. int i, n; float x, y; printf("digite o numero de pontos: "); scanf("%d", &n); for (i = 0; i < n; i++) printf("digite as coordenadas de um ponto: "); scanf("%f %f", &x, &y); if (x >= 0 && y >= 0 && x*x + y*y <= 1) printf("o ponto (%f,%f) pertence a regiao.\n", x, y); else printf("o ponto (%f,%f) nao pertence a regiao.\n", x, y); 13) Escrever uma função que conte o número de vogais de uma string. int contavogais (char s[]) int numvogais, i; char *vogais; vogais = "aeiouaeiou"; numvogais = 0; for (i = 0; s[i]!= '\0'; ++i) char ch = s[i]; int j; for (j = 0; vogais[j]!= '\0'; ++j) if (vogais[j] == ch) numvogais += 1; break; return numvogais;
14) Dados três números, imprimi-los em ordem crescente. main() int n1, n2, n3; /* dados de entrada */ printf("digite tres numeros: "); scanf("%d %d %d", &n1, &n2, &n3); /* Existem 6 possiveis ordens para imprimior os numeros lidos */ if (n1 <= n2 && n2 <= n3) printf("a ordem crescente: %d %d %d\n", n1, n2, n3); else if (n1 <= n3 && n3 <= n2) printf("a ordem crescente: %d %d %d\n", n1, n3, n2); else if (n2 <= n1 && n1 <= n3) printf("a ordem crescente: %d %d %d\n", n2, n1, n3); else if (n2 <= n3 && n3 <= n1) printf("a ordem crescente: %d %d %d\n", n2, n3, n1); else if (n3 <= n1 && n1 <= n2) printf("a ordem crescente: %d %d %d\n", n3, n1, n2); else /* n3 <= n2 && n2 < n1 */ printf("a ordem crescente: %d %d %d\n", n3, n2, n1);
15) Fazer uma rotina que recebe um string como parâmetro e imprima quantas palavras (separadas por espaços em branco) o mesmo contém. #include <stdlib.h> #include <string.h> char str1[40]; gets(str1); int i = 0; int contador = 0; int x = strlen(str1); while(i<=x) if(str1[i] == ' ') contador++; i++; printf("%d\n",contador+1); 16) Escrever um programa que recebe uma string e um caractere como parâmetro e remove todas as ocorrências do caractere da string substituindo por *. #include <stdlib.h> #include <string.h> char str1[30]; char str2[30]; char str3[30]; gets(str1); gets(str2); int i=0; int j=0; while(str1[i]!= '\0') if(str1[i]!= str2[0]) str3[i] = str1[i]; else str3[i] = '*'; i++; str3[i] = '\0'; printf("%s\n",str3);
17) Fazer um programa que lê um string qualquer de no máximo 80 caracteres e imprima: - Quantos caracteres tem o string; - Quantos caracteres são números; - Quantos caracteres são minúsculas. #include <stdlib.h> #include <string.h> #include <cctype> char palavra[80]; char t[1]; char p[1]; char s; gets(palavra); int conta_num =0; int x = strlen(palavra); int conta_mais = 0; for(int i=0;i<=x-1;i++) s = palavra[i]; if(isdigit(s)) conta_num++; if(palavra[i]!= ' ') t[0] = toupper(palavra[i]); p[0] = palavra[i]; if(p[0] == t[0] ) conta_mais++; printf("quantidade de caracteres %d\n",x); printf("quantidade de numeros %d\n",conta_num); printf("quantidade de letras Maiusculas %d\n",conta_mais); 18) Fazer um programa que solicite um número inteiro e soletre o mesmo na tela. (resolver) Ex: 124: um, dois, quatro
19) Fazer uma função que calcule a equação abaixo (Resolver): f ( x) n x a) Calcular a média das raízes b) Encontrar a maior raiz c) Determinar quais valores de x não foram possíveis calcular as raízes. 20) Escrever um programa que use a função seno para emite os valores que geram o gráfico abaixo (Resolver). Observação: Não é necessário plotar o gráfico em sim calcular os valores que geram o mesmo. Considere: θ [0 a 360] em radiano e precisão dupla 7 casas. 1,5 1 0,5 0-0,5-1 -1,5