Primeiro.. substitua as aspas simples por aspas duplas das suas strings.. E inicializa as strings assim: char milhares[][8] ={"mil", "milhao", "bilhao", "trilhao"}; Porquê esse array é bidimensional... O primeiro pode deixar em branco porquê o compilador verifica esse limite, mas o segundo tem que colocar com as letras das strings.. o maior número possível entende ? (Incluindo o terminador nulo que C inclui no fim da string). Se não quiser entender... bota 15 em todos que vai passar... O seu 'include' ... os 2 últimos includes estão separados do '#' ... junte-os. scanf("%d", & numero); Essa linha aí... junte o '&' com o 'numero'... isso vai passar o endereço da variável para o scanf poder acessá-la com um ponteiro. O valor 'return' da sua função 'extenso' ... tem que ser do tipo int (você declarou isso na função) e você está retornando um valor char. Nada que um casting não resolva... ficaria assim: return int(dezenas[x / 10]); Acho que erros sintáticos só tem esses.... não sei como está a lógica do seu programa.. não li 'a fundo'.... Ahn.. e uma dica... se essa matéria é a 5º vez que você repete, talvez não esteja no curso certo. ;)