반응형

while문을 중첩해서 꼭 문제를 풀어보자

 

문제1

프로그램 사용자로부터 총 5개의 정수를 입력 받아서, 그 수의 합을 출력하는 프로그램을 작성해보자. 단! 한가지 조건이 있다. 정수는 반드시 1이상이어야 한다. 만약에 1미만의 수가 입력되는 경우에는, 이를 입력으로 인정하지 않고 재 입력을 요구해야 한다. 그래서 결국 1이상의 정수를 5개를 모두 입력 받을 수 있도록 프로그램을 완성해야 한다.

#include <stdio.h>

int main()
{
	int A = 0,num=1;
	int array[5] = { 0 };
	

	while(A < 5)
	{
		printf("정수를 입력하세요 %d ", A + 1);
		scanf_s("%d", &num);
		
		array[A] = num;
		
		
		while (num == 0)
		{
			printf("정수를 다시 입력하세요\n");
			A--;
			break;
		}
		A++;
		
	}

	for (int i = 0; i < 5; i++)
	{
		printf("num[%d]는 %d ", i + 1, array[i]);
	}

	
	return 0;
}

A가 5미만일때까지 반복하는 반복문 while은 정수를 입력 받아 num에 저장하고 array[A]값에 저장한다.

num값을 0을 입력하면 사용하면 "정수를 다시 입력하세요" 출력 / 변수 A의 숫자를 1만큼 줄이고 반복문을 탈출한다.

A를 1더해준다.

 

for문을 통해 array[0~4]까지 출력

 

----------------------------------------------------------------------------------------------------------------------------------

문제2

아래의 출력을 보이는 프로그램을 작성해보자

 

*

o*

oo*

ooo*

oooo*

 

#include <stdio.h>

int main()
{
	int A = 0;
	int i = 0;

	while(A < 5)
	{
		
		while (i < A)
		{
			printf("o");
			i++;
			
		}
		i = 0;
		printf("*\n");
		A++;
	}

	
	return 0;
}

 

A<5이고 i<A일 경우 "o"출력 첫번째 반복문에서는 i==A이기때문에 바로 "*"이 출력된다.

두번째부터 i=0, A=1이기 때문에 "o*"이 출력된다.

두번째 while문 밑에서 i를 0으로 초기화 시켜줘서 A가 커질수록 i를 여러번 반복할수있다.

반응형
반응형

1번 프로그램 사용자로부터 양의 정수를 하나 입력 받아서, 그 수만큼 "Hellow world"를 출력하는 프로그램

 

 

 

 

#include <stdio.h>

int main()
{
	int A = 0,num=0;
	
	printf("출력할 문장의 갯수를 입력하세요");
	scanf_s("%d", &A);

	while(num<A)
	{ 
	printf("Hello world! %d\n", num+1);
	num++;
	}
	return 0;
}

while을 돌때마다 num이 0에서 1씩 커지면서 "Hello world!" 출력 num=A가 되면 while문 탈출

 

----------------------------------------------------------------------------------------------------------------------------------

 

2번 프로그램 사용자로부터 양의 정수를 하나 입력 받은 다음, 그 수만큼 3의 배수를 출력하는 프로그램을 작성해보자.

예를 들어서 5를 입력 받았다면, 3 6 9 12 15를 출력해야 한다.

 

 

 

 

#include <stdio.h>

int main()
{
	int A = 0,num=1, sum=0;
	
	printf("정수를 입력하세요");
	scanf_s("%d", &A);

	while(num<=A)
	{
		
		printf("3x%d=%d\n", num, 3*num);
		num++;
	}
	return 0;
}

num=1 부터 입력받은 정수 A와 같아질때까지 1씩 증가하고 while 돌때마다 "3xnum=(3*num)"을 출력

 

----------------------------------------------------------------------------------------------------------------------------------

 

3번 프로그램 사용자로부터 계속해서 정수를 입력 받는다. 그리고 그값을 계속해서 더해 나간다. 이러한 작업은 프로그램 사용자가 0을 입력할 때까지 계속되어야 하며, 0이 입력되면 입력된 모든 정수의 합을 출력하고 프로그램을 종료시킨다.

 

 

 

 

#include <stdio.h>

int main()
{
	int A = 1,num=1, sum=0;
	

	while(A != 0)
	{
		printf("정수를 입력하세요");
		scanf_s("%d", &A);
		sum += A;

	}
	printf("입력한 정수의 합은 %d", sum);


	
	return 0;
}

0이 입력될때까지 while문을 반복하고 입력된 정수를 sum에 계속 더하고 0이 입력되면 sum값을 출력

 

----------------------------------------------------------------------------------------------------------------------------------

4번 프로그램 사용자로 부터 입력 받은 숫자에 해당하는 구구단을 출력하되, 역순으로 출력하는 프로그램을 작성해보자.

 

 

 

#include <stdio.h>

int main()
{

	int A = 9,B=1;

	printf("1~9사이의 정수를 입력하세요");
	scanf_s("%d", &B);

	while (A >= 1)
	{
		
		printf("%dx%d=%d\n", B, A, B * A);
		A--;
	}

	return 0;
}

 

출력할 구구단 1~9사이의 숫자를 변수 B에 저장

A는 9부터 1씩 감소되면서 BxA=(B*A)를 출력1과 같아지면 while문탈출 

 

----------------------------------------------------------------------------------------------------------------------------------

5번 프로그램 사용자로부터 입력 받은 정수의 평균을 출력하는 프로그램을 작성하되 다음 두 가지 조건을 만족시켜야 한다.

"먼저 몇 개의 정수를 입력할 것인지 프로그램 사용자에게 묻는다. 그리고 그 수만큼 정수를 입력 받는다."

"평균 값은 소수점 이하까지 계산해서 출력한다."

 

 

 

 

#include <stdio.h>

int main()
{
	
	int A = 1,B=1, C=0, num=0, sum=0;
	double avg = 0;

	printf("몇개의 정수를 입력 할것인가요?");
	scanf_s("%d", &B);
	C = B;

	while (A <= B)
	{
		printf("%d번째 정수입니다. %d남았습니다", A, C);
		scanf_s("%d", &num);
		sum += num;
		A++;
		C--;
	}
	avg = (double)sum / B;
	printf("입력한 정수의 합은 %d개의 합은 %d  / 평균은 %.2lf", B, sum, avg);
	
	return 0;
}

 

변수 B에 while문 탈출지점인 B를 입력

while 반복되면서 A가 1부터 B까지 반복하면서 1씩 증가한다 

변수 C는 변수 B를 저장하고 while반복될때마다 1씩 감소한다

A번째 정수입니다. C남았습니다. 출력

num에 정수를 받아서 sum에 입력 받은 정수를 반복문이 끝날때까지 더한다.

while문이 끝나면 avg(평균)= 총합 / 반복횟수

평균과 합을 출력

 

반응형
반응형

문제 3-1-1

#include <stdio.h>

int main()
{
	int A = 0,B = 0;
	printf("정수 두가지를 입력하세요.");
	scanf_s("%d%d", &A, &B);

	printf("%d-%d=%d\n%dx%d=%d", A, B, A - B, A, B, A * B);
	
	return 0;
}

 

문제 3-1-2

#include <stdio.h>

int main()
{
	int A = 0,B = 0,C=0;
	printf("정수 세가지를 입력하세요.");
	scanf_s("%d%d%d", &A, &B,&C);

	printf("%dx%d+%d=%d", A, B,C,A*B+C);
	
	return 0;
}

문제 3-1-3

#include <stdio.h>

int main()
{
	int A = 0;
	int B = 0;
	printf("정수 한가지를 입력하세요.");
	scanf_s("%d", &A);
	B = A*A;
	printf("%d의 제곱은 %d", A, B);
	
	return 0;
}

문제 3-1-4

 

#include <stdio.h>

int main()
{
	int A = 0;
	int B = 0;
	printf("정수 두가지를 입력하세요.");
	scanf_s("%d%d", &A, &B);
	printf("%d/%d=%d 나머지는 %d", A, B, A/B, A%B);
	
	return 0;
}

문제 3-1-5

 

#include <stdio.h>

int main()
{
	int A = 0;
	int B = 0, C= 0;
	printf("정수 세가지를 입력하세요.");
	scanf_s("%d%d%d", &A, &B, &C);
	int result = (A - B) * (B + C) * (C % A);
	printf("(%d-%d)x(%d+%d)x(%d%%%d)=%d", A, B, B,C,C,A,result);
	
	return 0;
}
반응형
반응형

C언의 기본단위인 함수의 이해

 

우리가 수학을 공부하면서 알고있는 함수

" 15x-4=y "

에 x에 2를 넣는다면 y는 26일 것이다.  C언에서 x에 값을 삽입하는 것을 입력이라하고 y의 값을 출력이라고 한다.

적절한 입력과 그에 따른 출력이 존재하는 것을 가리켜 '함수'라고 한다.

 

함수 용어 정리

  • 함수의 정의 - 만들어진 함수, 실행이 가능한 함수를 뜻한다.
  • 함수의 호출 - 함수의 실행을 명령하는 행위이다.
  • 인자의 전달 - 함수의 실행을 명령할 때 전달하는 입력 값

C프로그램에서 함수는 어디에?

 

#include <stdio.h>

int main (void)
{
printf("Hi");
return 0;
//함수의 몸체
}

 int는 출력 형태

main은 함수이름

(void)는 입력형태를 뜻한다.

 

그리고 중괄호 안에 있는 부분이 그 함수의 기능을 나태는 부분이다. 이것을 함수의 몸체라고 한다.

 

몸체 부분의 문장 끝에 세미콜론 ;을 붙여줘야한다. 단 조건문이나 반복문 같은 컨트롤 문장에는 세미콜론이 붙지않는다.

 

return의 의미

 

함수 몸체의 맨 뒷부분의 보이는 return 0의 의미는

 

  • 함수를 호출한 영역으로 값을 전달(반환)
  • 현재 실행중인 함수의 종료

main에서 마지막에 0을 반환하는 이유

이 리턴값은 운영체제에게 전달되는데 0은 보통 정상적인 종료 상황에서 전달하는 값이므로 정상적으로 끝났다는것을 의미한다.

 

 

printf 함수의 기본적 이해

 

#include <stdio.h>

int main (void)
{
	printf("%d", 123); //1번
    printf("%d %d", 10, 20);  //2번
	
    return 0;

}

 

printf 함수에서 %d는 정수 데이터를 받아 출력하겠다는 것을 의미한다.

 

 1번은 123이 출력된다. %d가 하나밖에 없으니 첫번째로 받아온 정수형 인자 123을 받아 출력

 2번은 10 20이 출력될 것이다. 앞에 %d에 첫번째 인자 10, 두번째 %d에 두번째 인자 20을 받아 출력한다.

 

문제2-1-1

#include <stido.h>

int main()
{
	printf("홍길동\n홍 길 동\n홍  길  동\n");
    
    return 0;

}

문제2-1-1

#include <stido.h>

int main()
{
	printf("이름:고구마");
    printf("주소:부산시");
    printf("전화번호:010-1234-8667");
    
    return 0;

}

문제2-2-1

#include <stido.h>

int main()
{
	printf("제이름은 홍길동동입니다.");
    printf("제 나이는 %d살이고요.", 20);
    printf("제가 사는 곳의 번지수는 %d-%d입니다",123,456);
    
    return 0;

}

 문제2-2-2

#include <stido.h>

int main()
{
	printf("%dx%d=%d", 4,5,4*5);
  	printf("%dx%d=%d", 7,9,7*9);
    
    return 0;

}

 

출처 : 윤성우, 열혈 C프로그래밍, orange media 

 

반응형

+ Recent posts