문제 두 수 m,n을 입력 받아서 주어진 범위 내의 제곱수를 모두 출력하여라.
( 1≤1,000 m≤n≤10,000)
제곱수를 한 줄에 모두 출력하되, 제곱수가 없는 경우는 0을 출력한다.
요구분석
1.정수형태의 두 수를 입력받는다.
2.입력받은 값의 사이의 제곱수를 모두 출력한다.
3.입력받은 값의 사이에 제곱수가 없을 경우 0을 출력한다.
해결방법
1.변수i를 1부터 n까지 반복문을통해 계속 증가시키고, 증가시킨값이 범위에 있을 경우 출력하는 방법
배경지식
제곱수 정의 1*1, 2*2, 3*3, 4*4, 5*5, ...... n*n
알고리즘
1.범위 값을 입력받아 m, n에 저장한다.
2.i를 1부터 입력받은 n의 값까지 반복문을 통해 문장을 수행
3.i의 제곱값이 m값보다 크고, n값보다 작을 경우 i*i값을 출력
4.count값을 증가시킴
5.i*i값이 n보다 클 경우 for문을 나오게됨
6.count값이 증가되지 않고 그대로 0일 경우 0을 출력
소스코드
#include <stdio.h>
void main()
{
int m,n,i,count=0;
printf("범위를 입력하시오 : ");
scanf("%d %d",&m,&n);
printf("입력 : %d %d\n",m,n);
printf("출력 : ");
for(i=1;i<m;i++){
if(i*i>m && i*i<n){
printf("%d ",i*i);
count++;
}
else if(i*i>n)
break;
}
if(count==0)
printf("0");
}
실행결과
향후과제
1.예외처리를 해야함
2.만약 입력받은 값이 10,000,000과 같이 큰 자리수부터 시작하게 될 경우 i가 1부터 제곱을 하기 때문에 메모리 낭비가 있음
'개발자 > C' 카테고리의 다른 글
C언어 소수놀이, 소수구하기 (0) | 2015.09.29 |
---|---|
C언어 나무심기 (1) | 2015.09.29 |
C언어 공약수, 최대공약수 출력 (0) | 2015.09.29 |
C언어 삼각형의 종류 판별 (0) | 2015.09.29 |
C언어 합계구하기 (0) | 2015.09.29 |