Para verificar se uma string começa com uma vogal ou termina com uma consoante.
- Use índices para acessar os caracteres diretamente: string[0] (primeiro caractere) e string[strlen(string) - 1] (último caractere).
- Utilize funções como strlen (da biblioteca <string.h>) para calcular o tamanho da string.
Passo 1
Beleza, o exercício pede um programinha em C que verifique duas coisas: se a string começa com vogal e se ela termina com consoante. Vamos usar a biblioteca
<string.h>
pra pegar o tamanho da string com strlen
, e acessar diretamente o primeiro caractere com string[0]
e o último com string[strlen(string) - 1]
. Também vamos usar <ctype.h>
pra facilitar e padronizar tudo com tolower
.Passo 2
Primeiro a gente lê a string do usuário e guarda em um vetor de
char
. Em C, string é só um array de char
terminado em '\0'
. Por exemplo:char s[100];
scanf("%99s", s);
Isso lê até 99 caracteres e coloca um
'\0'
no fim.Passo 3
Agora calculamos o tamanho real da string (sem contar o
'\0'
) usando:int n = strlen(s);
A função
strlen
percorre o array até encontrar '\0'
e retorna quantos caracteres vieram antes dele.Passo 4
Depois disso, pegamos o primeiro e o último caractere assim:
char primeiro = tolower(s[0]);
char ultimo = tolower(s[n - 1]);
Usamos
tolower
(de <ctype.h>
) pra garantir que, mesmo que o usuário digite letra maiúscula, a gente trate tudo como minúsculo.Passo 5
Agora vem a mágica de verificar vogal e consoante.
- Uma vogal é um dos caracteres do conjunto
{ 'a', 'e', 'i', 'o', 'u' }
. - Uma consoante é uma letra do alfabeto que não está nesse conjunto. Além disso, pra ser consoante, queremos ter certeza de que é uma letra (usamos
isalpha
).
Em C a gente faz:
int comeca_com_vogal = (primeiro=='a' || primeiro=='e' || primeiro=='i' || primeiro=='o' || primeiro=='u');
int termina_com_consoante = (isalpha(ultimo) && !(ultimo=='a' || ultimo=='e' || ultimo=='i' || ultimo=='o' || ultimo=='u'));
Passo 6
Por fim, apresentamos o resultado pro usuário. A gente pode imprimir frases simples:
if (comeca_com_vogal)
printf("A string comeca com vogal\n");
else
printf("A string nao comeca com vogal\n");
if (termina_com_consoante)
printf("A string termina com consoante\n");
else
printf("A string nao termina com consoante\n");
Resposta
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char s[100];
scanf("%99s", s);
int n = strlen(s);
char primeiro = tolower(s[0]);
char ultimo = tolower(s[n - 1]);
int comeca_com_vogal = (primeiro=='a' || primeiro=='e' || primeiro=='i' || primeiro=='o' || primeiro=='u');
int termina_com_consoante = (isalpha(ultimo) && !(ultimo=='a' || ultimo=='e' || ultimo=='i' || ultimo=='o' || ultimo=='u'));
if (comeca_com_vogal)
printf("A string comeca com vogal\n");
else
printf("A string nao comeca com vogal\n");
if (termina_com_consoante)
printf("A string termina com consoante\n");
else
printf("A string nao termina com consoante\n");
return 0;
}