Вывод printf - C (СИ)
Формулировка задачи:
Привет всем, я тут начал изучать язык си и вот столкнулся с проблемой. Программа преобразует массив [a, b, c, d] в [b, c, d, a].
В принципе работает но выводит лишние символы "MMMMM"
вот код:
а вот вывод:
#include <stdio.h>
#include <locale.h>
int main(void)
{
char *locale = setlocale(LC_ALL, "");
int i, j, t;
char arr[] = { 'a', 'b', 'c', 'd' };
printf("Исходный порядок букв: ");
for (i = 0; i < arr[i]; i++)
printf("%c", arr[i]);
printf("\n");
printf("Изменненый порядок букв: ");
for (j = 0; j < arr[j]; j++)
{
t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
printf("%c", arr[j]);
}
printf("\n");
return 0;
}Исходный порядок букв: abcd Изменненый порядок букв: bcdММММММММa
не могу понять откуда символы MMMMM берутсяРешение задачи: «Вывод printf»
textual
Листинг программы
printf("Изменненый порядок букв: ");
for (j = 0; j < arr[j]; j++)
{
t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
printf("%c", arr[j]);
}
Объяснение кода листинга программы
- Переменная
jинициализируется значением 0. - Переменная
tинициализируется значениемarr[j]. - В цикле
forперебираются все элементы массиваarr, начиная с индекса 0 и до элемента с индексомarr[j]. - В каждой итерации цикла значение переменной
tприсваивается значению элемента массиваarrс индексомj. - Значение элемента массива
arrс индексомj + 1присваивается значению переменнойarr[j]. - Значение переменной
tприсваивается значению элемента массиваarrс индексомj + 1. - В каждой итерации цикла выводится значение элемента массива
arrс индексомjс помощью функцииprintf. - Значение переменной
jувеличивается на 1 после каждой итерации цикла. - Цикл выполняется до тех пор, пока значение переменной
jменьше значенияarr[j]. - Значение переменной
arr[j]равно количеству элементов в массивеarr. - Значение переменной
jувеличивается на 1 после каждой итерации цикла. - В каждой итерации цикла значение переменной
arr[j + 1]присваивается значению переменнойt. - Значение переменной
tприсваивается значению элемента массиваarrс индексомj + 1. - Значение переменной
arr[j + 1]присваивается значению переменнойt. - Значение переменной
tвыводится с помощью функцииprintf. - Значение переменной
jувеличивается на 1 после каждой итерации цикла. - Цикл выполняется до тех пор, пока значение переменной
jменьше значенияarr[j]. - Значение переменной
arr[j + 1]присваивается значению переменнойt. - Значение переменной
tприсваивается значению элемента массиваarrс индексомj + 1. - Значение переменной
arr[j + 1]присваивается значению переменнойt.