Ввод и вывод русских символов
При выводе на консоль русские символы могут отображаться некорректно. Попробуйте запустить следующий пример:
cout<<"Столовая наполнилась неприятным"<<endl; cout<<"синим сигарным дымом. Пес дремал,"<<endl; cout<<"уложив голову на передние лапы"<<endl;
Если текст на экране отобразился нормально, то дальше можно не читать, однако, если вы увидели нечто подобное:
то вам следует изучить данный раздел, чтобы научиться отображать русские символы корректно. Первый, наиболее простой способ, заключается в использовании так называемого транслита. В этом случае можно заменять русские буквы английскими подобно тому, как часто пишут в СМС. Например, вместо фразы «Столовая наполнилась дымом» можно написать «Stolovaya napolnilas’ dymom». Однако подобный способ – это насилие над русским языком, поэтому намного лучше – научиться работать с русскими буквами. Для корректного отображения русских символов попробуйте добавить в программу следующее:
#include <iostream> using namespace std; #include <locale.h>
int main() { setlocale(LC_ALL, "Russian"); cout<<"Столовая наполнилась неприятным"<<endl; cout<<"синим сигарным дымом. Пес дремал,"<<endl; cout<<"уложив голову на передние лапы"<<endl; return 0; }
После этого текст должен отобразиться так, как требуется:
Однако это еще не все. Рассмотрим пример:
setlocale(LC_ALL, "Russian"); char name[20]; cout << "Введите свое имя:"; cin >> name; cout << "Ваше имя:"; cout << name << endl;
Введенное имя выведется некорректно:
Для устранения проблемы можно использовать второй способ:
#include <iostream> using namespace std; #include <windows.h>
int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); char name[20]; char name[20]; cout << "Введите свое имя:"; cin >> name; cout << "Ваше имя:"; cout << name << endl; return 0; }
Кроме того, нужно сменить шрифт консоли. Щелкните правой клавишей мыши на шапку консоли и выберите Свойства. Выберите вкладку Шрифт и установите Lucida Console.
Примеры решения задач Задача 1.Подоходный налог в России составляет 13%. Напишите программу, которая принимает доход гражданина в рублях и вычисляет фактическую денежную сумму, которую он получит на руки.
//Если работаем в Visual Studio, то //добавляем эту строку #include "stdafx.h"
//… для cout и cin #include <iostream> using namespace std;
//… для setlocale() #include <locale.h>
int main() { //Корректно отображаем русские сивмолы setlocale(LC_ALL, "Russian");
//Объявляем переменную для дохода float income;
//Просим пользователя ввести доход cout << "Введите свой доход:" << endl;
//Вводим расстояние cin >> income;
//Вычисляем реальный доход (-13%) float real_income = income*0.87;
//Выводим результат на экран cout << "Ваш фактический доход составляет " << real_income << "рублей" << endl; system("pause"); return 0; } Задача 2.Расстояние от Земли до Солнца составляет 150 000 000 км. Скорость света равна 300 000 км/сек. Напишите программу, которая вычисляет, за какое время свет, стартовавший с Солнца, достигнет поверхности Земли. #include "stdafx.h" #include <iostream> using namespace std; #include <locale.h>
int main() { setlocale(LC_ALL, "Russian");
//Скорость света (км/сек) float light_speed = 300000;
//Расстояние от Солнца до Земли (км) float distance = 150000000;
//Время в секундах float time_sec = distance/light_speed;
//Время в минутах float time_min = time_sec/60;
//Выводим результат на экран cout << "Свет достигнет Земли за " << time_sec << " секунд "; cout<< "или за " << time_min << " минут." << endl; system("pause"); return 0; } Задача 3.Напишите программу, которая принимает трёхзначное число и вычисляет сумму его цифр.
#include "stdafx.h" #include <iostream> using namespace std; #include <locale.h>
int main() { setlocale(LC_ALL, "Russian");
//Шестизначное число int number; cout << "Введите трёхзначное число:" << endl; cin >> number;
//Вычленяем три его цифры int d1 = (number/100)%10; int d2 = (number/10)%10; int d3 = number%10;
//Выводим результат cout << "Сумма цифр числа " << number; cout << " равна " << (d1+d2+d3) << endl; system("pause"); return 0; }
Задача 4.Напишите программу, которая выводит на экран цифру 8 из звёздочек.
#include "stdafx.h" #include <iostream> using namespace std;
int main() { cout << "***" << endl << "* *" << endl; cout << "***" << endl << "* *" << endl; cout << "***" << endl; system("pause"); return 0; }
Задача 5.Напишите программу, которая принимает фамилию, имя и отчество человека, а затем выводит его полное имя.
#include "stdafx.h" #include <iostream> using namespace std; #include <windows.h>
int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251);
char first_name[100]; char surname[100]; char patronymic[100];
cout << "Введите Вашу фамилию: "; cin >> surname;
cout << "Введите Ваше имя: "; cin >> first_name;
cout << "Введите Ваше отчество: "; cin >> patronymic;
cout << "Ваше полное имя:" << endl; cout << surname << " " << first_name << " " << patronymic << endl; system("pause"); return 0; }
КОНТРОЛЬНЫЕ ВОПРОСЫ 1. Опишите структуру программы на языке Си. 2. Какая директива подключает библиотеку? 3. Какую библиотеку нужно подключить для работы с операторами cout и cin? 4. Что такое комментарий? Какие типы комментариев существуют в языке Си? Как выделить комментарий? 5. Перечислите известные вам типы данных, которые есть в языке Си. Какой размер в памяти занимают переменные этих типов? Какие значения они могут принимать? 6. Объясните, чем отличаются ключевые слова от идентификаторов? Какие правила нужно соблюдать при создании имен переменных? Приведите примеры корректных и некорректных идентификаторов. 7. Объясните, как работает операторы cout и cin. Приведите примеры. Зачем нужна команда endl? 8. Какие основные арифметические операторы существуют в языке Си? 9. Как выполнить деление нацело и вычислить остаток от деления? 10. Объясните, в чём заключается различие между кавычками и апострофами при работе с символами и строками. Приведите примеры. 11. Как сделать так, чтобы русские символы отображались корректно? 12. Какую библиотеку нужно подключить для работы с функцией setlocale()? 13. Какая библиотека требуется для работы с функциями SetConsoleCP() и SetConsoleOutputCP()? 14. Какой из значков << или >> используется в операторе cout (cin)? 15. Какие значки используются в Си в качестве аналогов для begin и end в Паскале?
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (929)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |