Объявить переменные x,y,z целого типа. Организовать их ввод с клавиатуры. Объявить
три строковые переменные st1, st2, st3. Организовать их ввод с клавиатуры. Реализовать
вывод переменных в следующем виде:
st1……………………………………………………………….x
st2……………………………………………………………….y
st3……………………………………………………………….z.
КОД ПРОГРАММЫ:
#include
#include
#include
int main()
{
setlocale(LC_ALL, "Russian");
int x;
int y;
int z;
char st1, st2, st3;
printf("Введите три целых числа: \n");
scanf("%d",&x);
scanf("%d",&y);
scanf("%d",&z);
printf("Введите три символьных переменных: \n");
scanf("%s", st1);
scanf("%s", st2);
scanf("%s", st3);
printf("%s",st1," ...%d \n", x);
printf("%s",st2," ...%d \n", y);
printf("%s",st3," ...%d \n", z);
return 0;
}
ПРОБЛЕМА: Открывается консоль, ввожу целые числа - все нормально, но как только ввожу первый символ - программа вылетает. Что не так?
Заранее благодарю за ответ!
Другие языки программирования и технологии
Не работает программа на Cи
Вообще функция scanf считается опасной, поэтому в реальных программах редко используется. В частности, когда вы вводите scanf("%c", &st), scanf ожидает ровно 1 символ, но если после ввода нажимается Enter, то получает 2 символа: введённую букву и \n. Так что правильно вам посоветовал Samuel Langhorne Clemens: оставить %s в scanf, но поменять односимвольные переменные на массивы. В этом случае амперсанд (&) перед ними ставить не надо. Кроме того, у вас ошибка в printf, где строки форматирования почему-то чередуются с необязательными аргументами, хотя должна быть ровно 1 строка форматирования, а за ней аргументы, соответствующие формату, указанному в этой строке.
===
до этого места всё верно
char st1[16], st2[16], st3[16];
дальше снова верно
printf("Введите три символьных переменных: \n");
scanf("%s",st1); // Т. к. это массивы, то без амперсандов!
scanf("%s",st2);
scanf("%s",st3);
printf("%s ...%d \n", st1, x);
printf("%s ...%d \n", st2, y);
printf("%s ...%d \n", st3, z);
===
Как-то так.
И непонятно, зачем вам 3 инклуда, имхо необходимо только 2: stdio.h и locale.h.
Кроме того, setlocale в данном примере не нужна, но если уж хотите работать с русскими буквами, то вызывайте так: setlocale(LC_ALL, "") - установки вашего терминала, setlocale(LC_ALL, "ru_RU.UTF-8") - юникод с поддержкой русского языка, ну и т. д.
===
до этого места всё верно
char st1[16], st2[16], st3[16];
дальше снова верно
printf("Введите три символьных переменных: \n");
scanf("%s",st1); // Т. к. это массивы, то без амперсандов!
scanf("%s",st2);
scanf("%s",st3);
printf("%s ...%d \n", st1, x);
printf("%s ...%d \n", st2, y);
printf("%s ...%d \n", st3, z);
===
Как-то так.
И непонятно, зачем вам 3 инклуда, имхо необходимо только 2: stdio.h и locale.h.
Кроме того, setlocale в данном примере не нужна, но если уж хотите работать с русскими буквами, то вызывайте так: setlocale(LC_ALL, "") - установки вашего терминала, setlocale(LC_ALL, "ru_RU.UTF-8") - юникод с поддержкой русского языка, ну и т. д.
Вы неправильно используете scanf для чтения единичного символа: st1,st2,st3 совсем не строки. Форматная строка "%c", передается адрес переменной &st1.
Александр Хацкевич
я бы вообще через инпут сделал
Что значит улетает?
Максим Семенов
Прекращена работа программы.
- Искать решение проблемы в интернете;
- Закрыть программу.
- Искать решение проблемы в интернете;
- Закрыть программу.
Похожие вопросы
- Объясните как работает программа в паскаль!!!
- С++ cin cout. Не работает программа.
- С/С++ Неправильно работает программа
- c++ не работает программа
- Будет ли работать программа? ассемблер.
- Почему не работает программа?
- Обьясните пожалуйста как работает программа
- Объясните как работают программы. 2 задачи. Язык с++.
- по какому принципу работает программа гугл планета земля и с чего стоит начать для создания её аналога?
- C++ не работает программа посмотрите пожалуйста))