Estrutura de Dados
Exemplos:
Teste
#include <stdio.h>
int main()
{
int x = 0;
// float pontuacao[5];
float pontuacao[5] = {993.86,682.01,639.60,310.45,123.25};
// pontuacao1 = 993.86;
// pontuacao2 = 682.01;
// pontuacao3 = 639.60;
// pontuacao4 = 310.45;
// pontuacao5 = 123.25;
puts("Aqui está a pontuação:");
/* printf("#1 %.2f\n",pontuacao[0]);
printf("#2 %.2f\n",pontuacao[1]);
printf("#3 %.2f\n",pontuacao[2]);
printf("#4 %.2f\n",pontuacao[3]);
printf("#5 %.2f\n",pontuacao[4]); */
for(x=0;x<5;x++)
printf("#5 %.2f\n",x+1,pontuacao[x]);
return (0);
}

2ª aula
// Vetor
#include <stdio.h>
int main(void) {
int valores[10]={1,2,3,4,5,6,70,8,9,10};
int x;
for(x=0;x<10;x++)
printf("%d\n",valores[x]);
printf("\n\nO valor na posição 7 do vetor é: %d",valores[6]);
printf("\n\nO valor na posição 20 do vetor é: %d",valores[20]);
puts("\nA instrução anterior é um erro de programação.");
return 0;
}

2ª aula (2º exemplo)
// Vetor 2
#include <stdio.h>
int main(void) {
int A[5]={10,20,30,40,50};
int CopiaA[5];
int x;
// copia os dados de A para Copia A
for(x=0;x<5;x++)
CopiaA[x]=A[4-x]; //copia de tras pra frente (tirar o "4-x" pra copiar normalmente)
// Escreve os vetores
puts("Vetor A");
for(x=0;x<5;x++)
printf("Posição[%d] contém o valor %d\n", x, A[x]);
puts("\nVetor CopiaA");
for (x=0;x<5;x++)
printf("Posição[%d] contém o valor %d\n", x, CopiaA[x]);
return 0;
}

2ª aula (3º exemplo)
// Vetor de Strings
#include <stdio.h>
int main(void) {
char animal[]={"kato"};
printf("Antes: %s\n",animal);
animal[0]='G';
printf("Depois: %s\n",animal);
}

2ª aula (4º exemplo)
// Mudança de Valores de Posição
#include <stdio.h>
int main(void) {
int numeros[]={10,65,49,80,20};
int x, temp;
puts("Início");
for(x=0;x<5;x++)
printf("%d\n",numeros[x]);
temp = numeros[4];
numeros[4] = numeros[0];
numeros[0] = temp;
puts("\nDepois da Troca:");
for(x=0;x<5;x++)
printf("%d\n",numeros[x]);
return 0;
}

2ª aula (5º exemplo)
// Incrementando Caracteres de uma string. Funções
#include <stdio.h>
void incrementa(char a)
{
a++;
putchar(a);
}
int main(void) {
char texto[]="Qdm`m "; // a-- + outro nome se quiser alterar
int x;
for(x=0;x<6;x++)
incrementa(texto[x]);
putchar('\n');
puts("O vetor nao foi alterado neste programa,");
for(x=0;x<6;x++)
printf("%c",texto[x]);
putchar('\n');
return 0;
}

2ª aula (7º exemplo)
// Jogo da Velha (matriz)
#include <stdio.h>
int main(void) {
char velha[3][3];
int x,y;
// Cria tabuleiro
for(x=0;x<3;x++)
for(y=0;y<3;y++)
velha[x][y]= '.';
velha[1][1]= 'O';
velha[2][2]= 'X';
velha[0][0]= 'O';
velha[0][1]= 'X';
velha[1][0]= 'O';
velha[2][0]= 'X';
velha[1][2]= 'O';
// Escrevo na tela
puts("--== Jogo da Velha ==--");
for(x=0;x<3;x++)
{
for(y=0;y<3;y++)
printf(" %c ",velha[x][y]);
putchar('\n');
}
return 0;
}

3ª aula (1º exemplo)
// Structs - Estruturas definidas pelo usuário.
#include <stdio.h>
#include <string.h>
struct pessoa{
char nome[32];
int idade;
float salario;
};
struct pessoa leEstrutura(void);
void mostraEstrutura(struct pessoa p);
int main(void) {
mostraEstrutura(leEstrutura());
return 0;
}
struct pessoa leEstrutura(void){
struct pessoa paulo;
strcpy(paulo.nome, "Paulo Andrade");
paulo.idade = 52;
paulo.salario = 100000.0;
return(paulo);
}
void mostraEstrutura(struct pessoa p){
printf("O professor %s tem %d anos\n",
p.nome,
p.idade);
printf("Seu salário é de %.2f\n",p.salario);
}

3ª aula (2º exemplo)
// Union e Struct
#include <stdio.h>
#include <math.h>
union unionPessoa{
char nome[32];
char nome2[32];
int idade;
float salario;
} uPessoa;
struct structPessoa{
char nome[32];
char nome2[32];
int idade;
float salario;
} sPessoa;
int main(void){
float p;
printf("O tamanho da union é %d bytes\n", sizeof(uPessoa));
printf("O tamanho da struct é %d bytes\n", sizeof(sPessoa));
return 0;
}

3ª aula (3º exemplo)
// Vetor de Struct
#include <stdio.h>
#include <string.h>
int main(void){
struct clima{
char dia[10];
float temp;
};
struct clima semana[7];
int x;
strcpy(semana[0].dia, "Domingo");
semana[0].temp = 27.6;
strcpy(semana[1].dia, "Segunda");
semana[1].temp = 28.6;
strcpy(semana[2].dia, "Terça");
semana[2].temp = 24.6;
strcpy(semana[3].dia, "Quarta");
semana[3].temp = 25.6;
strcpy(semana[4].dia, "Quinta");
semana[4].temp = 27.4;
strcpy(semana[5].dia, "Sexta");
semana[5].temp = 29.6;
strcpy(semana[6].dia, "Sábado");
semana[6].temp = 30.2;
puts("Previsão do tempo da semana:");
for(x=0;x<7;x++)
printf("%10s será de %.1f celsius\n", semana[x].dia, semana[x].temp);
return 0;
}

4ª aula (1º exemplo)
#include <stdio.h> // Ponteiros
int main(void) {
int a;
int *p;
int *b;
a = 2022;
p = &a;
*p = 2024;
b = &*p;
*b = 2028;
a = 2030;
printf("\nO conteúdo de a é %d\n",a);
printf("O tamanho de a é %d\n",sizeof(a));
printf("O end de Memória de a é %p\n\n",&a);
printf("O conteúdo de p é %p\n",p);
printf("O tamanho de p é %d\n",sizeof(p));
printf("O conteúdo apontado por p é %d\n",*p);
return 0;
}

4ª aula (2º exemplo)
#include <stdio.h> // Operações sobre ponteiros
int main(void) {
int a = 52364789326478;
int *p;
p = &a;
printf("\nO conteúdo de a é %d\n",a);
printf("O conteúdo de p é %p\n",p);
printf("O conteúdo de p é %p\n",p+1);
return 0;
}

4ª aula (3º exemplo)
#include <stdio.h> // Vetores e Ponteiros
int main(void) {
int a[5] = {2,4,6,8,10};
char t[] = "Paulo";
int *p;
char *pt;
p = a;
pt = t;
printf("O conteúdo de pt é %p\n",pt);
printf("O conteúdo de pt é %p\n",pt+1);
return 0;
}

4ª aula (4º exemplo)
#include <stdio.h> // Char
int main(void) {
int a[5] = {2,4,6,8,10};
char t[] = "Paulo";
int *p;
char *pt;
p = a;
pt = t;
printf("O conteúdo de pt é %p\n",pt);
printf("O conteúdo de pt é %p\n",pt+1);
printf("O conteúdo de pt é %c\n",*pt);
printf("O conteúdo de pt é %c\n",*(pt+1));
printf("O conteúdo de pt é %c\n",*(pt+2));
printf("O conteúdo de pt é %c\n",*(pt+3));
printf("O conteúdo de pt é %c\n",*(pt+4));
printf("O conteúdo de pt é %c\n",*(pt+5));
return 0;
}

4ª aula (5º exemplo)
#include <stdio.h> // Ponteiros de tipos diferentes
int main(void) {
char t[] = "Paulo";
short *pt;
pt = t;
printf("O conteúdo de pt é %p\n",pt);
printf("O conteúdo de pt é %p\n",pt+1);
printf("O conteúdo de pt é %c\n",*pt);
printf("O conteúdo de pt é %c\n",*(pt+1));
printf("O conteúdo de pt é %c\n",*(pt+2));
printf("O conteúdo de pt é %c\n",*(pt+3));
printf("O conteúdo de pt é %c\n",*(pt+4));
printf("O conteúdo de pt é %c\n",*(pt+5));
return 0;
}

4ª aula (6º exemplo)
#include <stdio.h> // Tamanho de Vetor
int main(void) {
char t[] = "Paulo Andrade";
short *pt;
pt = t;
printf("\nO conteúdo de pt é %d\n",sizeof(t));
return 0;
}

4ª aula (7º exemplo)
#include <stdio.h> // Alocação de Memória
int main(void) {
char t[] = "Paulo Andrade";
short *pt;
pt = t;
printf("\nO conteúdo de pt é %d\n",sizeof(t));
return 0;
}

5ª aula (1º exemplo)
#include <stdio.h> // Variáveis do tipo Static
int inc() {
static int x = 0;
x++;
return x;
}
int main(void) {
static int x = 0;
printf("%d\n", inc());
printf("%d\n", inc());
printf("%d\n", inc());
printf("%d\n", inc());
printf("%d\n", inc());
printf("%d\n", inc());
printf("%d\n", x);
return 0;
}

5ª aula (2º exemplo)
#include <stdio.h> // Passagem de Endereço de Memória como Parâmetro
void dobra(int *a) {
*a += *a;
}
int main(void) {
int b = 2;
printf("O valor de B antes é: %d\n", b);
dobra(&b);
printf("O valor de B depois é: %d\n", b);
return 0;
}

5ª aula (3º exemplo)
#include <stdio.h> // Arreios e Ponteiros
int main(void) {
char *reitor[4] = {"Marinho", "Arlindo","Cadu","Bia"};
char *temp;
int x;
temp = reitor[1];
reitor[1]=reitor[2];
reitor[2]=temp;
for(x=0;x<4;x++)
//printf("%s\n",reitor[x]);
//printf("%s\n",*(reitor+x)); //imprimindo os arreios completos
printf("%c\n", *(*(reitor+x)+1)); //selecionando caracteres do arreio
return 0;
}

5ª aula (4º exemplo)
#include <stdio.h> // Passagem de Variável do tipo Ponteiro como Parâmetro
void dobra(int *a) {
*a += *a;
}
int main(void) {
int *c, b;
b = 25;
c = &b;
printf("O valor de B antes é: %d\n", *c);
dobra(c);
printf("O valor de B depois é: %d\n", *c);
return 0;
}

5ª aula (5º exemplo)
#include <stdio.h> // Passagem de múltiplos Tipos de Parâmetros
void tres(float a, float *b, float *c) {
*b = a/3.0;
*c = a/7.0;
}
int main(void) {
float x, y;
tres(20.0,&x,&y);
printf("20/3 = %.1f\n", x);
printf("20/7 = %.1f\n", y);
return 0;
}

5ª aula (6º exemplo)
#include <stdio.h> // Exemplo de Vetor servindo como Ponteiro
void mudar(char s[])
{
s[1] = 'a';
}
int main(void) {
char pet[]="goto";
puts(pet);
mudar(pet);
puts(pet);
return 0;
}

5ª aula (7º exemplo)
#include <stdio.h> // moral da estoria s[] = *s
void mudar(char *s)
{
*(s+1) = 'a';
}
int main(void) {
char pet[]="goto";
puts(pet);
mudar(pet);
puts(pet);
return 0;
}

6ª aula (1º exemplo)
#include <stdio.h> // Função Recursiva
void recursiva(int a) {
a++;
if (a > 10)
return;
recursiva(a);
printf("%d\n",a);
//recursiva(a);
}
int main(void) {
recursiva(0);
return 0;
}

6ª aula (2º exemplo)
#include <stdio.h> // Função Recursiva (2º Exemplo)
void recursiva(int v) {
int a;
for(a=1;a<v;a++)
putchar('-');
puts("->Empilhar!");
if(v==10)
return;
recursiva(v+1);
for(a=1;a<v;a++)
putchar('-');
puts("->Desempilhar!");
}
int main(void) {
recursiva(1);
return 0;
}

6ª aula (3º exemplo)
#include <stdio.h> // Fatorial (Recursividade)
int fatorial(int f)
{
if (f==1)
return(1);
//print("%d ", f);
return(f*fatorial(f-1));
}
int main(void) {
int a, b;
printf("Informe um número positivo:\n");
scanf("%d",&a);
if(a<1)
{
printf("O fatorial não pode ser menor que 1 \n");
return(1);
}
b = fatorial(a);
//printf("\n");
printf("O fatorial de %d é %d\n", a, b);
return 0;
}

7ª aula (1º exemplo)
#include <stdio.h> // Lista
int main(void) {
int a[6]={10,20,30,50,60,0};
int x, y, z;
z = 40;
for(x=0;x<6;x++)
printf("%d\n", a[x]);
puts("----------------");
a[5]=a[4];
a[4]=a[3];
a[3]=z;
for(x=0;x<6;x++)
printf("%d\n",a[x]);
return 0;
}

7ª aula (2º exemplo)
#include <stdio.h> // Vetor - Acesso do Endereço de Memória
int main(void) {
int a[6] = {10, 20, 30, 50, 60, 0};
int x, y, z, *p;
p = a;
// z = 40;
for (x = 0; x < 6; x++) {
printf("%d --- %p\n", *p, p);
p++;
}
/* puts("----------------");
a[5]=a[4];
a[4]=a[3];
a[3]=z;
for(x=0;x<6;x++)
printf("%d\n",a[x]);
return 0;*/
}

Jogo (mathWarrior)
#include <stdio.h> /*Bibliotecas*/
#include <stdlib.h>
#include <time.h>
int main(void) {
int cont; /*Variáveis*/
int result;
char nome[1000];
printf("\n _ _ _ _ _ _ \n _____ __| |_| "
"|_| | | | __ ___ ___|_|___ ___ \n| ||. | _| | | | ||. | _| "
"_| | . | _|\n|_|_|_|___| | |_|_|_____|___|_| |_| |_|___|_| \n "
" |__| \n"); /*Título do Jogo*/
printf("\n Pressione qualquer tecla para jogar\n (ou 0 "
"para sair)\n\n");
scanf("%d", &cont);
if (cont != 0) {
printf("\n Here we go!!\n\n");
printf("\n Instruções \n\n O jogo consiste de uma "
"mecãnica simples, você\n é um guerreiro e a sua amada foi raptada "
"pelo\n Escabroso Rei dos Quadrados. Para tê-la de volta\n você "
"terá que derrotar os monstros que permeiam \n o reino, os "
"cavaleiros reais e o próprio Rei □.\n\n"); /*Instruções*/
printf("\n Diga o seu nome para continuar o jogo\n\n"); /*Nome*/
if (scanf("%999s", nome)) {
printf("\n%s estava entrando pelos portões do reino, quando\nse deparou "
"com um goblin, que disse-lhe o seguinte:\n\nGoblin - Vejo que um "
"forasteiro está invadindo minha",
nome);
sleep(4);
printf("\nmorada, EU NÃO DEIXAREI BARATO, resolva essa questão\nou irei "
"lhe matar IMPIEDOSAMENTE: x = 2x, x = x e\nx = x/2... qual é "
"então o valor de x? ");
scanf("%d", &result); /*Primeira Questão*/
if (result == 0) {
printf("\n*parabéns, você acertou a questão e matou o goblin*");
printf("\n\n%s continuou então sua jornada pelo reino, e "
"logo\npercebeu que ela era maior do que imaginava, "
"então,\nquando menos esperava, outro monstro decidiu "
"prestar\nvisita ao protagonista, dessa vez um gato:\n\nGato - "
"Carne nova? Você não me parece familiar, eu",
nome);
sleep(9);
printf("\ninvado mentes sabia?? (%s começa a sentir sua\nmente "
"conturbada) se não conseguir resolver minha\ncharada, eu irei "
"confundir sua mente, e levarei-no\na mais absoluta loucura: Há "
"um pato entre dois patos,\num pato atrás de um pato e um pato "
"na frente de\noutro pato. De quantos patos estamos falando? ",
nome);
scanf("%d", &result); /*Segunda Questão*/
if (result == 3) {
printf("\n*parabéns, você resolveu a charada e passou pelo gato*");
printf("\n\nO nosso protagonista, %s, já estava vendo os portões\nda "
"fortaleza real de longe, todavia, quando se\naproximava dela "
"tropeçou numa pedra e caiu num\nburaco... levantando, um "
"morcego disse-lhe:\n\nMorcego - Bem, vejo que mais um caiu "
"na minha armadilha,",
nome);
sleep(9);
printf("\neu até posso voar contigo pra fora desse buraco, mas "
"pra\nisso o cavalheiro terá que responder uma questão "
"minha:\nSabendo-se que a = 3 e b = 6, o resultado da "
"expressão\nb(a-b) + (b+a)(b-a) -a(b-a) + (b-a)² é? ");
scanf("%d", &result); /*Terceira Questão*/
if (result == 9) {
printf("\n*parabéns, você acertou a questão e o morcego "
"voou\ncontigo para fora do buraco*");
printf("\n\nFinalmente, entrando pelos portões reais, um "
"dos\ncavaleiros reais logo parou %s, era o Davi, "
"jovem\nnovo, de cabelos loiros e lisos, encantava "
"pela\nsua beleza e destreza com os números, Davi "
"logo\ndisse o seguinte:\n\nDavi- Eu tenho acompanhado sua "
"vinda, vejo os obstáculos",
nome);
sleep(12);
printf("\nque passou, as questões que resolveu, e admiro "
"você,\npor toda sua coragem, mas creio que não passará por "
"mim...\nresolva a minha questão, ou sucumbirá em minhas "
"mãos:\nEntrei num táxi onde antes haviam 8 passageiros. "
"Pouco\ntempo depois, 3 pessoas desceram e duas "
"entraram.\nQuantas pessoas há no táxi? ");
scanf("%d", &result); /*Quarta Questão*/
if (result == 9) {
printf("\n*parabéns, você acertou a questão e Davi, de forma "
"bem\ncavalheira, deixou que você prosseguisse em sua "
"jornada*");
printf("\n\n%s estava já muito cansado de todas batalhas "
"que\nenfrentou até aqui, porém ele não iria parar "
"agora,\nentão continuou trilhando seu caminho, até "
"chegar\nnas portas do aposento real, tendo agora que "
"enfrentar\nSalomão, o chefe da guarda pessoal do "
"rei.\n\nSalomão - Ora ora, o pequeno estrangeiro se "
"mostrou um",
nome);
sleep(12);
printf("\nguerreiro nato, me concederia a honra de lutar "
"contigo?\nBrincadeira, iremos batalhar você querendo ou "
"não...\nmas uma briga matemática, lógico, então me "
"responda:\nQual é o sucessor do dobro do antecessor do "
"sucessor\ndo triplo de 2? ");
scanf("%d", &result); /*Quinta Questão*/
if (result == 13) {
printf(
"\n*parábens, você acertou a questão e finalmente\nchegou "
"no escabroso, cabuloso, temeroso... Rei □*");
printf("\n\nA grande hora chegou, o maior dos matemáticos "
"está\ncom a sua amada, e você fará de tudo para "
"tirá-la\nde seu domínio.\n\nRei □ - %s, você não sabe "
"o quanto eu esperei por",
nome);
sleep(8);
printf("\nesse momento... suas últimas palavras?\n\n%s - Você "
"será o primeiro a perder a fala entre\nnós, agora DIGA "
"A SUA QUESTÃO.\n\nRei □ - Durante uma viagem choveu 5 "
"vezes.A chuva\ncaía pela manhã ou à tarde, nunca o dia "
"todo. Houve\n6 manhãs e 3 tardes sem chuvas. Quantos "
"dias durou\na viagem? ",
nome);
scanf("%d", &result); /*Última Questão*/
if (result == 7) {
char nomec = nome;
printf("\n*parábens, você derrotou o rei e reconquistou sua "
"amada*");
printf("\n\n%s - Finalmente eu libertei você, Amora, minha "
"amada!\n\nAmora - Eu tava aqui por opção própria :b",
nome);
printf("\n\n%s - É o quê? Por opção própria??\n\nAmora - É, "
"bobão, nenhum momento pedi pra você me "
"salvar...\n\n\nMoral da Estória - Não se meta onde "
"você não foi chamado.\n\n "
" Fim.",
nome);
printf("\n\n\nCréditos:\nRenan Carvalho\nFelipe "
"Moura\nGabriel Arantes");
} else { /*Casos onde o usuário erra a questão*/
printf("\n *você errou a questão e foi pro beleléu*\n\n");
printf("\n\n\nCréditos:\nRenan Carvalho\nFelipe "
"Moura\nGabriel Arantes");
return 0;
}
} else {
printf("\n *você errou a questão e foi pro beleléu*\n\n");
printf("\n\n\nCréditos:\nRenan Carvalho\nFelipe Moura\nGabriel "
"Arantes");
return 0;
}
} else {
printf("\n *você errou a questão e foi pro beleléu*\n\n");
printf("\n\n\nCréditos:\nRenan Carvalho\nFelipe Moura\nGabriel "
"Arantes");
return 0;
}
} else {
printf("\n *você errou a questão e foi pro beleléu*\n\n");
printf("\n\n\nCréditos:\nRenan Carvalho\nFelipe Moura\nGabriel "
"Arantes");
return 0;
}
} else {
printf("\n *você errou a questão e foi pro beleléu*\n\n");
printf(
"\n\n\nCréditos:\nRenan Carvalho\nFelipe Moura\nGabriel Arantes");
return 0;
}
} else {
printf("\n *você errou a questão e foi pro beleléu*\n\n");
printf(
"\n\n\nCréditos:\nRenan Carvalho\nFelipe Moura\nGabriel Arantes");
return 0;
}
} else {
return 0;
}
} else {
return 0;
}
}

Links: