Ошибка при запуске программы: Access violation writing location 0x00000000 - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужно было написать программу, которая вычислит через сколько лет утроится население города, если каждый год население увеличивается на 1/40.После ввода населения выскакивает окошко с надписью: Unhandled exception at 0x778715de in z10.exe: 0xC0000005: Access violation writing location 0x00000000 Код:
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <windows.h>
  4. int main()
  5. {
  6. SetConsoleCP(1251);
  7. SetConsoleOutputCP(1251);
  8. int i;
  9. double nach=0.00;
  10. double nas2;
  11. printf("Введите население города\n");
  12. scanf_s("%lf", nach);
  13. nas2=nach;
  14. for(i=0; nach*3<nas2; i++)
  15. {
  16. nas2=nach/40+nach;
  17. printf("Население города через 1 год будет: %.0lf\n", nas2);
  18. }
  19. return 0;
  20. }
Ошибка:
Листинг программы
  1. 'z10.exe': Loaded 'D:\kursovoiproekt\z10\Debug\z10.exe', Symbols loaded.
  2. 'z10.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll'
  3. 'z10.exe': Loaded 'C:\Program Files\AVAST Software\Avast\snxhk.dll'
  4. 'z10.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll'
  5. 'z10.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll'
  6. 'z10.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\msvcr90d.dll'
  7. First-chance exception at 0x53ab9348 in z10.exe: 0xC0000005: Access violation writing location 0x00000000.
  8. Unhandled exception at 0x778715de in z10.exe: 0xC0000005: Access violation writing location 0x00000000.

Решение задачи: «Ошибка при запуске программы: Access violation writing location 0x00000000»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. #define NEEDED_MULTIPLE ( 3.0 )
  4. #define YEARS_INCREMENT ( 1.0 / 40.0 )
  5.  
  6. int main(void) {
  7.     double atBegin, atEnd;
  8.     int years;
  9.    
  10.     printf("Starting number of cityzens: ");
  11.     scanf("%lf", &atBegin);
  12.    
  13.     for ( years = 0, atEnd = atBegin; atEnd < atBegin * NEEDED_MULTIPLE; ++years, atEnd += atEnd * YEARS_INCREMENT )
  14.         ;
  15.        
  16.     printf("Number of cityzens will be multipled by %.0f after %d years\nand amounts of %.0f people\n", NEEDED_MULTIPLE, years, atEnd);
  17.    
  18.     return 0;
  19. }

Объяснение кода листинга программы

  1. Подключение стандартной библиотеки для работы с файлами и вывода данных.
  2. Объявление двух констант: NEEDED_MULTIPLE и YEARS_INCREMENT.
  3. Ввод начального числа жителей города с клавиатуры.
  4. Инициализация переменной years нулевым значением и присвоение ей значения переменной atBegin.
  5. Начало цикла, который выполняется до тех пор, пока значение переменной atEnd не станет равным начальному значению atBegin, умноженному на NEEDED_MULTIPLE.
  6. Увеличение значения переменной years на единицу при каждой итерации цикла.
  7. Вывод на экран информации о количестве жителей города через определенное количество лет.
  8. Возврат значения 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы