Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.48 KB | None | 0 0
  1. Цель работы:
  2. Изучить процесс прохождения программы на языке СИ в сис¬теме программирования Visual Studio. Ознакомиться с технологией от¬ладки программ. Изучить основные конструкции операторов при¬сваивания и директивы препроцессора.
  3. Исходные данные и задание для варианта №7:
  4. Исходные данные: A=4, B=8, C=66, D=34.
  5. • А - умножить на сумму В и С, деленную по модулю 6, затем прибавить D. D увеличить на 1.
  6. • B - разделить на 7.
  7. • С - вычесть А и В. А увеличить на 1, В уменьшить на 1. Результат разделить на 3.
  8. • D - выполнить поразрядное «или» 0-5 разрядов В и 0-3 разрядов С, сдвинутых вправо на 2 разряда.
  9. Методические указания:
  10. 1. При выполнении работы следует стремиться максималь¬но упростить выражения в операциях присваивания. Для этого следует использовать операции инкремента и декремента, а так¬же операторы «+=», «*=» и т. п.
  11. 2. Все константы, используемые в программе, должны быть описаны директивами препроцессора #define.
  12. 3. Для использования функций ввода/вывода printf() и scanf() необходимо включить в программу файл stdio.h директивой
  13. #include <stdio.h>
  14. 4. Все программы должны быть отлажены в пошаговом режиме с выводом информации о значениях переменных в окно отладки
  15. Ход работы:
  16. 1. Написать программу, выполнявшую арифметические и логические операции над целыми переменными А, В, С, D, используя глобальные статические пере¬менные и инициализацию при компиляции и выводя значения пере¬менных с помощью функции printf() в заданном формате.
  17.  
  18.  
  19. Алгоритм:
  20. #include <stdio.h>
  21.  
  22. static int A=4, B=8, C=66, D=34;
  23.  
  24. void main()
  25. {
  26.  
  27. printf ("Исходные данные A = %d, B = %d, C = %d, D = %d \n", A, B, C, D);
  28.  
  29. A=A*((B+C)%6)+D; D++;
  30. B/=7;
  31. C=C-A-B; A++; B--;
  32. C/=3;
  33. D=(B&31)|((C&15)>>2);
  34.  
  35.  
  36. printf ("Конечные данные A = %d, B = %d, C = %o, D = %o", A, B, C, D);
  37.  
  38. }
  39. 2. Модифицировать программу, описав переменные как локальные и задав их значения с помощью прямого присваивания.
  40. Алгоритм:
  41. #include <stdio.h>
  42.  
  43. void main()
  44. {
  45. static int A=4, B=8, C=66, D=34;
  46.  
  47. printf ("Исходные данные A = %d, B = %d, C = %d, D = %d \n", A, B, C, D);
  48.  
  49. A=A*((B+C)%6)+D; D++;
  50. B/=7;
  51. C=C-A-B; A++; B--;
  52. C/=3;
  53. D=(B&31)|((C&15)>>2);
  54.  
  55.  
  56. printf ("Конечные данные A = %d, B = %d, C = %o, D = %o", A, B, C, D);
  57.  
  58. }
  59. 3. Изменить программу, используя для ввода значений переменных функцию scanf.
  60.  
  61.  
  62.  
  63. Алгоритм:
  64. #include <stdio.h>
  65.  
  66. void main()
  67. {
  68. static int A, B, C, D;
  69. printf("Введите A, B, C, D: ");
  70. scanf("%d %d %d %d", &A, &B,&C, &D);
  71. printf ("Исходные данные A = %d, B = %d, C = %d, D = %d \n", A, B, C, D);
  72. A=A*((B+C)%6)+D; D++;
  73. B/=7;
  74. C=C-A-B; A++; B--;
  75. C/=3;
  76. D=(B&31)|((C&15)>>2);
  77. printf ("Конечные данные A = %d, B = %d, C = %o, D = %o", A, B, C, D);
  78.  
  79. }
  80. 4. Описать переменные как автоматические. Вывести их значения до присваивания.
  81. Алгоритм:
  82. #include <stdio.h>
  83.  
  84. void main()
  85. {
  86. auto int A, B, C, D;
  87. printf("До присваивания A=%d B=%d C=%d D=%d",A,B,C,D);
  88. printf("Введите A, B, C, D: ");
  89. scanf("%d %d %d %d", &A, &B, &C, &D);
  90. printf ("Исходные данные A = %d, B = %d, C = %d, D = %d \n", A, B, C, D);
  91. A=A*((B+C)%6)+D; D++;
  92. B/=7;
  93. C=C-A-B; A++; B--;
  94. C/=3;
  95. D=(B&31)|((C&15)>>2);
  96. printf ("Конечные данные A = %d, B = %d, C = %o, D = %o", A, B, C, D);
  97.  
  98. }
  99. 5. Повторить п. 2 разместив все описания в отдельном файле.
  100. Алгоритм:
  101.  
  102.  
  103. #include <stdio.h>
  104. #include "LR-1.h"
  105. void main()
  106. {
  107. printf("Введите A, B, C, D: ");
  108. scanf("%d %d %d %d", &A, &B, &C, &D);
  109. printf ("Исходные данные A = %d, B = %d, C = %d, D = %d \n", A, B, C, D);
  110. A=A*((B+C)%6)+D; D++;
  111. B/=7;
  112. C=C-A-B; A++; B--;
  113. C/=3;
  114. D=(B&31)|((C&15)>>2);
  115. printf ("Конечные данные A = %d, B = %d, C = %o, D = %o", A, B, C, D);
  116. }
  117. Описания размещены в файле LR-1.h: static int A, B, C, D;
  118. 6. Повторить п. 2., использовав вместо переменных А, В, С, D статический массив.
  119. #include <stdio.h>
  120. static int mas[]={4,8,66,34};
  121. void main()
  122. {
  123. printf(" Исходные данные mas[0]=%d mas[1]=%d mas[2]=%d mas[3]=%d ", mas[0],mas[1],mas[2],mas[3]);
  124. mas[0]=mas[0]*((mas[1]+mas[2])%6)+ mas[3]; mas[3]++;
  125. mas[1]/=7;
  126. mas[2]=mas[2]-mas[0]-mas[1]; mas[0]++; mas[1]--;
  127. mas[3]=(mas[1]&31)|((mas[2]&15)>>2);
  128. printf(" Конечные данные mas[0]=%d mas[1]=%d mas[2]=%o mas[3]=%o ", mas[0],mas[1],mas[2],mas[3]);
  129. }
  130. Результат:
  131. A = 43 B = 0 C = 27 D = 1
  132. Вывод: Таким образом, мы изучили процесс прохождения программы на языке СИ в сис¬теме программирования Visual Studio, а также ознакомиться с технологией от¬ладки программ и изучили основные конструкции операторов при¬сваивания и директивы препроцессора.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement