Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Указатели и массивы в языке С тесно связаны между собой. Имя массива является указателем на его первый элемент, т.е. для массива int v [10] v и v [0] имеют одинаковые значения, т.к. адрес первого (с индексом 0) элемента массива - это адрес начала последовательно расположенных элементов массива. Рассмотрим обращение к элементам массива на примере. Пусть объявлены - массив из 100 объектов типа float и указатель на объект типа float:
float p[100];
float *q;
int i;
если выполнить операцию q=p; то обращения к элементу массива p: p[i], *(q+i) и *(p+i) эквивалентны.
Таким образом, для любых указателей можно использовать две эквивалентные формы выражений для доступа к элементам массива: q[i] и *(q+i). Первая форма удобнее для читаемости текста, но вторая обычно эффективнее по быстродействию программы.
Очевидна эквивалентность выражений
&q[0] <-> &(*q) <-> q
*q <-> q[0]
Пример 1: Упорядочить по алфавиту массив строк (не более 20) длиной не более 10 символов в каждой.
#include<conio.h>
#include<stdio.h>
#include<string.h>
void main()
{
char s[20][10],r[10];
int i,j,n;
clrscr();
puts(" Введите количество слов ";
scanf(“%d”,&n);
for(i=0;i<n;i++)
scanf("%s",&s[i]);
for(i=0;i<(n-1);i++)
for(j=(i+1);j<n;j++)
if(strcmp(s[i],s[j])>0)
{
strcpy(r,s[i]);
strcpy(s[i],s[j]);
strcpy(s[j],r);
}
for(i=0;i<n;i++)
printf("\n %s",s[i]);
getch();
}
Пример 2: Проверить, является ли введенная строка (не более 80 символов) палиндромом (справа налево читается так же, как и слева направо).
#include <stdio.h>
#include <string.h>
#include <conio.h>
void main(void)
{
char s[80],s1[80];
int i, k;
clrscr();
puts(" Введите исходную строку (не более 80 символов) ");
gets(s);
k=strlen(s);
puts(" Результаты работы программы ");
for (i=0; i<k; i++)
printf("%c",s1[i]=s[k-i-1]); // Переворачиваем строку s
s1[k]=’\0’; // Устанавливаем конец строки
printf(“ %s\n”,strcpy(s1,s)? ” YES - Pаlindrom!”:” NO!”)
printf("\n Press any key...");
getch();
}
Дата публикования: 2015-09-17; Прочитано: 202 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!