Baixe o app para aproveitar ainda mais
Prévia do material em texto
Questões erradas: 6, 7, 11, 13 1.1. Escreva um programa que leia uma cadeia de caracteres (string) e gera uma nova cadeia de caracteres onde todas as letras minúsculas da cadeia original foram trocadas por maiúsculas e vice-versa. Caracteres que não são letras (como dígitos, '.', espaço, etc.) não devem ser trocados. #include <stdio.h> #include <stdlib.h> #include <string.h> #include<ctype.h> int main() { char frase[1000]; int tamanho,i; printf("Digite a frase:"); gets(frase); tamanho=strlen(frase); for(i=0;i<tamanho;i++) { if(frase[i]>='a' && frase[i]<='z') { frase[i]=toupper(frase[i]); } else { if(frase[i]>='A' && frase[i]<='Z') { frase[i]=tolower(frase[i]); } } } printf("%s",frase); return 0; } 1.2. Um palíndromo é uma palavra que se pode ler tanto da esquerda para a direita como da direita para a esquerda. Alguns exemplos: arara, esse, ovo, rodador, sopapos. Escreva um programa que leia uma cadeia de caractertes (string) e indica (imprime) se a cadeia é ou não um palíndromo. #include <stdio.h> #include <string.h> int main(void) { char vetor[100]; int i, j, tamanho, d=0; printf("Digite a palavra: "); gets(vetor); tamanho=strlen(vetor); j=tamanho-1; for (i=0;i<tamanho;i++) { if (vetor[i] != vetor[j]) { d=1; } j=j-1; } if (d == 0) printf("%s e PALINDROMO",vetor); else printf("%s nao e PALINDROMO",vetor); return 0; } 1.3. Escreva um programa que leia uma cadeia de caracteres (string) que represente o nome completo de uma pessoa e imprima o mesmo nome no formato indicado nos exemplos a seguir. Se a String recebida for “Maria de Sá Santos” o programa deve imprimir “Santos, Maria de Sá” . Se a String recebida for “Pedro de Souza” o programa deve imprimir “Souza, Pedro de”. #include <stdio.h> #include <string.h> int main() { char str[30]; char nova_str[30]; char *p; int index,i; printf("Digite o nome: "); gets(str); p=strrchr(str,' '); if (p!=NULL){ index=p-str+1; for (i=index;i<strlen(str);i++){ nova_str[i-index]=str[i]; } strcat(nova_str, ", "); strncat(nova_str, str,index-1); } printf("\nString: %s",str); printf("\nNova string: %s",nova_str); return 0; } 1.4. Escreva um programa que leia duas cadeias de caracteres (string) e verifica se uma é anagrama de outra. Anagrama é uma palavra formada pela transposição das letras de outra, como, por exemplo: 'capa' e 'paca'; 'roma' e 'mora'. #include <stdio.h> #include <string.h> #include <conio.h> #include <stdlib.h> #include <time.h> #include <math.h> #include <ctype.h> int main(void) { char palavra1[30], palavra2[30]; int cont[256], cont2[256], i, a=0; printf("Digite a primeira palavra..:"); gets(palavra1); printf("Digite a segunda palavra..:"); gets(palavra2); for (i = 0; i < 256; i++) { cont[i] = 0; } for (i = 0; i < 256; i++) { cont2[i] = 0; } for (i = 0; palavra1[i] != '\0'; i++) { cont[palavra1[i]]++; } for (i = 0; palavra2[i] != '\0'; i++) { cont2[palavra2[i]]++; } for (i = 0; i < 256; i++) { if (cont[i] != cont2[i]) { a= 1; } } if (a==0) printf("\nAs palavras %s e %s sao anagramas\n", palavra1, palavra2); else printf("\nAs palavras %s e %s nao sao anagramas\n", palavra1, palavra2); return 0; } 1.5. Implemente um programa que leia uma cadeia de caracteres e um caractere. O programa deve retirar da cadeia todas as ocorrências desse caractere. Imprimir a nova cadeia. #include <stdio.h> #include <string.h> #include <ctype.h> int main(void) { char frase[999], letra,a,b,c; int tam, i; printf("\nDigite uma frase: "); gets(frase); printf("Digite a letra:"); scanf(" %c",&a); b=a; c=a; b=toupper(b); c=tolower(c); tam = strlen(frase); for (i=0;i<tam;i++) { if ((frase[i] ==a) || (frase[i]==b) || frase[i]==c) { frase[i] = ' '; } } printf("%s",frase); return 0; } 1.6. Implemente um programa que leia uma cadeia de caracteres e imprima todos os prefixos dessa cadeia. #include<stdlib.h> #include<stdio.h> #include<string.h> int main() { char str1[100]; printf("Digite a frase/palavra: "); gets(str1); int tam = strlen(str1), i; char str2[tam]; for(i=1; i<=tam; i++) { strncpy(str2,str1,i); printf("%s\n", str2); } return 0; } 1.7. Implemente um programa que leia uma cadeia de caracteres e imprima todos os sufixos dessa cadeia. #include<stdlib.h> #include<stdio.h> #include<string.h> int main() { char str1[100]; printf("Digite a frase/palavra: "); gets(str1); int tam = strlen(str1), i; char str2[tam]; strrev(str1); for(i=1; i<=tam; i++) { strncpy(str2,str1,i); strrev(str2); printf("%s\n", str2); strrev(str2); } return 0; } 1.8. Implemente um programa que leia uma cadeia de caracteres e um número inteiro positivo “n”. O programa deve imprimir todas as sub-cadeias da cadeia original de comprimento igual a “n”. #include<stdlib.h> #include<stdio.h> #include<string.h> int main() { char str1[100]; int n; printf("Digite a frase/palavra: "); gets(str1); printf("Digite um numero inteiro: "); scanf("%d", &n); int i, j, tam = strlen(str1); int x = tam-n; for (i=0; i<=x; i++) { for (j=0; j<n; j++) { printf("%c", str1[j+i]); } printf("\n"); } return 0; } 1.9. Faça um programa para validar um endereço de e-mail digitado pelo usuário. O programa deve indicar se o email fornecido é válido ou não. #include <stdio.h> #include <string.h> #include <ctype.h> #include <math.h> int main(void) { int ponto=0,antesdoPonto=0,a=0,depoisdoPonto=0,i,tamanho; char email[50]; printf("Digite o email:\t"); gets(email); tamanho=strlen(email); for (i=0;i<tamanho;i++) { char c=email[i]; if(c == '@') { if (a) break; a = 1; if (i < 3) break; } else if (a) { if (ponto) { depoisdoPonto++; } else if(c == '.') { ponto = 1; if (antesdoPonto < 3) { break; } } else { antesdoPonto++; } } } if (i == tamanho && depoisdoPonto > 1) { printf("Email digitado e valido"); } else { printf("Email digitado e invalido"); } return 0; } 1.10. Faça um programa para validar uma senha digitada pelo usuário. A senha deve ter pelo menos uma letra maiúscula, pelo menos uma letra minúscula, pelo menos um dígito, deve ter no mínimo 8 e no máximo 15 caracteres. #include <stdio.h> #include <string.h> #include <conio.h> #include <stdlib.h> #include <time.h> int main(void) { char senha[100]; int senha2[100]; int tamanho,minuscula=0,maiuscula=0,i,numero=0; printf("Digite sua senha:\n\n\nMinimo de:\n1 letra maiuscula\n1 Letra minuscula\n1 digito\n"); gets(senha); tamanho=strlen(senha); if(tamanho<8 || tamanho>15) { printf("Tamanho da senha invalida."); } else { for(i=0;i<tamanho;i++) { senha2[i]=senha[i]; if(senha2[i]>=65 && senha2[i]<=90) { maiuscula++; } if(senha2[i]>=97 && senha2[i]<=122) { minuscula++; } if(senha2[i]>=48 && senha2[i]<=57) { numero++; } } if((maiuscula<1 || minuscula<1) || numero<1) { printf("Senha invalida"); } else printf("Senha valida"); } return 0; } 1.11. Implemente um programa que leia uma data (cadeia de caracteres) no formato dd/dd/dddd e indica se o texto lido é uma data válida ou não. São aceitas datas tanto no formato brasileiro quanto no formato americano. Se a data lida for válida, indicar se ela está no formato brasileiro ou no formato americano. #include<stdlib.h> #include<stdio.h> #include<string.h> int main() { char str1[11], str2[3], str3[3], str4[5]; printf("Digite a a data no formato xx/xx/xxxx: "); gets(str1); int i = 0, br=0, ambas=0, eua=0; for (i=0;i<2;i++) { str2[i]=str1[i]; str3[i]=str1[i+3]; str4[i]=str1[i+6]; str4[i+2]=str1[i+8]; } int numero_1 = atoi(str2); int numero_2 = atoi(str3); int numero_3 = atoi(str4); if (numero_3>0 && numero_3<=9999) { if (numero_1>0 && numero_1<=31) { if (numero_1 <= 12) { eua++; br++; } else br++; } if (numero_2>0 && numero_2<=31) { if (numero_2 <= 12) { eua++; br++; } else eua++; } if (eua > br) printf("Data no formato americano"); if (br > eua) printf("Data no formato brasileiro"); if (br == eua) printf("Data valida para ambos os formatos"); } else printf("Data invalida"); return 0; } 1.12. Implemente um programa que leia um ano, no formato dddd, e imprime o ano por extendo. #include<stdio.h> #include<string.h>int cont=0,b; char valor[20],imprimir[200]; void umd(){ switch(valor[b]){ case '1':if(cont>=2)strcat(imprimir," e");strcat(imprimir," um ");break;//verifica caso dgito seja um case '2':if(cont>=2)strcat(imprimir," e");strcat(imprimir," dois ");break; case '3':if(cont>=2)strcat(imprimir," e");strcat(imprimir," tres ");break; case '4':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," quatro ");break; case '5':if(cont>=2)strcat(imprimir," e");strcat(imprimir," cinco ");break; case '6':if(cont>=2)strcat(imprimir," e");strcat(imprimir," seis ");break; case '7':if(cont>=2)strcat(imprimir," e");strcat(imprimir," sete ");break; case '8':if(cont>=2)strcat(imprimir," e");strcat(imprimir," oito ");break; case '9':if(cont>=2)strcat(imprimir," e");strcat(imprimir," nove ");break; } } void doisd(){ if(valor[b]=='1'){ switch(valor[b-1]){ case '0':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dez ");break; case '1':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," onze ");break;//verifica caso dgito seja um case '2':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," doze ");break; case '3':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," treze ");break; case '4':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," quatorze ");break; case '5':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," quinze ");break; case '6':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezesseis ");break; case '7':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezessete ");break; case '8':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezoito ");break; case '9':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezenove ");break; } } else{ switch(valor[b]){//se for zero nao faz nada case '2':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," vinte ");break;//verifica caso dgito seja um case '3':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," trinta ");break; case '4':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," quarenta ");break; case '5':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," cinquenta ");break; case '6':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," sessenta ");break; case '7':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," setenta ");break; case '8':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," oitenta ");break; case '9':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," noventa ");break; } } } void tresd(){ switch(valor[b]){//se for zero nao faz nada case '1':if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir," cem "); else strcat(imprimir," cento ");break;//verifica caso dgito seja um case '2':strcat(imprimir," duzentos ");break; case '3':strcat(imprimir," trezentos ");break; case '4':strcat(imprimir," quatrocentos ");break; case '5':strcat(imprimir," quinhentos ");break; case '6':strcat(imprimir," seiscentos ");break; case '7':strcat(imprimir," setecentos ");break; case '8':strcat(imprimir," oitocentos ");break; case '9':strcat(imprimir," novecentos ");break; } } void quatrod(){ switch(valor[b]){//se for zero nao faz nada case '1':if(cont>=5)strcat(imprimir," e");strcat(imprimir," um mil ");break;//verifica caso dgito seja um case '2':if(cont>=5)strcat(imprimir," e");strcat(imprimir," dois mil ");break; case '3':if(cont>=5)strcat(imprimir," e");strcat(imprimir," tres mil ");break; case '4':if(cont>=5)strcat(imprimir," e");strcat(imprimir," quatro mil ");break; case '5':if(cont>=5)strcat(imprimir," e");strcat(imprimir," cinco mil ");break; case '6':if(cont>=5)strcat(imprimir," e");strcat(imprimir," seis mil ");break; case '7':if(cont>=5)strcat(imprimir," e");strcat(imprimir," sete mil ");break; case '8':if(cont>=5)strcat(imprimir," e");strcat(imprimir," oito mil ");break; case '9':if(cont>=5)strcat(imprimir," e");strcat(imprimir," nove mil ");break; } } void inverter(char dados[20]){//funcao inverter string char auxc; int ac,bc,contc; contc=strlen(dados); bc=contc; for (ac=0;ac<contc/2;ac++){ bc--; auxc=valor[ac]; valor[ac]=valor[bc]; valor[bc]=auxc; } } void tamanhochar(){ printf("Digite a data no formato dddd:"); scanf("%s", &valor); cont=strlen(valor); inverter(valor); if(valor[0]=='0'&&cont<=1){ strcat(imprimir,"Zero"); } } int main(){ tamanhochar(); int a; for(b=cont;b>=0;b--){ switch (b){ case 0:umd();break;//verifica qual casa decimal esta a correr //; case 1:doisd();break; case 2:tresd();break; case 3:quatrod();break; } } printf("\n\n\%s\n\n", imprimir); return 0; } 1.13. CAPTCHA é um acrônimo da expressão "Completely Automated Public Turing test to tell Computers and Humans Apart" (teste de Turing público completamente automatizado para diferenciação entre computadores e humanos): um teste de desafio cognitivo, utilizado como ferramenta anti-spam, desenvolvido de forma pioneira na universidade de Carnegie-Mellon. Um CAPTCHA usual envolve um que pede que um usuário termine um teste. Como os computadores são incapazes de resolver o CAPTCHA, todo usuário que incorpora uma solução correta é presumidamente humano. O termo foi inventado em 2000 por Luis von Ahn, por Manuel Blum, Nicholas J. Hopper (todos da universidade do Carnegie-Mellon), e por John Langford (da IBM). Um tipo comum de CAPTCHA requer que o usuário identifique as letras de uma imagem distorcida, às vezes com a adição de uma sequência obscurecida das letras ou dos dígitos que apareça na tela. Implemente um programa que gere aleatoriamente um CAPTCHA de seis caracteres, o qual obrigatoriamente deve conter: letras maiúsculas, letras minúscula e dígitos. O programa deve exibir o CAPTCHA gerado e solicitar que o usuário digite o valor exibido. Em seguida, o programa deve ler o texto digitado pelo usuário e verificar se este corresponde ao CAPTCHA gerado. Observe que, durante esta comparação, não se faz diferença entre letras maiúsculas ou minúsculas. O programa deve imprimir uma mensagem dizendo se o usuário passou ou não do teste. #include <stdio.h> #include <conio.h> #include <stdlib.h> #include<time.h> int main(void) { int i,b=0; int chave; char captcha[6],a,letra; printf("Gerando 6 valores aleatorios:\n\n"); srand(time(NULL)); for (i = 0; i < 6; i++) { chave = rand() % 25; if (i <= 1) { captcha[i] = chave+65; } else { if (i <=3) { captcha[i] = chave+97; } else { chave = rand() % 9; captcha[i] = chave+48; } } printf("%c ",captcha[i]); } for(i=0;i<6;i++) { printf("Digite ...:"); scanf(" %c",&a); if(a!=captcha[i]) { b=1; } } if(b!=0) { printf("Senha invalida"); } else printf("Senha valida"); return 0; }
Compartilhar