< 2020.01.05 6장 반복문

프로그래밍 공부/C

2020.01.05 6장 반복문

Rocketbabydolls 2020. 11. 4. 00:08

  모든 예시들은 실전C프로그래밍(21세기사, 나중채_김도년_김영갑_박천수_박태순_양효식_임필옥_장문정_장 윤_한동일 공저)에 수록되어 있는 것들입니다.


 


 

 


[문제 1]

  하나의 양의 정수 N을 입력 받아 N의 약수를 출력하는 프로그램을 작성하시오.

 

int main()
{
int N,tmp=2; 

scanf("%d",&N);
printf("1");
while(tmp!=N+1){
if (N%tmp==0){
printf(" %d",tmp);
}
tmp++;
}
return 0;
}

[문제 2]

  하나의 정수 N을 반복해서 입력 받아 N의 합을 출력하는 프로그램을 작성하시오.

int main()
{
int N=1,tmp=0;
while(N!=0){
scanf("%d",&N);
tmp+=N;

}
printf("%d",tmp);
return 0;
}

[문제 3] 하나의 기준 정수를 입력 받고, 다음 예시와 같이 정답을 맞힐 때 까지 정수를 입력 받아 대소 관계를 출력하는 숫자 맞추기 게임 프로그램을 작성하시오.

 

 int main()
{
int N=1,M,tmp=0;
scanf("%d",&N);
do{
scanf("%d",&M);
if(M>N)printf("\n%d>?",M);
else if(M<N)printf("\n%d<?",M);
else printf("\n%d==?",M);

tmp++;
}while(N!=M);
printf("\n%d",tmp);
return 0;
}

[문제 4]

  두 개의 양의 정수 N과 M을 입력 받아 두 정수의 최대공약수를 출력하는 프로그램

int main()
{
int N,M,i,tmp,max;

scanf("%d %d",&N,&M);
if(N>=M)max=N;
else max=M;
for(i=max;i!=0;i--){
if(M%i==0&&N%i==0) {
printf("%d",i);
break;
}
}

return 0;
}

while문도 비슷한 맥락으로 작성하면 된다..

 

[문제 5]

  양의 정수 N을 입력 받아, 높이가 N인 삼각형을 출력하는 프로그램

  int main()
{
int N,i,j,k,ind,tmp;
scanf("%d",&N);
for(i=1;i<=N;i++){
for(j=0;j<N-i;j++){
printf(" ");
}
for(k=0;k<2*i-1;k++){
printf("*");
}
for(tmp=N+i;tmp<=2*N-1;tmp++){
printf(" ");
}

printf("\n");
}

return 0;
}

[문제 6] 양의 정수 N을 입력받아, 아래 예시와 같이 높이 N인 삼각형을 출력하는 프로그램을 for 문을 중첩 이용하여 작성하시오.

 

  int main()
{
int N,i,j,k,ind,tmp;
scanf("%d",&N);
i=0;
while(i<N){
for(j=i+1;j<=N+i;j++)printf(" %d",j%10);
printf("\n");
i++;
}
return 0;
}

[문제7] 하나의 양의 정수 N을 받아 아래와 같이 출력하느 프로그램을 작성하시오.

 

int main(){
int N,i,j,k;

scanf("%d",&N);

for(i=1,k=1;i<N+1;i++){
for(j=1;j<=i;j++,k++){
printf(" %d",k%10);
}
printf("\n");
}
return 0;
}

[문제 8] 정수 M, N을 입력받는다. for문을 사용하여 M!(팩토리얼) 부터 N!(팩토리얼)까지 출력하는 프로그램을 작성하시오.

int main(){
int N,M,i,j,tmp=1;

scanf("%d %d",&N,&M);

for(i=N;i<M+N-1;i++){
printf("%d!=1",i);
for(j=2;j<=i;j++){
printf("*%d",j);
}
tmp=tmp*(j-1);
printf("=%d\n",tmp);
}

return 0;
}

[문제 9]

  하나의 양의 정수 N을 입력 받아, 1부터 N까지의 정수에서 숫자 3이 총 몇번 나타나는지를 출력하는 프로그램

int main()
{
int N,i=0,j,tmp,num=0,ans=0;
scanf("%d",&N);
while(i<=N){
for(j=i;j!=0;j=j/10){
if(j%10==3) ans++;
}
i++;
}
printf("%d",ans);

return 0;
}

 

[문제 10]

10이상의 양의 정수 N을 입력 받아 디지털 근을 출력하는 프로그램

int main() { 
int N, a=1, b=0; 
scanf("%d", &N); 
while (a<=10*N)  
{ 
if (b <= 9) 
{ 
b = b + (N / a) % 10;  
} 

while (b >= 10) 
{ 
b = b % 10 + b / 10; 
} 
a = a * 10; 
} 
printf("%d", b); 

return 0; 
}

[문제 11] 3~18 사이의 정수 N을 입력 받아, 3개의 주사위의 총 합이 N이 되는 모든 경우를 출력하는 프로그램을 작성하시오.

 

int main() {
int N,i,j,k;
scanf("%d",&N);
int sum=N;
for(i=1;i<7;i++){
for(j=1;j<7;j++){
for(k=1;k<7;k++){
if(sum==i+j+k) {
printf("%d %d %d\n",i,j,k);
break;
}
}

}
}

return 0;
}

[문제 12] 하나의 양의 정수 N을 입력 받아 1부터 N까지의 합을 출력하는 프로그램을 작성하시오.

 

int main() { 
int N, i, j, k,sum=0; 
scanf("%d", &N); 
for(i=1;;i++){
if(i==N+1) break;
sum+=i;
}
printf("%d",sum);
return 0; 
}

[문제 13] 0~100사이의 정수N을 반복해서(종료 조건 시까지) 입력받아 N의 합계, 평균, 개수를 출력하는 프로그램을 작성하시오.

 

int main() { 
int N, i, j, k,sum=0;
float mean=0;
int num=0; 
scanf("%d", &N);
sum+=N;
mean+=(float)N;
num++;
while(1){
scanf("%d",&N);
if(N>100) continue;
else if (N<=0) break;
else {
sum+=N;
mean+=(float)N;
num++;
}
}

mean/=num;
printf("%d %.2f %d",sum,mean,num);
return 0; 
}