C언어 제곱수 출력
문제 두 수 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부터 제곱을 하기 때문에 메모리 낭비가 있음