이코드는 숫자 두개를 입력해서
그사이에 있는 구구단을 출력하는프로그램인데여
예를들어 3 7 을 입력했다면 3단 ~ 7단 까지 출력하게 만든코드입니다
그리고 7 3 이순서대로 입력해도 3 ~7단 순서대로 출력하는 코드입니다.
근데 컴파일하면 성공으로 나오는데 3 과 7을 입력하면 3단만 출력되고 나머지 4 5 6 7 단이 출력이 안되네요
뭐가 문제 일까요?
아 참고로 간단한 코드라 "두개의 정수를 입력하시오", "출력결과는 이것입니다." 와 주석같은건
귀차니즘으로 인해 코딩 안하였습니다. 그냥 알짜배기만 코딩했습니다
고수님들 답변 부탁드립니다
---------------------------------------------------
#include <stdio.h>
int main(void)
{
int a, b, c;
scanf("%d %d",&a, &b);
if(a>b)
{
c=1;
while(a>b)
{
while(c<10)
{
printf("%d x %d =%d n",b,c,b*c);
c++;
}
b++;
}
}
else
{
c=1;
while(b>a)
{
while(c<10)
{
printf("%d x %d =%d n",a,c,a*c);
c++;
}
a++;
}
}
return 0;
}
당연히 중간부분을 안 만들었으니까 출력이 안되는거지
중간 부분이라 하심은......?
ㅜㅜ
넌 주석도안달고 도움을 바라는거냐?
혹시 같은 두개의 정수를 입력하였을때 말씀하시는 건가요?
으 ㅡㅡ ..완전어렵게보여
코드가 간단하다 보니까 주석이 필요없을거라 예상해서요ㅜㅜ
c = 1도 이상한데있네
아니 c = 1이 이상한데 가있잔아
첫번째 while문 안으로 집어넣어라
첫번째 반복문에 넣으니까 되네요 !!!!! 아대박 감사합니다 \'맙이\' 형님~
근데 또 궁금한게 생겼는데 대부분 변수는 몸체 앞부분에 코딩 해야 된다고 해서 그렇게 해왔는데 왜 반복문 안에 넣으니까 된걸까요? ㅜㅜ
변수 선언과 초기값 설정을 몸체앞에 하라는거지 변수 값을 대입하는거는 적절한곳에서 해야하는거야.
두번째 반복문을 보면 c<10일동안에 돌아가는데 이 반복문을 빠져나간 상태에서 c 는 10이잔아. 하지만 a > b라는 조건때문에 b는 값이 상승하고 c는 여전히 10이기 때문에 두번째 반복문을 그냥 패스해버리고 프로그램이 끝나는거야.
...C언어 시작한지 일주일정도 되서 궁금한게 너무 많네요 아무튼 해결에 도움주셔서 감사합니다 ^^
위에 코드에 따른다면 c를 다시 1로 변경시켜줘야할때는 두번째 while문을 바져나간 직후나 아니면 반복문 밖의 c = 1을 첫번째 반복문 첫번째로 이동시켜주면 되는거지
a 가 b 보다 크면 그거는 나도 첨보고 해깔렸는데 그냥 보기 해깔린거 아닌가? 학교에서 배운건지 아니면 내 습관인지는 나도 잘 모르겠는데 a:비교하는 변수 (비교연산자) b:비교할 대상으로 하는게 더 좋지 않나?
\'맙이\' 님 감사해요~ 아 해결되니까 막혔던 가슴이 뻥뚤려서 시원하네요 감사합니다
첨 저거보고서 반복문 조건이 잘못되었나 싶었는데 아니더라구.
그럼 어서 조공짤 올려