Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Microsoft_Visual_C++..doc
Скачиваний:
18
Добавлен:
29.10.2018
Размер:
691.2 Кб
Скачать

Пример 8 Сравнение строк

Напишем программу, запрашивающую пароль.

#include "stdafx.h"

#include <stdio.h>

#include <conio.h>

#include <string.h>

using namespace System;

int main(array<System::String ^> ^args)

{

char name[50];

char vvod[10], passw[]="d45gtr";

printf("Введите имя\n");

gets(name);

printf("Введите, %s, пароль\n", name);

gets(vvod);

if (strstr(vvod,passw))

printf ("Пароль принят");

else printf("Пароль не принят");

getch();

return 0;

}

Тестирование:

В программе используется функция gets()– функция ввода строки и функция strstr(vvod,passw), которая сравнивает эталонный пароль d45gtr, содержащийся в массиве passw[] с паролем, введенным пользователем.

Задание 8

Выполните программу примера 12. Внесите в исходный код определение длины введенного пароля. Измените программу так, чтобы неверный ввод пароля мог быть выполнен не более трех раз и заканчивался сообщением "Превышено допустимое число ввода".

Задание 9

Проанализируйте коды следующих программ и определите результаты их выполнения.

#include "stdafx.h"

#include <stdio.h>

#include <conio.h>

#include <string.h>

using namespace System;

int main(array<System::String ^> ^args)

{

char a[25],b[5];

gets(a);

gets(b);

printf("%d\n",strcmp("a","a"));

printf("%d\n",strcmp("a","b"));

printf("%d\n",strcmp("b","a"));

getch();

return 0;

}

Тестирование:

#include "stdafx.h"

#include <stdio.h>

#include <conio.h>

#include <string.h>

using namespace System;

int main(array<System::String ^> ^args)

{

char a[25],b[5];

gets(a);

gets(b);

strcat(a,b);

printf ("new string a=");

puts(a);

printf("string b=");

puts(b);

getch();

return 0;

}

Тестирование:

5 Указатели и операции над указателями

Для доступа к данным процессор использует адреса. И когда компилятор обрабатывает оператор определения переменной, например,

int p1=10;

он выделяет память в соответствии с типом (int) и инициализирует ее указанным значением (10). Все обращения в программе к переменной по ее имени (p1) заменяются компилятором на адрес области памяти, в которой хранится значение переменной.

Для хранения адресов областей памяти предназначены указатели.

Формат объявления указателя на объект:

Тип *имя;

Пример 9 Описание указателей

int *p1;

Переменная p1представляет собой указатель на тип int.

Для работы с указателями в С используются две операции: * и ?.

В результате выполнения операции & определяется адрес ячейки памяти, которая соответствует переменной. Если b – имя переменной, то &b – ее адрес.

Например, если задать указателю имя a, то оператор

а=&b;

присваивает адрес b переменной а. Различие между двумя формами записи: а и &b, заключается в том, что а – это переменная, в то время как &b – константа. Предположим, что переменная b хранится в ячейке памяти под номером 2000, а ее значение равно 37. Тогда переменной а будет присвоено значение 2000.

Вторая операция над указателями * – операция косвенной адресации, выполняет действие, обратное по отношению к &.

Оператор а=*b; может быть прочитан так: «а получает значение переменной, расположенной по адресу b».

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]