Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №2 New1.doc
Скачиваний:
4
Добавлен:
17.08.2019
Размер:
100.86 Кб
Скачать

Символьные массивы

Для представления строк используются массивы переменных типа char. Например, следующее присваиваение

char text[] = ”This is a string.”;

приведёт к выделению 18 байт, т.к. каждая строка завершается нуль-символом, представляемый в программе как \0, эквивалентный числу 0.

Когда программа встречает в символьном массиве 0, она интерпретирует его как конец строки.

Задание №4. Определение действия символа \0 в символьном массиве

#include <vcl.h>

#include <iostream.h>

#include <conio.h>

int main(int argc, char* argv[])

{ char str[]="This is a string.";

cout << str << endl; //на экран выведется - This is a string.

str[7]='\0';

cout << str << endl; // на экран выведется - This is

getch();

return 0;

}

Функции для работы со строками

Наиболее часто используемые строки приведены в таблице 1.

Таблица 1. Функции для работы со строками.

Функция

Описание

strcat()

Добавляет строку в конец строки назначения

strcmp()

Сравнивает две строки

strcmpi()

Сравнивает две строки без учёта регистра

strcpy()

Копирует содержимое донной строки в другую

strstr()

Осуществляет поиск первого включения подстроки в строку

strlen()

Возвращает длину строки

strupr()

Преобразует все символы строки к верхнему регистру

sprintf()

Вывод форматированного текста

Задание №5. Пример использования некоторых функций для работы со строками.

#include <vcl.h>

#include <iostream.h>

#include <conio.h>

int main(int argc, char* argv[])

{ char buff[30];

// Копирование строковой константы в буфер”

strcpy(buff, “Это тект.”);

cout << buff << endl;

// Инициализация второго буфера

char buff2[]= “Вторая строка.”;

// Копирование этой строки в первый буфер

strcpy(buff, buff2);

cout << buff << endl;

getch();

}

Другая часто используемая при работе со строками функция - sprintf(). Эта функция позволяет получить форматированную строку, состоящую из текста и чисел.

Задание №6.

Написать программу для построения строки, сообщающей о результате.

#include <vcl.h>

#include <iostream.h>

#include <conio.h>

int main(int argc, char* argv[])

{ char buff[20];

int x = 10 + 20;

sprintf(buff,”The result is: %d”, x); // ”The result is: %d” - форматная строка

cout << buff;

getch();

return 0;

}

Символ %d указывает функции sprintf(), где необходимо вставить целое число. Функция может иметь переменное число вставляемых аргументов. Необходимо указать буфер и форматную строку, количество аргументов после форматной строки может быть любым. Для вывода вещественного (дробного) числа задаётся формат %f.

Задание №7. Пример использования sprintf() с тремя дополнительными аргументами:

#include <vcl.h>

#include <iostream.h>

#include <conio.h>

int main(int argc, char* argv[])

{ char buff[20];

float x = 20.1;

float y = 5.1;

sprintf(buff, "%f + %f =%f %f*%f =%f", x, y ,x + y ,x, y, x*y);

cout << buff;

getch();

return 0;

}

Условный оператор

Запись условного оператора

Условный оператор используется для проверки некоторого условия и последующего выполнения одного из блоков в зависимости от того, имеет ли результат проверки значение true (истина) или false (ложь). Есть несколько способов использовать условный оператор:

1. if ( cond_expr ) true_statement; //

Оператор if используется для проверки условия cond_expr и последующего выполнения блока кода - true_statement если это условие истинно.

Внимание !

- Не завершайте условное выражение точкой с запятой. Точка с запятой сама по себе обозначает пустой оператор и компилятор будет интерпретировать его как оператор, который нужно выполнить:

if (x==10); // Осторожно! Лишняя точка с запятой!

DoSomething(x);

Функция DoSomething(x) будет вызываться в любом случае, т. к. компилятор не считает её входящей в условный оператор!

- Для оператора равенство используются два знака =, а для оператора присваивания – один (=). Если в предыдущее примере по невнимательности написать условное выражение как:

if (x = 20) {

DoSomething(x);

}

То х получит значение 20, а поскольку эта операция пройдёт успешно, условное выражение примет значение true.

2. if ( cond_expr ) {

true_statements;

}

else {

false_statements;

}

3. if ( cond_expr_1 ) {

true_statements_1;

}

else if ( cond_expr_2 ) {

true _statements_2;

}

else {

false _statements;

}

Задание № 8. Написать программу проверки введённого с клавиатуры целого числа и форматного вывода. Если введенное число больше нуля – выдать сообщение “Positive number - ” и само число, если равно нулю - “Zero - ” и само число, если число меньше нуля - “Negative number - ” и само число

#include <vcl.h>

#include <iostream.h>

#include <conio.h>

int main(int argc, char* argv[])

{int x;

char buff[30];

cout << endl << "Enter the int number: ";

cin >> x;

if (x > 0) {sprintf(buff," Positive number: %d ", x);

cout << buff << endl;}

else if (x == 0) {sprintf(buff," Zero: %d ", x);

cout << buff << endl;}

else {sprintf(buff," Negative number: %d ", x);

cout << buff << endl;}

getch();

return 0;

}