Академический Документы
Профессиональный Документы
Культура Документы
Comprimento e endereo
O comprimento (= length) de uma string o seu nmero de
caracteres, sem contar o caractere nulo final.
O endereo de uma string o endereo do seu primeiro caractere, da
mesma forma que o endereo de um vetor o endereo de seu
primeiro elemento.
Em discusses informais, usual confundir uma string com o seu
endereo. Assim, a expresso considere a string s deve ser entendida
comoconsidere a string cujo endereo s.
Strings constantes
Para especificar uma string constante, basta embrulhar uma
sequncia de caracteres num par de aspas duplas. O caractere nulo
Exerccios 1
1. Qual o efeito do seguinte fragmento de cdigo?
2. char *s;
3. s = "ABC";
4. printf( "%s\n", s);
Exerccios 2
1. Qual a diferena entre "A" e 'A'?
2. Qual a diferena entre "mno" e "m\no"? Qual a diferena
entre "MNOP" e "MN0P"? Qual a diferena entre "MN\0P" e "MN0P"?
3. Escreva uma funo que receba um caractere c e devolva uma string cujo nico
caractere c.
4. Escreva uma funo que receba uma string e imprima uma tabela com o
nmero de ocorrncias de cada caractere na string. Escreva um programa para
testar a funo.
5. PALNDROMOS. Escreva uma funo que decida se uma string ou no um
palndromo (ou seja, se o inverso da string igual a ela). Escreva um programa
para testar a funo.
6. Escreva uma funo que receba strings s e t e decida se s segmento de t (ou
seja, se s pode ser obtida apagando um nmero arbitrrio de elementos do
incio de t e um nmero arbitrrio de elementos no fim de t). Escreva um
programa que use a funo para contar o nmero de ocorrncias de uma
string s em uma string t.
7. Escreva uma funo que receba uma string e substitua cada segmento de dois
ou mais espaos em branco por um s espao em branco.
8. Escreva uma funo que receba uma string de 0s e 1s, interprete essa string
como um nmero natural em notao binria e devolva o valor desse nmero.
A biblioteca string
A biblioteca padro string da linguagem C contm vrias funes
de manipulao de strings. Para usar essas funes, o seu programa
deve incluir
#include <string.h>
int k;
return k;
int i;
s[i] = '\0';
Exerccios 3
1. Qual a diferena entre as expresses strcpy( s, t) e s = t?
2. Qual a diferena entre as expresses if (strcmp( s, t) < 0) e if (s <
t)?
3. Discuta as diferenas entre os trs fragmentos de cdigo a seguir:
4. char a[8], b[8];
5. strcpy( a, "abacate");
6. strcpy( b, "banana");
7. char *a, *b;
8. a = malloc( 8); strcpy( a, "abacate");
9. b = malloc( 8); strcpy( b, "banana");
10.
11.
a = "abacate";
12.
b = "banana";
14.
15.
strcpy( a, "abacate");
16.
strcpy( b, "banana");
17.
if (a < b)
18.
19.
else
20.
23.
a = "abacate";
24.
b = "banana";
25.
if (a < b)
26.
27.
else
28.
31.
a = "abacate";
32.
b = "amora";
33.
34.
35.
else
36.
37. Escreva uma funo que receba uma string s e um inteiro no negativo i e
devolva o (i-1)-simo caractere de s, ou seja, o caractere s[i].
38. Escreva uma funo que receba uma string s e inteiros no negativos i e j e
devolva o segmento s[i..j]. Sua funo no deve alocar novo espao e pode
destruir a string s que recebeu.
Matrizes e Vetores
Introduo
Declarao de Matrizes
int Vetor[5];
// declara um vetor de 5
posies
int Matriz[5][3]; // declara uma matriz de 5
linhas e 3 colunas
for(i=0;
Vetor[i]
#define TAM_MAX 10
double VetReais[TAM_MAX];
for(i=0; i<TAM_MAX; i++)
VetReais[i] = TAM_MAX - i;
5,4,3,2,1 no vetor
// coloca
// Copia os dados
// para outro
// Copia os dados do
dados
dados
{
int Notas[TAM_MAX];
ImprimeVet(TAM_MAX, Notas); // Passa o vetor
'Notas' como
// parmetro
}
A passagem dos elementos de um vetor como parmetro idntica
passagem de uma varivel. Ou seja, quando a passagem for por valor usase vet[i] e quando for por referncia usa-se&vet[i].
void Imprime (int N) // funo com um parmetro
por valor
{
printf("%d", N);
}
void Incr (int *N) // funo com um parmetro por
referncia
{
*N = *N + 1;
}
void Incr (int *N)
{
int i;
for (i=0; i< Tam; i++)
{
Incr(&Vet[i]); // Note que preciso colocar o
'&' antes
// de Vet[i] pois a funo
'Incr' espera um
// parmetro por
REFERNCIA
Imprime(Vet[i]); // Note que NO se deve colocar
nada antes
// de Vet[i] pois a
funo 'Imprime' espera um
// parmetro por VALOR
}
}
MatrizB[NLIN][NCOL],
int MatrizSOMA[NLIN][NCOL])
{
}
Cria uma rotina que multiplique duas matrizes
void MultMatrizes(int Colunas, int linhas,
int MatrizA[NLIN][NCOL], int
MatrizB[NLIN][NCOL],
int MatrizMULT[NLIN][NCOL])
{
}
Exerccios
1. Dada uma seqncia de n nmeros, imprimi-la na ordem inversa da
leitura.
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#define MAX 100
int main() {
int n, i, v[MAX];
printf("Digite o comprimento da seqncia: ");
scanf("%i", &n);
printf("Digite uma seqncia com %d nmeros inteiros: ", n);
for (i = 0; i < n; i++)
scanf("%i", &v[i]);
for (i = n-1; i >= 0; i--)
printf("%d ", v[i]);
printf("\n");
system(pause);
}