Символьные массивы
Для представления строк используются массивы переменных типа 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;
}