Программа выдает неправильный результат - C (СИ) (157276)
Формулировка задачи:
#include <stdio.h>
#define a 20
#define n 20
int main () {
int i,k;
int arr[a],m[n];
i=0;
k=20;
do
{
printf ("\n mas[%d] =" , i+1);
if(!scanf("%d",& m[i]))
fflush (stdin);
else
i++;
}while (i<a);
for(i=0;i<k;i++)
arr[m[i]]++;
printf("\nzna4eni9 vstre4auts9\n");
for (i = 0; i < k; i++)
printf("%4d --------%2d\n", i, arr[i]);
return 0;}Решение задачи: «Программа выдает неправильный результат»
textual
Листинг программы
#include <stdio.h>
#define a 20
#define n 20
int main () {
int i,k;
int arr[a],m[n];
i=0;
k=20;
do
{
printf ("\n mas[%d] =" , i+1);
if(!scanf("%d",& m[i]))
fflush (stdin);
else
i++;
}while (i<a);
for(i=0;i<=k;i++)
m[i]=0;
for(i=0;i<=k;i++)
arr[m[i]]++;
printf("\nzna4eni9 vstre4auts9\n");
for (i = 0; i <= a; i++)
printf("%4d --------%2d\n", i, arr[i]);
return 0;}
Объяснение кода листинга программы
- Программа начинается с подключения заголовочного файла stdio.h, который содержит функции для ввода и вывода данных.
- Макросы
aиnопределяются как 20. - Функция main() начинается с инициализации двух переменных типа int -
iиk, которые равны 0 и 20 соответственно. - Переменная
arrтипа int объявляется как массив, размер которого определяется макросомa. - Переменная
mтипа int также объявляется как массив, размер которого определяется макросомn. - Цикл do-while начинается, и в нем происходит следующее:
- Выводится сообщение с индексом массива
mи числом, введенным пользователем, и после этого значениеiувеличивается на 1. - Если пользователь ввел некорректное значение (например, букву вместо числа), то значение
iне изменяется, и цикл продолжается.
- Выводится сообщение с индексом массива
- После окончания цикла do-while, цикл for выполняется для очистки массива
mи заполнения его нулями. - Затем цикл for выполняется для подсчета количества каждого уникального значения в массиве
arr. - Выводится сообщение
zna4eni9 vstre4auts9(это просто набор символов, не имеющий смысла для программы). - Затем выводится таблица, в которой каждое значение
iвыравнивается в 4-х символьных графах, а значениеarr[i]выравнивается в 2-х символьных графах. - Функция main() завершается, и программа заканчивается.