본문 바로가기

C언어

2021 학기말고사

1. 소수의 합(감시값반복문) (난이도 하)

-1이 나올 때까지 정수(2 이상의)를 반복적으로 읽어 정수가 소수인 경우 합을 계산하려 한다.

 

예시시

입력 : 2 3 4 5 6 7 8 8 9 -1

출력 : 12

 

입력 : 11 22 33 -1

출력 : 11

 

입력: -1

출력: 0

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
	int num, i, total = 0;

	do {
		scanf("%d", &num);
		total += isPrime(num);
	} while (num != -1);

	printf("%d", total);

	return 0;
}

int isPrime(number) {
	int i;

	if (number == -1)
		return 0;

	if (number == 2)
		return 2;

	for (i = 2; i < number; i++)
		if (number % i == 0)
			return 0;

	return number;
}

 

2. 단어 속 문자 위치(문자열)

문자열(크기가 20 미만)을 입력 받고 

key 문자를 입력 받은 후 key문자가

이 문자열 안에 몇 번째에 있는지를 출력하는 프로그램을 작성하라.

key문자가 문자열 안에 없는 경우 -1을 출력한다.

key가 여러 번 나오는 경우 가장 앞에 것에 대한 위치를 출력한다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
	char s[20];
	char key, same = 0;
	int i;

	scanf("%s %c", s, &key);

	for (i = 0; i < 20; i++)
		if (s[i] == key) {
			same = 1;
			break;
		}

	if (same)
		printf("%d", i + 1);
	else
		printf("-1");
}

 

3. 상위하위 분류(배열)

배열의 개수 n(<=20)을 입력하고, 배열의 개수만큼 점수들을 입력받은 후 기준 점수 하나 입력 받아

그 기준점수 미만의 점수들을 먼저 출력한 후 

기준점수 이상의 점수들을 출력하는 프로그램을 작성하라.

점수들을 출력할 때 입력 받은 순서를 유지한다.

 

실행예

입력 :

10 <- 배열의 개수

2 9 3 8 4 7 5 6 1 10 <- 배열의 원소

5 <- 기준 점수

출력 : 

2 3 4 1

9 8 7 5 6 10

 

*출력할 때 숫자 사이에 공백을 1개씩 둔다

*기준 점수 미만의 점수들을 출력한 후에 줄을 바꾼 후 기준 점수 이상의 점수들을 출력한다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
	int n[20];
	int i, score, pointScore, num;

	for (i = 0; i < 20; i++)
		n[i] = 0;

	scanf("%d", &num);

	for (i = 0; i < num; i++) {
		scanf("%d", &score);
		n[i] = score;
	}

	scanf("%d", &pointScore);

	for (i = 0; i < num; i++)
		if (n[i] < pointScore)
			printf("%d ", n[i]);

	printf("\n");

	for (i = 0; i < num; i++)
		if (n[i] >= pointScore)
			printf("%d ", n[i]);

}

 

4. 숫자로 암호화

대문자들에 대해서

A는 1, B는 2, C는 3, ....Z는 26으로 수를 부여할 수 있다.

 

주어진 단어(대문자로 구성된) (크기가 20 미만)에 대해서 위의 매칭 방법대로 암호화하려 한다.

예를 들어 주어진 단어가 ABD이면 암호화 결과는 124가 된다.

 

가정1. 단어는 대문자로만 이루어진다.

가정2. A(1로 매칭)부터 I(9로 매칭)까지의 문자로만 이루어진다.

 

대문자로 이루어진 문자열 s를 위의 암호화규칙을 적용하여 숫자들로 된 문자열 e로 변환하는 함수

changeToDigitEncode를 작성하여 이를 제출하라. 원형은 아래와 같다.

  void changeToDigitEncode(char s[], char e[]);

 

실행예

입력 : ABBA 

출력 : 1221

 

입력 : BIG

출력 : 297

 

define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

 

void changeToDigitEncode(char s[], char e[]) // 이 함수를 제출

{

  //코드 작성

}

 

int main(void) // 변경하지 마라

{

char sentence[20], encoded[40];

 

scanf("%s", sentence);

changeToDigitEncode(sentence, encoded);

printf("%s\n", encoded);

}

'C언어' 카테고리의 다른 글

[JAVA] 3주차  (0) 2023.09.18
3주차 복습  (0) 2023.09.16
논리야 놀자 #3  (0) 2023.09.09
논리야 놀자 #2  (0) 2023.09.08
논리야 놀자 #1  (0) 2023.09.08