Return 키워드
#include <iostream>
#include <ppltasks.h>
int Add(int a, int b)
{
return a + b;
}
int main()
{
int a = 5;
int b = 6;
int ret = Add(a, b);
return 0;
}
JavaScript
복사
숫자채우기 연습
포인터 타입 변수
메모리에 위치를 가리키는(주소값) 을 저장할수 있는 변수
•
포인터 변수 : 자료형 뒤에 *을 붙여서 사용한다. (int* p)
•
변수의 주소값을 알고 싶을때는 해당 변수 앞에 &(주소 연산자)를 붙여주면 된다.
•
주소값은 일반적인 정수(값) 10진수와 구분하기 위해 16진수를 사용한다.
기본적인 사용과 16진수의 주소값
#include <iostream>
int main() {
int number = 0;
void* p = &number;
std::cout << &number;
// 000000AA32D9FC64
return 0;
}
C++
복사
포인터 변수에는 해당 주소 위치로 접근할수 있는 특별한 연산이 있다.
•
* 을 찍으면 해당 주소 위치로 이동할수 있게 된다.
하지만 중요한게 해당 주소로 이동했을시에 알맞은 크기만큼 접근하기 위해서
포인터 변수의 타입 앞 부분과 실제 변수의 타입을 맞추어 주어야한다.
다만 그냥 주소값을 저장하는 용도로 사용한다면 void*을 사용하면 된다.
변수의 자료형 일치
#include <iostream>
int main()
{
int number = 0;
// 주소값을 저장하는 용도로는 void* 사용 가능
void* p = &number;
// *p = 200;
// 해당 주소로 이동했을 때 알맞은 크기만큼 접근하기 위해서
// 포인터 변수의 자료형과 실제 변수의 자료형을 맞춰야 한다.
int* numberCopy = &number;
*numberCopy = 100;
char ch = 'A';
char* pCh = &ch;
return 0;
}
C++
복사
포인터를 이용한 값의 복사
#include <iostream>
// 얕은 복사
void swap(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
// 깊은 복사
void swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int num1 = 100;
int num2 = 200;
//swap(num1, num2);
swap(&num1, &num2);
return 0;
}
C++
복사
플래그 코딩 기법
#include <iostream>
// Flag 변수를 하나만들고 활용하는 방식
// 배열에 어떤 값이 존재하는지 판단할 때 사용한다.
int main()
{
int vect[7] = { 5,6,7,1,2,7,8 };
int flag = 0;
for (size_t i = 0; i < 7; i++)
{
if (vect[i] == 7)
{
flag = 1;
break;
}
}
if (flag == 1)
{
std::cout << "발견";
}
else
{
std::cout << "미발견";
}
return 0;
}
C++
복사
최대값, 최소값 찾기
#include <iostream>
int main()
{
int vect[7] = { 5,6,7,1,2,3,8 };
int max = 0;
for (int i = 0; i < 7; i++)
{
if (max < vect[i])
{
max = vect[i];
}
}
int min = 987654321;
for (int i = 0; i < 7; i++)
{
if (min > vect[i])
{
min = vect[i];
}
}
return 0;
}
C++
복사
연습문제
문제 1번
숫자 1개를 입력받으세요
짝수를 입력 받았다면 아래와 같이 2차 배열에 값을 채워주세요
(1중 for문을 사용하세요)
1 | |||
2 | |||
3 | |||
4 |
그 숫자가 홀수면 다음과 같이 값을 채워주세요
(1중 for문을 사용 해 주세요)
1 | |||
2 | |||
3 | |||
4 |
이렇게 채운 값을 2중 for문을 돌려 모두 출력 해 주세요
[힌트] 값을 채워야 하는 좌표를 먼저 메모장에 써 보세요
(0,0) > (1,1) > (2,2) > (3,3)
그러면 규칙이 보입니다. x, y변수를 잘 활용해서 문제를 풀어보세요
입력 예시
2
출력 예시
1 0 0 0
0 2 0 0
0 0 3 0
0 0 0 4
문제 2번
main함수에서는 getChar를 호출하고,
getChar에서 return받은 값을 출력 하면 됩니다.
getChar에서는
문자 2개를 입력 받고, 아스키코드값이 더 큰 문자를 return하면 됩니다.
입력 예시
A E
출력 예시
E
문제 3번
번호 순서대로 배열에 값을 채우려 합니다.
숫자 1개를 입력 받아주세요
입력받은 숫자를 5으로 나누었을때 나머지 값이 1이라면
9 | 6 | 3 |
8 | 5 | 2 |
7 | 4 | 1 |
입력받은 숫자를 5로 나누었을때 나머지 값이 2이라면
7 | 8 | 9 |
4 | 5 | 6 |
1 | 2 | 3 |
위에 두 경우가 아니라면
10 | 13 | 16 |
11 | 14 | 17 |
12 | 15 | 18 |
이렇게 값을 채우고
값을 채운 2차배열을 출력 해 주세요.
입력 예시
10
출력 예시
10 13 16
11 14 17
12 15 18
문제 4번
아래 그림과 같이 프로그램을 작성 해 주세요
main함수에서는 even(a / b); 또는 odd(a / b);를 호출하면 됩니다.
입력 예시
5 2
출력 예시
4
7
문제 5번
main 함수에서 GOP 함수와 SUM 함수를 호출 해 주세요.
GOP 함수에서는 숫자 2개를 입력 받고 곱을 return 해 주세요.
SUM 함수에서는 숫자 2개를 입력 받고 합을 return 해 주세요.
main 함수에서는 GOP 함수의 return값과 SUM 함수의 return 값을 비교 해 주세요
GOP 함수의 return 값이 크다면 "GOP>SUM" 출력
SUM 함수의 return 값이 크다면 "GOP<SUM" 출력
두 return 값이 같다면 "GOP==SUM" 출력 해 주세요
입력 예시
3 6
11 7
출력 예시
GOP==SUM
문제 6번
아래의 2차원 배열을 2중 for문을 이용하여
번호 순서대로 채우고, 출력하세요.
입력 값은 없습니다.
출력 예시
13 9 5 1
14 10 6 2
15 11 7 3
16 12 8 4
문제 7번
2중 for문을 돌려 번호 순서대로 값을 채워주세요
12 | 11 | 10 | 9 |
8 | 7 | 6 | 5 |
4 | 3 | 2 | 1 |
숫자 1개를 입력받으세요
그 숫자에 해당하는 열에 값을 0으로 채워주세요
그리고 그 결과를 출력 해 주세요
ex) 만약 숫자2를 입력받았다면
아래와 같이 2번 열을 모두 0으로 채우시면 됩니다.
12 | 11 | 10 | 9 |
8 | 7 | 6 | 5 |
4 | 3 | 2 | 1 |
ex) 만약 숫자 0을 입력받았다면
아래와 같이 0번 열을 모두 0으로 채우면 됩니다.
1 | 4 | 7 | 10 |
2 | 5 | 8 | 11 |
3 | 6 | 9 | 12 |
입력 예시
2
출력 예시
12 11 0 9
8 7 0 5
4 3 0 1
문제 7번
2중 for문을 돌려 번호 순서대로 값을 채워주세요
12 | 11 | 10 | 9 |
8 | 7 | 6 | 5 |
4 | 3 | 2 | 1 |
숫자 1개를 입력받으세요
그 숫자에 해당하는 열에 값을 0으로 채워주세요
그리고 그 결과를 출력 해 주세요
ex) 만약 숫자2를 입력받았다면
아래와 같이 2번 열을 모두 0으로 채우시면 됩니다.
12 | 11 | 0 | 9 |
8 | 7 | 0 | 5 |
4 | 3 | 0 | 1 |
ex) 만약 숫자 0을 입력받았다면
아래와 같이 0번 열을 모두 0으로 채우면 됩니다.
0 | 11 | 10 | 9 |
0 | 7 | 6 | 5 |
0 | 3 | 2 | 1 |
입력 예시
2
출력 예시
12 11 0 9
8 7 0 5
4 3 0 1
문제 8번
2차배열(4X4)에 숫자들을 입력 받아주세요.
다시 이중 for문을 돌려, 배열 안에 있는 숫자가
짝수이면 # 을,
홀수이면 @ 을
0이면 ! 를 출력하는 프로그램을 작성 해 주세요.
예를 들어
로 입력했다면, 아래와 같이 출력하면 됩니다.
@###
@@#@
####
@@!@
입력 예시
3 8 10 2
3 5 8 7
2 8 6 4
1 3 0 9
출력 예시
@###
@@#@
####
@@!@
문제 9번
전역변수를 사용하지 않는 문제입니다
숫자 하나를 입력받으면 그 숫자부터 1까지 출력하는 문제입니다
아래와 같이 함수를 만들어서 풀어주세요
입력 예시
5
출력 예시
5 4 3 2 1
문제 10번
main 함수에서 yesOrNo 함수를 호출 해 주세요.
yesOrNo 함수에서는 숫자 하나를 입력 받아 주세요.
입력받은 숫자 하나를 3으로 나누었을때
나머지가 0일 경우 7을
나머지가 1일 경우 35를
나머지가 2일 경우 50을 리턴하는 함수를 작성 해 주세요.
main함수에선 yesOrNo 함수가 리턴한 값을 출력 하시면 됩니다.
ex ) 5
50
ex) 3
7
입력 예시
6
출력 예시
7
문제 11번
main 함수에서 scoring 함수를 호출 해 주세요.
scoring 함수에서는 점수를 하나 입력 받습니다.
그 점수가 90 이상일 경우 A를,
그렇지 않고 80 이상일 경우 B를,
그렇지 않고 70 이상일 경우 C를,
나머지의 경우 D를 리턴 해 주세요.
main 함수에선 scoring에서 리턴 받은 값을 출력 해 주세요.
ex ) 95
A
ex) 55
D
입력 예시
85
출력 예시
B
문제 12번
main 함수에서 aToZ 함수를 호출 해 주세요.
aToZ 함수에서는
하나의 문자를 입력 받아 주세요.
입력 받은 문자가 A에 더 가까울 경우 A를 리턴 해 주세요.
만약 입력 받은 문자가 Z에 가까울 경우 Z를 리턴 해 주세요.
main 함수에서는 리턴받은 값을 출력 해 주세요.
ex)
M
A
ex)
X
Z
ex)
F
A
입력 예시
M
출력 예시
A
문제 1번
(전역변수를 사용하지 말고 풀어주세요)
input( ) 함수는
숫자 1개를 입력받고 그 숫자를 return하는 함수입니다.
main( ) 함수에서는
input함수를 3번 호출하여 숫자 3개를 입력받아주세요.
그리고 그 숫자 3개를 cals함수로 값을 보내주세요
ex)
a = input();
b = input();
c = input();
cals( ) 함수에서는
숫자 3개를 받고 그 합을 출력해주는 함수입니다
ex) cals(a, b, c);
[TIP]
1. KFC 함수로 값을 보내는 방법
- 함수 정의할 때
void KFC(int x, int y)
{
//...
}
•
함수 호출할 때
ABC(3, 5); //숫자 3과 5를 ABC 함수로 보낸다.
•
이 예제는 값 2개 보냈습니다. 호출할 때는 여러 값을 보낼 수 있습니다.
•
void KFC(int x, int y) 에서 "void"의 의미는 return 할 값이 없을 때 사용합니다
2. KFC함수에서 값을 return 받는 방법
•
함수 정의할 때
int KFC()
{
int x = 5;
return x;
}
•
함수 호출할 때
int a = KFC(); //KFC함수의 return값을 변수 a에 저장한다
•
int KFC( ) 에서 "int"의 의미는 숫자 형태의 값을 return 하겠다 라는 뜻입니다.
•
값을 보낼때와 달리, 값을 되돌려줄때는 오직 값 1개만 return할 수 있습니다.
3. KFC함수에서 값을 보내고, 결과를 받는 방법
•
함수 정의할 때
int KFC(int a, int b)
{
return a + b;
}
•
함수 호출할 때
int t = KFC(1, 2); // 숫자 2개를 보내고, 숫자 1개를 return받는 코드
입력 예시
1 1 2
출력 예시
4
문제 2번
[전역변수를 사용하지 말고 풀어주세요]
다음과 같은 함수를 만들어주세요
sum(int a, int b) 함수는 숫자 2개를 받고 그 합을 return 하는 함수입니다.
comp(int a, int b) 함수는 숫자 2개를 받고 그 차를 return 하는 함수입니다.
print(int t1, int t2) 함수는 숫자 2개를 받고 그 받은 숫자 2개를 출력하는 함수입니다.
main함수에서는 숫자 2개를 입력 받으세요
그리고 sum함수, comp함수를 호출해서 입력 받은 두 수의 합과 차를 구해주세요
그리고 print함수에 구한 합과 차를 보내고, 그 결과를 출력 해 주세요
입력 예시
5 1
출력 예시
합:6
차:4
문제 3번
이번 문제를 통해 포인터 개념을 한번 더 확실히 익혀봅니다.
꼼꼼히 읽어보면서 아래 문제를 풀어보고, 스스로 포인터 연습도 해 보세요
아래 그림과 같이 int형(int type) a와 char형 gd 변수를 만들고
숫자1개, 문자1개를 입력 받아 각각의 변수 안에 넣어주세요
아래는 숫자3과 문자 'A'를 입력받았을 때 그림입니다
그리고
int pointer형 변수 p를 선언하고 변수 a를 가르키도록 해 주세요
char pointer형 변수 t를 선언하고 변수 gd를 가르키도록 해 주세요
이제
포인터 변수를 이용해서 가르키고 있는 곳의 값을 출력 해 주세요
아래와 같이 출력하시면 됩니다
cout << *p;
cout << *t;
[TIP] "가르킨다" 라는 의미 (Teaching이 아닙니다 / Pointing 입니다)
포인터 변수 에다가 다른 변수의 주소를 넣는 것을 "가르킨다" 라고 표현합니다.
예로들어
int x = 10;
int *p; // integer pointer형 p를 선언
p = &x; // p 에다가 x의 주소를 넣음
변수 이름 앞에다가 &(엠퍼센드)를 붙이면 변수의 메모리 주소값을 나타냅니다.
이 주소값을 p라는 변수에다가 집어 넣은 것이죠
그리고 이 동작을 한번에 처리할 수 도 있습니다.
int *p = &x; // integer pointer형 p를 선언하고, x를 가르키게 한 코드
[TIP] 포인터와 일반 변수의 차이
포인터 변수나 일반 변수나 똑같은 변수입니다. 어떤 값을 저장하는 변수입니다.
int형 변수는 정수형 숫자값을 저장하고
char형 변수는 문자값를 저장하고
integer pointer형 변수는 int형 변수의 주소값을 저장하는 변수입니다
포인터 변수는 일반 변수와 달리 특별한 기능을 가지고 있습니다.
포인터가 어떤 변수를 가르키고 있을 때 (변수의 주소를 저장하고 있을 때)
포인터 앞에 *을 붙이면
가르키고 있는 변수를 원격 조정이 가능해지죠
예로 들자면
int x = 10;
int *p = &x; //p는 x를 가르킨다
*p = 10; // 능력사용! p가 가르키고 있는 곳의 값에다가 10을 넣는다.
(*p) ++; // 능력사용! p가 가르키고 있는 곳의 값에다가 1 더한다.
cout << *p; //능력사용! p가 가르키고 있는 곳의 값을 출력한다.
cout << x; //변수 x 출력
Trace를 해보면서 연습해보세요
입력 예시
3 A
출력 예시
3 A
문제 4번
문자 변수 a,b,c를 만들고 문자 3개를 입력 받으세요
그리고 char pointer형 변수 3개를 만들고 각각 문자 변수들을 가르켜주세요. (pointing)
pointer의 능력을 사용해서
각 문자의 다음 알파벳을 출력 해 주세요
[HINT] pointer 능력 사용해서 가르키고 있는 변수 값 원격으로 바꾸기
int *p = &x;
*p = 10;
이렇게 하면 변수 x에 값이 10이 들어가게 됩니다
[HINT2] 가르키는 곳에 ++ 하는 방법
int a = 10;
int *p = &a;
(*a)++;
주의 : *a++; 하면 안됩니다. (*a)++; 이렇게 해야 합니다.
•
a++; 이것은 *(a++); 이런 뜻이며, a 주소 값에 1을 더한다는 뜻입니다.
입력 예시
A B C
출력 예시
B C D
문제 5번
int형 변수 a, b 에 숫자 2개를 입력 받으세요
그리고 int pointer형 변수 p, t를 선언하고 각각 a, b를 가르켜주세요.(pointing)
이제 변수 a와 b를 Swap하려고 합니다.
•
p와 *t를 이용해서 두 값을 SWAP 하고 변수 *p와 *t를 출력 해 주세요
[HINT]
int temp;
temp변수와 *p, *t 를 가지고 SWAP을 할 수 있습니다
입력 예시
3 6
출력 예시
6 3
문제 6번
3 | 4 | 1 | 3 | 2 | 7 | 3 |
위 배열을 하드코딩 해 주세요
그리고 숫자 하나를 입력받아주세요
그 숫자가 존재하면 "발견" 출력
존재하지 않으면 "미발견" 출력
counting방식으로 풀지 말고, flag방식으로 문제를 풀어주세요
[TIP] Counting VS Flag
Counting방식은 내가 원하는 값이 몇개 있는지 세는 방식입니다
Flag방식은 스위치 변수를 하나 두고, 원하는 값이 발견되면 스위치를 켜는 방식입니다.
물론 Flag대신 Counting방식으로도 코딩할 수 있지만,
몇 개인지 셀때는 Counting
존재여부를 검사할때는 Flag
가독성을 위해 Flag를 쓸 때와 Counting을 할 때를 구분해서 써 주세요
입력 예시
3
출력 예시
발견
문제 7번
7칸짜리 int형 배열을 만들어주세요.
그리고 이 배열에 숫자 7개를 입력받아주세요
예로들어 4 1 5 2 3 2 2 를 입력받았다고하면
4 | 1 | 5 | 2 | 3 | 2 | 2 |
이렇게 채워질 수 있습니다.
이 상태에서 MAX값과 MIN값을 구해서 출력 해 주세요
입력 예시
4 1 5 2 3 2 2
출력 예시
MAX=5
MIN=1
문제 8번
다음 문장을 배열에 하드코딩 해 주세요
"StructPointer"
그리고 문자 하나를 입력 받으세요
그 문자가 만약 존재하면 "발견" 출력
존재하지않으면 "미발견" 출력
입력 예시
P
출력 예시
발견
문제 9번
for문을 돌려 문자 8개를 입력 받아주세요
만약 d T e a A B f a 를 입력했다면 아래와 같이 배열이 만들어집니다
d | T | e | a | A | B | f | a |
그리고 big, small이라는 8칸 짜리 배열 2개를 더 만들어주세요
만들어진 배열을 탐색하면서 대문자는 big 배열에 채워주세요
만들어진 배열을 탐색하면서 소문자는 small 배열에 채워주세요
big배열
T | A | B |
small 배열
d | e | a | f | a |
big 배열과 small 배열을 출력 해 주시면 됩니다.
입력 예시
d T e a A B f a
출력 예시
big=TAB
small=deafa
문제 10번
전역배열 vect[2][5] 를 하드코딩 해주세요.
3 | 2 | 6 | 2 | 4 |
1 | 4 | 2 | 6 | 5 |
그리고 아래 그림과 같이 코딩을 해 주세요.
main에서는 KFC함수를 호출하고, 그 결과를 return 받습니다.
return 받은 값이 1이라면 "값이 존재합니다" 를 출력
return 받은 값이 0이라면 "값이 없습니다"를 출력
[TIP] return 명령어에 대해서1
return 명령어는 함수를 종료시키면서 호출했던 곳으로 돌아가는 명령어입니다
void 함수에서는 return 명령어가 없어도 되지만, 일부러 넣는 경우들이 있습니다. (함수를 강제로 종료할 때)
예로들어
void KFC( )
{
cout << "#"; //실행 됨
return; //실행 됨
cout << "@"; //실행안되는 코드
}
C++
복사
여기서 KFC함수를 호출하면 #@가 뜨지않고, #만 뜨고 KFC함수가 바로 종료되게 됩니다.
그리고 KFC 함수는 void로 시작하는 함수이기 때문에 호출 한 함수로 돌려줄 값이 없습니다.
[TIP2] return 명령어에 대해서2
return 명령어는 무조건 맨 뒤에 있어야 하는 것이 아닙니다.
소스코드 중간 어디에서나 집어넣을 수 있고, 여러개 집어넣어도 됩니다.
함수를 즉시 종료 시킬 때 사용합니다.
//
int isCheck(int g)
{
if (g == 1)
{
return 0;
}
//
cout << "#";
return 100;
}
C++
복사
이 소스코드는
isCheck라는 함수에 숫자1을 보낼경우 --> return 0을 수행하고 바로 함수를 끝냅니다.
isCheck라는 함수에 숫자5를 보낼경우 --> #을 출력하고, return 100을 수행하고 바로 함수를 끝냅니다.
입력 예시
2
출력 예시
값이 존재합니다
문제 11번
아래와 같이 2차 배열을 하드 코딩 해 주세요
1 | 3 | 6 | 2 |
4 | 2 | 4 | 5 |
6 | 3 | 7 | 3 |
1 | 5 | 4 | 6 |
숫자 1개를 입력 받아주세요
입력받은 숫자보다 더 큰 값을 찾아서, 16칸 짜리 select 배열에 값을 채우는 문제입니다
만약 숫자 2를 입력 받았다면 select 배열에는 아래와 같이 채워집니다
3 | 6 | 4 | 4 | 5 | 6 | 3 | 7 | 3 | 5 | 4 | 6 |
만약 숫자 4를 입력 받았다면 select 배열에는 아래와 같이 채워집니다
6 | 5 | 6 | 7 | 5 | 6 |
입력 예시
4
출력 예시
6 5 6 7 5 6
복습문제
문제 1번
아래의 그림처럼 4 x 4 배열에 숫자를 번호 순서대로 채우고 출력 해 주세요.
입력 값은 없습니다.
출력 예시
2 10 18 26
4 12 20 28
6 14 22 30
8 16 24 32
문제 2번
2차배열에 값을 채워주세요 (번호 순서대로 값을 채워주세요)
21 | 16 | 11 | 6 | 1 |
22 | 17 | 12 | 7 | 2 |
23 | 18 | 13 | 8 | 3 |
24 | 19 | 14 | 9 | 4 |
25 | 20 | 15 | 10 | 5 |
숫자 하나를 입력받으세요
그 숫자에 해당하는 행 전체를 입력받은 숫자로 채워주세요
ex) 만약 숫자 1을 입력받았다면 1번 행을 모두 1로 채우면 됩니다
21 | 16 | 11 | 6 | 1 |
1 | 1 | 1 | 1 | 1 |
23 | 18 | 13 | 8 | 3 |
24 | 19 | 14 | 9 | 4 |
25 | 20 | 15 | 10 | 5 |
ex) 만약 숫자 3을 입력받았다면 3번 행을 모두 3으로 채우면 됩니다
21 | 16 | 11 | 6 | 1 |
22 | 17 | 12 | 7 | 2 |
23 | 18 | 13 | 8 | 3 |
3 | 3 | 3 | 3 | 3 |
25 | 20 | 15 | 10 | 5 |
입력 예시
3
출력 예시
21 16 11 6 1
22 17 12 7 2
23 18 13 8 3
3 3 3 3 3
25 20 15 10 5
문제 3번
아래 그림과 같은 Fruit 구조체 타입을 만들어주세요
Fruit 구조체 변수 banana, apple을 만들어 주세요.
이제 banana.size와 apple.size를 입력 받고, 각 과일의 가격을 계산하여 price에 넣어주세요.
바나나 가격 = banana.size * 250
사과 가격 = apple.size * 500
이제 banana.price와 apple.price 의 합을 출력하면 됩니다.
입력 예시
10
20
출력 예시
12500원
문제 4번
숫자 3개를 입력 받으세요.
3 x 4 배열을 만들고,
첫번째 입력받은 숫자를 이용해서 맨 윗줄을 아래와 같이 채워주세요.
두번째 입력받은 숫자를 이용해서 중간줄을 아래와 같이 채워주세요.
세번째 입력받은 숫자를 이용해서 아랫줄을 아래와 같이 채워주세요.
예로들어 1 11 7 이렇게 숫자 3개가 입력 되면
1 | 2 | 3 | 4 |
11 | 12 | 13 | 14 |
7 | 8 | 9 | 10 |
입력 예시
1 11 7
출력 예시
1 2 3 4
11 12 13 14
7 8 9 10
문제 5번
2차배열에 아래와 같이 2중 for문으로 값을 채워주세요
10 | 16 | 22 |
11 | 17 | 23 |
12 | 18 | 24 |
13 | 19 | 25 |
14 | 20 | 26 |
15 | 21 | 27 |
변수 a, b에 숫자를 입력받아주세요 (숫자 2개 입력받아주세요)
그리고 a줄 ~ b줄까지 숫자 7로 채우고 출력 해 주세요
(a <= b)
만약 2 4를 입력받았다면 아래와 같이 2번줄 부터 4번줄까지 숫자7로 채우면 됩니다.
10 | 16 | 22 |
11 | 17 | 23 |
7 | 7 | 7 |
7 | 7 | 7 |
7 | 7 | 7 |
15 | 21 | 27 |
입력 예시
2 4
출력 예시
10 16 22
11 17 23
7 7 7
7 7 7
7 7 7
15 21 27
문제 6번
BBQ라는 구조체 타입을 만들어주세요.
구조체 변수 g를 만들고, 각 칸에 들어갈 숫자를 순서대로 입력 받으세요. (숫자 4개 입력)
이제 g.data 배열의 합계를 for문으로 구해서 출력하고, g.x값을 출력 해 주세요.
입력 예시
3
5 4 1
출력 예시
10 3
문제 7번
아래 그림과 같이 코딩을 해 주세요
7 x 5 배열은 전역배열로 만들어주세요
(전역변수는 쓰지 말아주세요)
main함수에서는
INPUT함수 / PROCESS함수 / OUTPUT함수를 각각 호출할 때
값을 넘기고 전달받는 부분이 소스코드에 들어가야 합니다.
입력 예시
1
출력 예시
3
문제 8번
3 x 5 문자배열을 하드코딩 해 주세요 (전역배열 사용)
그리고 문자 하나를 입력받는데 그 문자가 존재하는지 아닌지 출력 하는 문제입니다.
(전역변수는 사용하지마세요)
아래 규칙에 맞게 함수를 만들어주시면 됩니다
[CHECK함수 힌트]
**void CHECK(char ch)**
{
for (y = 0; y < 3; y++) {
for (x = 0; x < 3; x++) {
if (vect[y][x] == ch) {
**return 1;**
}
}
}
**return 0;**
}
C++
복사
입력 예시
A
출력 예시
있음
문제 9번
[전역변수를 사용하지 말고 풀어주세요]
main함수에서 숫자 1개를 입력받으세요
run함수에 입력받은 숫자를 보내고 run함수에서 다음과 같이 처리를 해 주세요
run함수 안에서는...
[3x3] 2차배열을 만들고 아래 규칙에 따라 값을 채우고, 출력 해 주세요
만약 입력받은 숫자가 10보다 작으면 (< 10)
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
만약 입력받은 숫자가 10보다 크면 (>=10)
3 | 2 | 1 |
6 | 5 | 4 |
9 | 8 | 7 |
•
번호 순서대로 배열에 값을 넣어주시면 됩니다
입력 예시
15
출력 예시
321
654
987
문제 1번
아래 문자 배열을 하드코딩 해 주세요
D | F | G | D | A | Q |
그리고 문자 2개를 변수 a, b에 입력 받으세요
만약 a ~ b 사이에 있는 문자가 발견 되면 (a <= 문자 <= b)
"발견!!!" 출력
그렇지 않으면 "미발견!!!" 을 출력 해 주세요
ex) 예로들어서 C E를 입력받았다면
C ~ E 사이에 있는 문자 D가 배열에 존재하므로
"발견!!!"을 출력하시면 됩니다
•
모든 소스 코드는 지우고 처음부터 다시 작성 하는것 잊지 않으셨죠!?
우리의 실력 향상을 위해 모든 소스코드는 항상 처음부터 짜야 합니다.
이 습관을 기르는게 정말 중요해서, 반복적으로 강조를 하고 있습니다.
(프로그래머의 악습관 : 코드 의존성 습관 제거)
지금까지 모든 소스코드를 처음부터 작성하신 분은 잘 하고계신겁니다!
만약 그동안 소스코드를 수정해서 숙제를 제출 하셨다면,
지금부터라도 모든 소스 코드를 다 지우고 작성 해 주세요.
입력 예시
A C
출력 예시
발견!!!
문제 2번
1 | 1 | 1 |
1 | 2 | 1 |
3 | 6 | 3 |
위 배열을 전역배열로 하드코딩해 주세요 (전역변수 사용금지)
그리고 아래의 규칙에 따라, 입력 받은 숫자가 몇 개 있는지 찾아 출력하는 프로그램을 작성 해 주세요
main함수에서는
- 숫자 하나 입력
- Count(x) 호출
- 개수를 return받고 출력하기
Count함수에서는
- 전달받은 값이 3 x 3 배열 안에 몇 개 있는지 count
- count한 값을 return 하기
입력 예시
1
출력 예시
5
문제 3번
A | 1 | 1 | 1 | 5 | A | w | z |
위 배열을 하드코딩 해 주세요
그리고 문자 하나를 입력받으세요
입력받은 문자가 3개 이상 존재한다면 "THREE" 출력
입력받은 문자가 2개 존재한다면 "TWO" 출력
입력받은 문자가 1개 존재한다면 "ONE" 출력
입력받은 문자가 없다면 "NOTHING" 출력
입력 예시
A
출력 예시
TWO
문제 4번
2차배열을 하드코딩 해 주세요
a | b | a | c | z |
c | t | a | c | d |
c | c | c | c | a |
그리고 문자 1개를 입력받아주세요
입력받은 문자가
3개 이상이면 "이야"
5개 이상이면 "와우"
7개 이상이면 "세상에"
위 3가지 경우가 아니라면 "이런"를 출력 해 주세요
를 출력 해 주세요
입력 예시
c
출력 예시
세상에
문제 5번
숫자 6개를 입력받아주세요
만약 3 1 5 0 0 3 을 입력하였다면 아래와 같이 채워집니다
3 | 1 | 5 |
0 | 0 | 3 |
입력 받은 값들을 출력하는데
숫자 0은 '#'으로 바꾸어서 출력 해 주세요
[HINT] 2중 for문을 돌면서 출력을 합니다
만약 지금 출력할 값이 0 이 아니면 배열 값을 출력하고
지금 출력할 값이 0이라면 #을 출력하면 됩니다
입력 예시
3 1 5 0 0 3
출력 예시
315
##3
문제 6번
main함수에서 아래와 같이 배열 5칸을 선언 및 하드코딩 해 주세요
3 | 5 | 1 | 2 | 7 |
그리고 같은 사이즈의 배열을 하나 더 만들고, 숫자 5개를 이 배열에 입력 받아주세요
만약 3 5 1 1 1 을 입력하였다면 아래와 같이 채우면 됩니다
3 | 5 | 1 | 1 | 1 |
이제 CompareGo함수로 배열을 모두 전달 해 주세요
CompareGo 함수에서 전달받은 두개의 배열이 완전히 똑같다면 "두배열은완전같음" 출력
다른 숫자가 하나라도 있다면 "두배열은같지않음" 출력
[HINT] 두 배열이 완전히 같은지 다른지 알기 위해서는
flag를 써서, 다른 글자가 존재 하는지를 찾으면 됩니다.
다른 글자가 존재한다면 flag를 1 켜고 break
입력 예시
3 5 1 1 1
출력 예시
두배열은같지않음
문제 7번
a | b | E |
E | 2 | W |
3 | 2 | 4 |
위 2차배열을 하드코딩 해 주세요 그리고 출력을 해 주세요
출력을 할 때 다음 규칙을 적용 시켜주세요
- 대문자는 소문자로 바꾸어 출력
- 소문자는 대문자로 바꾸어 출력
- 숫자로 된 문자는 5를 더한 값으로 바꾸어 출력 해 주세요
•
배열 값을 바꾸는 것이 아니라,
배열 값을 그대로 둔 채, 문자를 바꾸어서 출력만 합니다.
출력 예시
A B e
e 7 w
8 7 9
문제 8번
전역배열을 하나를 아래와 같이 만들어주세요
이 문제는 전역변수를 쓰지않고 푸는 문제입니다 (전역배열만 써주세요)
a | b | d |
e | w | z |
q | v | a |
Input함수에서 대문자 1개를 입력받아주세요
Process함수에 입력받은 문자를 전달 해 주세요
그리고 전달받은 대문자를 소문자로 바꾸고, 그 소문자가 배열에
존재한다면 "존재", 없다면 "없음"을 출력 해 주세요
ex) 만약 대문자 A를 입력받는다면
소문자인 a가 배열에 존재하는지 찾으면 됩니다.
입력 예시
A
출력 예시
존재
문제 9번
3 | 1 | 6 |
7 | 8 | 4 |
9 | 2 | 3 |
위 2차배열을 하드코딩 해 주세요
변수 a, b, c에 숫자 3개를 입력받아주세요
입력받은 값을 활용해서 (a,b) 좌표에 값 c를 넣어주세요
그리고 MAX와 MIN값을 구한 후 그 합을 출력 해 주세요
ex) 만약 0 2 0 을 입력했다면 (0, 2) 좌표에 숫자 0을 먼저 넣어주세요
그리고 전체 3x3 배열에서 MAX와 MIN값을 찾으면 됩니다.
MAX = 9, MIN = 0 이 됩니다. 따라서 출력은 9 + 0 = 9를 출력하면 됩니다.
입력 예시
0 2 0
출력 예시
9
문제 10번
2 x 3 배열에 숫자 6개를 입력받아주세요
맨 뒤에서 부터 순차적으로 입력받으시면 됩니다
예로들어
만약 7 2 3 4 5 6을 입력받았다면 아래와 같이 채워집니다
6 | 5 | 4 |
3 | 2 | 7 |
그리고 6칸짜리 int형 배열을 하나 더 만들고,
위 2차 배열값들을 6칸 짜리 int배열에 값을 옮겨주세요 (2중for문 사용)
6 | 5 | 4 | 3 | 2 | 7 |
그리고 [0]과 [5]번 index의 값을 SWAP 해 주세요
이렇게 만들어진 최종 1차원 배열 값을 출력 해 주세요
입력 예시
7 2 3 4 5 6
출력 예시
7 5 4 3 2 6