1. 런타임에러는 보통 할당되지 않은 메모리를 참조할 때 일어납니다. a[100]인경우 저희가 참조할 수 있는 인덱스는 a[0]~a[99]인데, n = 100인 경우 2번째 for문에서 j = 100, 곧 a[100]에 접근하게 됩니다. 그래서 런타임 에러가 일어나는거구요.
2. a[101] = { 0 }; 에서 a라는 배열은 전부 0으로 초기화되어있습니다. for문을 거쳐서 뒤에서부터 *을 채워나가며 찍으려는 방법을 선택하신 것 같은데, ASCII code에서 0이란 값은 null로서, %c로 찍으면 아무것도 출력이 되지 않습니다. 그러므로 *만 출력이 되어 문제에서 원하는 모양이 아닌 좌우대칭이 된 모양으로 나온 것이죠. 초기화를 해줄 때 모든 index에 대해서 ' '과 같이 공백으로 채워준다면 괜찮아질 것 같네요.
may900515 7년 전
char a[101] = { 0 };
여기서 101을 100으로 바꾸면 런타임에러가 되고 101을 하면 틀렸습니다 라고 뜹니다..
단순한거 같은데 왜 안될까요?