1)
Dada uma seqüência de números inteiros não-nulos, seguida por 0,
imprimir seus quadrados.
#include <stdio.h>
main() {
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.
#include <stdio.h>
main() {
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.
#include <stdio.h>
main() {
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.
#include <stdio.h> main() { 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.
#include <stdio.h>
main() {
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
567765 e 32423 são palíndromos.
o567675 não é palíndromo.
#include <stdio.h>
main() {
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.
#include <stdio.h>
#define MAX 10
main() { 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
#include <stdio.h> #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; } main() {
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#include <stdio.h>
main() {
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.
#include <stdio.h>
main() { 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.
#include <stdio.h>
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 <stdio.h>
#include <stdlib.h>
#include <string.h>
main() {
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 <stdio.h> #include <stdlib.h> #include <string.h> main() { 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> main() { 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:
19)
Fazer uma função que calcule a equação abaixo (Resolver):
n
x
x
f
(
)
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