|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Помогите в изучении C. |
|
C/C++ - Помогите в изучении C.
|
Пользователь Сообщения: 76 |
Профиль | Сайт | Отправить PM | Цитировать
Добрый вечер. Решил я попытаться освоить программирование, решил начать с C. До этого с программированием дела не имел ( школьный курс Basic не в счет ). Читаю книгу Д. Ритчи & Керниган Б. Язык программирования С., поставил Eclipse, компиляторы MinGW. Начал писать, а вернее списывать, свою первую программу. Текст программы взят из книги.
eclipse после компиляции выдавал две ошибки, хотя и запускал программу. Они пропали после того как текст изменил на Этот текст я взял в инете. Объясните в чем разница? Что такое int я разобрался, но зачем в данной программе нужно указывать тип функции? И про return 0 |
|
Отправлено: 23:16, 03-02-2014 |
Пользователь Сообщения: 121
|
Профиль | Отправить PM | Цитировать lxa85, c .NET я не сталкивался, а Java компилируется в байткод, который потом выполняется на специальной виртуальной машине JVM. Согласитесь, javac никаких кодов завершения не получает, т.к. в выполнении программы не участвует.
|
Отправлено: 08:49, 05-02-2014 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 76
|
Профиль | Сайт | Отправить PM | Цитировать Итак, добрался я до следующей программы:
#include <stdio.h> /* печать таблицы температур по Фаренгейту и Цельсию для fahr = 0, 20, ..., 300 */ main() { int fahr, celsius; int lower, upper, step; lower = 0; /* нижняя граница таблицы температур */ upper = 300; /* верхняя граница */ step = 20; /* шаг */ fahr = lower; while (fahr <= upper) { celsius = 5 * (fahr-32) / 9; printf(“%d\t%d\n”, fahr, celsius); fahr = fahr + step; } } Я правильно понял, что переменные нужно "раскладывать" раскладывать по типам? И непонятно с формулой, вернее с объяснением Цитата:
|
|
Отправлено: 22:35, 05-02-2014 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Efimalex:
Что получится при обычном делении 5 на 9? «0.5(5)» — «0.5555555555555555555555555555555…». Операция деления над двумя целыми числами даёт целочисленный результат, т.е. вся дробная часть — «.5555555555555555555555555555555…» просто теряется, остаётся только «0». При делении 10 на 9 будет 1 («1.1111111111111111111111111111111»), 20/3 = 6 («6.6666666666666666666666666666667»). |
|
Отправлено: 00:29, 06-02-2014 | #13 |
Пользователь Сообщения: 76
|
Профиль | Сайт | Отправить PM | Цитировать В упражнении нужно переделать программу наоборот. Вот что получилось
#include <stdio.h> /*печать таблицы температур по Фаренгейту и Цельсию */ int main() { printf("Таблица температур\n"); float fahr, celsius; float lower, upper, step; lower=-17.8; /*нижняя граница температур*/ upper=300.0; /*верхняя граница температур*/ step=20.0; /*шаг*/ celsius=lower; while (fahr<=upper) { fahr=(9.0/5.0*celsius+32.0); printf("%5.1f %8.2f\n%" , celsius, fahr); celsius=celsius+step; } return 0; } Программа выводила такие числа например, 162.2 323.0 (по Цельсию и Фаренгейту соответственно). Когда указал в спецификации что выводить нужно с точностью до сотых, начала выводить нормально, 162,2 323,96. Это что, шло округление? Я думаю, не должно, ведь он должен просто откинуть все что идет после десятых долей, или я не прав? |
Последний раз редактировалось Efimalex, 06-02-2014 в 23:18. Отправлено: 22:01, 06-02-2014 | #14 |
Ветеран Сообщения: 740
|
Профиль | Отправить PM | Цитировать |
Отправлено: 09:19, 07-02-2014 | #15 |
Пользователь Сообщения: 76
|
Профиль | Сайт | Отправить PM | Цитировать Добрый вечер. Помогите разобраться вот в чем. Поставил на другой ноут(Win7 x86) Eclipse и MinGW. При запуске Build, создается лишь папка Debug, а бинарный фал нет. Но если использовать готовый проект Hello World ANSI C Project с кодом:
============================================================================ Name : hr.c Author : Version : Copyright : Your copyright notice Description : Hello World in C, Ansi-style ============================================================================ */ #include <stdio.h> #include <stdlib.h> int main(void) { puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */ return EXIT_SUCCESS; } то при запуске Build, в консоли выводится следующее: Info: Internal Builder is used for build gcc -O0 -g3 -Wall -c -fmessage-length=0 -o h.o "..\\h.c" gcc -o hk.exe h.o c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../libmingw32.a(main.o):main.c.text.startup+0xa7): undefined reference to `WinMain@16' collect2.exe: error: ld returned 1 exit status 22:55:18 Build Finished (took 1s.715ms) |
Последний раз редактировалось Efimalex, 30-11-2014 в 21:52. Отправлено: 21:47, 30-11-2014 | #16 |
Ветеран Сообщения: 1630
|
Профиль | Отправить PM | Цитировать Цитата Efimalex:
Но, имхо, изучать С(а не C#) на базе допотопных средств из 1980-х годов на сегодня негоже (это на совести старых авторов (Ритчи и т.п.), читающих многолетние курсы для профессионалов, для таких случаев можно и так). Нужно поставить какую-нибудь версию MSVisualStudio из современных и изучать программирование, исходя из ее особенностей, интерфейса, потому что все это изучение нужно для возможности в перспективе создать что-то современно-полезное, а не просто сдать экзамен по началам С и забыть надолго. Примерно так http://msdn.microsoft.com/ru-ru/library/k1sx6ed2.aspx (У меня без всяких вопросов все сразу заработало) Иначе неизбежно будут горы ненужных для изучения проблем в разных версиях, которые в последнем вопросе. Можно там в Studio обыгрывать примерчики с фаренгейтами из Ритчи. |
|
Последний раз редактировалось alef2474, 01-12-2014 в 02:47. Отправлено: 00:56, 01-12-2014 | #17 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать alef2474, можете пояснить — с какого перепуга MinGW и Eclipse в Ваших устах превратились в «допотопные средства из 1980-х годов»?
|
Отправлено: 06:46, 01-12-2014 | #18 |
Ветеран Сообщения: 1630
|
Профиль | Отправить PM | Цитировать Цитата Iska:
В любом случае, имхо, это несовременно изучать отмирающие версии языка и старые грабли версий для новичка, в моей ссылке на MS, кстати отвечены варианты написания main() Управление памятью значительно усовершенствовано в C# по сравнению с C++ Имхо, нужно изучать не только язык, но и нормальную среду программирования, а не что-то минималисткое, вызывающее вопросы. Если я неправ, объясните в чем. Вы ответите про return EXIT_SUCCESS; и stdlib из последнего вопроса? |
|
Последний раз редактировалось alef2474, 01-12-2014 в 11:11. Отправлено: 10:25, 01-12-2014 | #19 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата alef2474:
Цитата alef2474:
|
||
Отправлено: 11:46, 01-12-2014 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[Ну помогите же человеку, а? :)] Помогите с конкурсом | HTML64 | Тест-форум | 0 | 29-06-2012 10:33 | |
CMD/BAT - [решено] помогите скачал себе этот вирус помогите его разблокировать | orell | Скриптовые языки администрирования Windows | 2 | 05-05-2012 15:45 |
|