문제1. (함수 작성+포인터) swap 함수 만들기 (Call by Reference) -코드업-
(함수 작성+포인터) swap 함수 만들기 (Call by Reference)
$2$개의 정수 $a$, $b$가 공백으로 분리되어 입력된다.($-1,000,000 <= a, b <= 1,000,000$)
codeup.kr
#include <stdio.h>
// 이 부분에 들어가야 될 코드를 작성하여 제출
main()
{
int a, b;
scanf("%d%d", &a, &b);
myswap(&a, &b);
printf("%d %d", a, b);
}
- 중요 키워드는 포인터 a와 b에 비교 인것 같다.
- swap에 대한 사용 방법인거 같다.
우선 swap를 찾아보았다.
swap를 사용해 비교만 하면 문제를 해결할 수 있다.
코드는
- swap 방식을 사용해서 풀었다.
- 정수형 포인터 a와 b를 조건식 에서 (*a > *b)일때 swap하는 코드를 짜보았다.
문제2. (포인터) 부분 문자열 -코드업-
(포인터) 부분 문자열
어떤 문자열에서 부분문자열을 추출하여 출력하는 프로그램을 작성하시오. 단 배열 대신 동적메모리 할당방법을 사용하시오. 이 문제는 배열을 이용하여 풀 수 없습니다. 포인터(*)를 사용하시
codeup.kr
- 문자열을 입력 받는다. char 문자열로 100자 미만을 주면 될거 같다.
- 만약 abcdefg를 첫번째 입력으로 하고, 두 번째 입력으로 1 3을 할경우 어떻게 문자열이 입력 받은 정수로 구분 해서 출력할지 고민해봐야 겠다.
코드를 짜보았다.
문제3. 35.7 심사문제: 두 정수의 합 구하기 -코딩도장 심사문제-
dojang.io/mod/quiz/view.php?id=283
- malloc을 사용해서 동적 할당을 해주면되는 문제인거 같다.
코드를 짜보자.
- 빈칸에 들어갈 코드는 정수형 포인터를 메모리에 동적 선언하는 것이다.
문제 4. 동적 메모리 할당을 사용하여 숫자를 입력 받아 합산하기 - Do it C언어 문제 -
조건
- 사용자가 입력한 개수만큼 정수를 저장할 수 있는 메모리 할당,
- 중간에 9999를 누르면 종료함
#include <stdio.h>
#include <stdlib.h>
voin main()
{
int *pNum, count = 0, sum = 0, li = 0, i; // 정수형 포인트 변수와 합을 구할 변수를 선언
printf("할당 최대 개수를 입력 : ");
scanf("%d", &li);
pnum = (int *)malloc(sizeof(int)*li);
while(count < li) {
printf("(9999를 입력하면 종료) 숫자를 입력하세요. : ");
scanf("%d", pNum + count);
if(*(pNum + count) == 9999) break; // 9999에서 멈춤
count++; // 입력한 횟수 계산
}
for(i = 0; i < count; i++) {
if(i > 0) printf(" + "); // +(플러스) 문자를 출력
printf("%d, *(pNum + i)); // 입력한 숫자 출력
sum = sum + *(pNum + i); // 입력 숫자 합산
}
printf(" = %d\n", sum); // 변수 합산 출력
free(pNum); //메모리 할당 해제
}
'프로그래밍 > C 문제 100' 카테고리의 다른 글
문제2. 3 6 9 게임의 왕이 되자! (0) | 2021.02.28 |
---|---|
문제1 . 주사위를 2개 던지면? (0) | 2021.02.28 |