Содержание
- 2. «Ходовые» типы данных
- 3. Символы Скольки-значный код потребуется для представления одного символа текста? A…Z a…z 0…9 "!?.,:;№_-+*/%\= (){}[]@#$^&~|’ – это
- 4. Кодировка Windows CP1251 ASCII
- 5. ASCII (128..255) CP1251 (128..255) Вставка символа в Microsoft Word Unicode 128..65535
- 6. Фрагменты символов Unicode
- 7. // объявление и инициализация char a, b; a = '7'; printf("%c", a); b = (char)55; //
- 8. Строки в C++ char s[6]; s[0] = 72; s[1] = 101; s[2] = 108; s[3] =
- 9. Строки в C++ – нуль-терминированные // эксперимент! char s[] = "Hello, World!"; printf("Вариант 1: %s\n", s);
- 10. Перевод в шестнадцатеричную систему счисления printf("Введите положительное целое: "); int n; scanf("%d", &n); printf("Шестнадцатеричная запись:\n"); do
- 11. Подсчёт слов, начинающихся с заглавной буквы printf("Input text: "); char s[2000]; scanf("%[^\n]s", s); int count =
- 12. Использование string.h printf("Guess my name? "); char name[50]; scanf("%s", name); // конвертирование всех букв в нижний
- 13. Использование string.h // Задача: в строке, содержащей путь и имя файла, // изменить расширение в имени
- 15. Скачать презентацию
«Ходовые» типы данных
«Ходовые» типы данных
Символы
Скольки-значный код потребуется для представления одного символа текста?
A…Z a…z 0…9 "!?.,:;№_-+*/%\=<>(){}[]@#$^&~|’
Символы
Скольки-значный код потребуется для представления одного символа текста?
A…Z a…z 0…9 "!?.,:;№_-+*/%\=<>(){}[]@#$^&~|’
6 бит = 64 значения 7 бит = 128 значений 8 бит = 256 значений
Изначальная идея: один символ – один байт. Коды 0…127 – основной набор символов, коды 128…255 – для национального алфавита.
ASCII – базовая 7-битовая кодировка для латинского алфавита и основных символов. Кириллические кодировки (CP866, Windows CP1251, KOI8-R и другие) отличаются только размещением русских букв в диапазоне кодов 128…255.
Кодировка Windows CP1251
ASCII
Кодировка Windows CP1251
ASCII
ASCII (128..255)
CP1251 (128..255)
Вставка символа в Microsoft Word
Unicode 128..65535
ASCII (128..255)
CP1251 (128..255)
Вставка символа в Microsoft Word
Unicode 128..65535
Фрагменты символов Unicode
Фрагменты символов Unicode
// объявление и инициализация
char a, b;
a = '7';
printf("%c", a);
b = (char)55;
// объявление и инициализация
char a, b;
a = '7';
printf("%c", a);
b = (char)55;
printf("%c", b);
Символы в C++
// посмотреть кодировку
for (int i = 0; i < 256; i++)
printf("%c", i );
printf("Code page #866:\n");
setlocale(LC_ALL, ".866"); // по умолчанию, можно не указывать
for (int i = 128; i < 256; i++)
printf("%c", i );
printf("\n\nCode page #1251:\n");
setlocale(LC_ALL, ".1251"); // или setlocale(LC_ALL, "Russian")
for (int i = 128; i < 256; i++)
printf("%c", i );
Строки в C++
char s[6];
s[0] = 72;
s[1] = 101;
s[2] = 108;
s[3] =
Строки в C++
char s[6];
s[0] = 72;
s[1] = 101;
s[2] = 108;
s[3] =
s[4] = 111;
s[5] = 0;
char s[] = "Hello";
char s[6];
s[0] = 'H';
s[1] = 'e';
s[2] = 'l';
s[3] = 'l';
s[4] = 'o';
s[5] = 0;
for (int i = 0; i < 5; i++)
printf("%d", s[i] );
for (int i = 0; i < 5; i++)
printf("%c", s[i] );
printf("%s", s );
printf("What's your name? ");
char x[20];
scanf("%s", x);
printf("Hi, %s!", x);
Строки в C++ – нуль-терминированные
// эксперимент!
char s[] = "Hello, World!";
printf("Вариант 1:
Строки в C++ – нуль-терминированные
// эксперимент!
char s[] = "Hello, World!";
printf("Вариант 1:
s[5] = 0;
printf("Вариант 2: %s\n", s);
s[5] = '!';
printf("Вариант 3: %s\n", s);
// строка из двух символов
char a[3]; a[0]='H'; a[1]='i'; a[2]=0;
// строка из одного символа
char b[2]; b[0]='!'; b[1]=0;
// пустая строка (без текста)
char c[1]; c[0]=0;
// строка из двух символов
char a[] = "Hi";
// строка из одного символа
char b[] = "!";
// пустая строка (без текста)
char c[] = "";
// найти длину строки
printf("Введите текст: ");
char t[2000];
scanf("%s", t);
int i = 0;
for(;; i++)
if (t[i]==0) break;
printf("В тексте %d символов!", i);
// найти длину строки
printf("Введите текст: ");
char t[2000];
scanf("%[^\n]s", t);
int i = 0;
for(;; i++)
if (t[i]==0) break;
printf("В тексте %d символов!", i);
// найти длину строки
printf("Введите текст: ");
char t[2000];
scanf("%[^\n]s", t);
printf("В тексте %d символов!", strlen(t));
#include // для продвинутых: создание своей функции
int mystrlen(char s[])
{
int i = 0;
for(;; i++)
if (s[i]==0) break;
return i;
}
void main()
{
printf("Введите текст: ");
char t[2000];
scanf("%1999[^\n]s", t);
printf("В тексте %d символов!", mystrlen(t));
}
Перевод в шестнадцатеричную систему счисления
printf("Введите положительное целое: ");
int n;
scanf("%d", &n);
printf("Шестнадцатеричная запись:\n");
do
Перевод в шестнадцатеричную систему счисления
printf("Введите положительное целое: ");
int n;
scanf("%d", &n);
printf("Шестнадцатеричная запись:\n");
do
int x = n % 16;
n = n / 16;
printf("%d\n", x );
} while (n>0);
printf("Введите положительное целое: ");
int n;
scanf("%d", &n);
printf("Шестнадцатеричная запись:\n");
do {
int x = n % 16;
n = n / 16;
char z;
if( x<10 )
z = '0' + x;
else
z = 'A' + x - 10;
printf("%c\n", z );
} while (n>0);
char s[8];
int i=0;
do {
int x = n % 16;
n = n / 16;
char z;
if( x<10 )
z = '0' + x;
else
z = 'A' + x - 10;
s[i] = z;
i++;
} while (n>0);
// после цикла i - количество полученных цифр
// переворачиваем содержимое строки
for(int j=0; j{
char c = s[j];
s[j]= s[i-j-1];
s[i-j-1] = c;
}
s[i]=0; // терминируем строку и выводим
printf("%s", s);
Подсчёт слов, начинающихся с заглавной буквы
printf("Input text: ");
char s[2000];
scanf("%[^\n]s", s);
int count
Подсчёт слов, начинающихся с заглавной буквы
printf("Input text: ");
char s[2000];
scanf("%[^\n]s", s);
int count
for(int i=0; i
count++;
printf("There're %d words that start by a capital letter\n", count);
printf("Input text: "); // оптимальное решение:
char s[2000];
scanf("%[^\n]s", s);
int count;
// с первой буквой разбираемся отдельно
if ( s[0]>='A' && s[0]<='Z' )
count = 1;
else
count = 0;
for(int i=0; i
count++;
printf("There're %d words that start by a capital letter\n", count);
// заранее добавить перед текстом лишний пробел
printf("Input text: ");
char s[2000] = " ";
scanf("%[^\n]s", s+1);
int count = 0;
for(int i=0; i
count++;
printf("There're %d words that start by a capital letter\n", count);
Использование string.h
printf("Guess my name? ");
char name[50];
scanf("%s", name);
// конвертирование всех букв в
Использование string.h
printf("Guess my name? ");
char name[50];
scanf("%s", name);
// конвертирование всех букв в
// например, "KaTe" -> "kate"
strlwr(name);
// проверка на равенство
if( strcmp(name, "stacy")==0 )
printf("Correct!!!");
else
printf("Not exactly...");
printf("Login: ");
char login[200];
scanf("%s", login);
// проверка на наличие подстроки
if( strstr(login, "putin")!=NULL )
{
printf("Unknown error. Terminating...");
return;
}
...
#include
Использование string.h
// Задача: в строке, содержащей путь и имя файла,
//
Использование string.h
// Задача: в строке, содержащей путь и имя файла,
//
printf("Введите имя файла: ");
char filename[200];
scanf("%[^\n]s", filename);
int n = strlen(filename);
printf("Длина строки: %d\n", n );
// отсечение расширения вручную
int j=-1;
for(int i=n-1; i>=0; i--)
if (filename[i]=='.')
j = i;
if( j>-1 )
filename[j] = 0;
printf("Имя файла без расширения: %s\n", filename);
strcat(filename, ".txt"); // приклеиваем новое расширение
printf("Имя файла с новым расширением: %s\n", filename);
// отсечение расширения с помощью strrchr
char *p;
// поиск первой точки при просмотре справа-налево
p = strrchr(filename, '.');
if( p!=NULL )
*p = 0; // затираем точку кодом конца строки
#include