Olá!
Pelo código que você compartilhou, parece que você está tentando implementar uma função para calcular a potência entre dois números. No entanto, notei que o seu código possui um switch case que só trata o caso em que y é igual a 0, atribuindo 1 ao resultado.
Para calcular a potência corretamente, você precisa fazer um loop para multiplicar x por ele mesmo y vezes. No seu código, você já está fazendo isso com o loop for, mas você está multiplicando x por ele mesmo y-1 vezes, pois o loop começa em 1 e vai até y-1. Para corrigir isso, você pode alterar a condição do loop para i <= y.
Além disso, notei que você está usando a função abs() para garantir que os valores de a e b sejam positivos. No entanto, nesse caso, não é necessário, pois a função abs() retorna o valor absoluto de um número, ou seja, o seu código já está considerando a e b como positivos.
Aqui está o código corrigido:
#include <stdio.h>
void potencia(int x, int y) {
int resultado = 1;
for (int i = 1; i <= y; i++) {
resultado *= x;
}
printf("%d ^ %d = %d\n", x, y, resultado);
}
int main() {
int a = 2;
int b = 10;
potencia(a, b);
return 0;
}
Agora o código deve calcular corretamente a potência entre a e b. Por exemplo, com os valores a = 2 e b = 10, o resultado será 1024.
Espero ter ajudado e bons estudos!