반응형
*C언어 함수(심화)
// 문제 : 입력받은 숫자가 10이라고 할때 1부터 10 사이에 존재하는 모든 소수를 출력하는 함수 구현
#include <stdio.h>
#pragma warning (disable: 4996)
// 소수 판별함수
int is_prime_number(int number) {
if ( number <= 1 ) {
return 0;
}
for ( int i = 2; i < number; i++ ) {
if ( number % i == 0 ) {
// 리턴을 하면 함수가 그 즉시 종료
return 0;
}
}
return 1;
}
// 입력된 숫자 범위 내 숫자 확인 및 소수 판별함수에 전달하여 값 호출
void print_1_to_n_prime_numbers(int num) {
for ( int i = 1; i <= num; i++ ) {
if ( is_prime_number(i) ) {
printf("%d\n", i);
}
}
}
int main(void) {
print_1_to_n_prime_numbers(100);
return 0;
}
// 문제 : 1부터 n 사이의 수 중에서 소수의 개수 반환하는 함수 `get_1_to_n_prime_numbers_count` 구현.
#include <stdio.h>
#pragma warning (disable: 4996)
// 소수 판별 함수
int is_prime_number(int number) {
if ( number <= 1 ) {
return 0;
}
for ( int i = 2; i < number; i++ ) {
if ( number % i == 0 ) {
// 리턴을 하면 함수가 그 즉시 종료
return 0;
}
}
return 1;
}
// 1부터 n 사이의 수 중에서 소수의 개수 반환하는 함수
int get_1_to_n_prime_numbers_count(int n) {
int count = 0;
for(int i = 1; i <= n; i++) {
if(is_prime_number(i)) {
count++;
}
}
return count;
}
int main() {
int count;
int number;
number = 1000;
count = get_1_to_n_prime_numbers_count(number);
printf("1부터 %d사이에 존재하는 소수의 개수 : %d개\n", number, count);
// 출력 => 1부터 1000사이에 존재하는 소수의 개수 : 168개
number = 2000;
count = get_1_to_n_prime_numbers_count(number);
printf("1부터 %d사이에 존재하는 소수의 개수 : %d개\n", number, count);
// 출력 => 1부터 2000사이에 존재하는 소수의 개수 : 303개
return 0;
}
// 문제 : 1부터 n 사이의 수 중에서 소수의 합을 반환하는 함수 `get_1_to_n_prime_numbers_sum` 구현
#include <stdio.h>
#pragma warning (disable: 4996)
// 소수 판별함수
int is_prime_number(int number) {
if ( number <= 1 ) {
return 0;
}
for ( int i = 2; i < number; i++ ) {
if ( number % i == 0 ) {
// 리턴을 하면 함수가 그 즉시 종료
return 0;
}
}
return 1;
}
// 1부터 n 사이의 수 중에서 소수의 개수 반환하는 함수
int get_1_to_n_prime_numbers_sum(int n) {
// 구현
int sum = 0;
for ( int i = 0; i <= n; i++ ) {
if(is_prime_number(i)) {
sum += i;
}
}
return sum;
}
int main() {
int sum;
int number;
number = 1000;
sum = get_1_to_n_prime_numbers_sum(number);
printf("1부터 %d사이에 존재하는 소수의 개수 : %d개\n", number, sum);
// 출력 => 1부터 1000사이에 존재하는 소수의 합 : 76127
number = 2000;
sum = get_1_to_n_prime_numbers_sum(number);
printf("1부터 %d사이에 존재하는 소수의 개수 : %d개\n", number, sum);
// 출력 => 1부터 2000사이에 존재하는 소수의 합 : 277050
return 0;
}
// 문제 : 3가지 다른 방법으로 a부터 z까지 출력하는 함수 구현
// 힌트 : 사실 C언어에서 'a'는 따로 존재하지 않는다. 'a'는 사실 97의 또 다른 이름이다.
// 힌트 : C언어에서 'a'는 97과 완전히 같은 뜻이다.
// 힌트 : C언어에서 'b'는 98과 완전히 같은 뜻이다.
#include <stdio.h>
#pragma warning (disable: 4996)
void print_a_to_z_v1() {
printf("abcdefghijklmnopqrstuvwxyz\n");
}
void print_a_to_z_v2() {
for ( int i = 97; i < 97 + 26; i++ ) {
printf("%c", i);
}
printf("\n");
}
void print_a_to_z_v3() {
for ( int i = 'a'; i <= 'z'; i++ ) {
printf("%c", i);
}
printf("\n");
}
int main(void) {
printf("== 정답 v1 ==\n");
print_a_to_z_v1();
printf("== 정답 v2 ==\n");
print_a_to_z_v2();
printf("== 정답 v3 ==\n");
print_a_to_z_v3();
return 0;
}
// 문제 : n부터 m 사이에 존재하는 정수의 합을 반환하는 함수를 만들어주세요.
#include <stdio.h>
#pragma warning (disable: 4996)
int print_n_to_m_number_sum(int a, int b) {
int sum = 0;
for ( int i = a; i <= b; i++ ) {
sum += i;
}
return sum;
}
int main(void) {
printf("1부터 10사이에 존재하는 정수의 합 : %d\n", print_n_to_m_number_sum(1,10));
printf("1부터 50사이에 존재하는 정수의 합 : %d\n", print_n_to_m_number_sum(1,50));
printf("1부터 100사이에 존재하는 정수의 합 : %d\n", print_n_to_m_number_sum(1,100));
return 0;
}
// 문제 : n부터 m 사이에 존재하는 소수의 합을 반환하는 함수를 만들어주세요.
#include <stdio.h>
#pragma warning (disable: 4996)
int is_prime_number(int number) {
if ( number <= 1 ) {
return 0;
}
for ( int i = 2; i < number; i++ ) {
if ( number % i == 0 ) {
return 0;
}
}
return 1;
}
int print_n_to_m_number_sum(int a, int b) {
int sum = 0;
for ( int i = a; i <= b; i++ ) {
if(is_prime_number(i)) {
sum += i;
}
}
return sum;
}
int main(void) {
printf("1부터 10사이에 존재하는 정수의 합 : %d\n", print_n_to_m_number_sum(1,10));
printf("1부터 50사이에 존재하는 정수의 합 : %d\n", print_n_to_m_number_sum(1,50));
printf("1부터 100사이에 존재하는 정수의 합 : %d\n", print_n_to_m_number_sum(1,100));
return 0;
}
// 문제 : 별찍기(직사각형)
#include <stdio.h>
#pragma warning (disable: 4996)
void print_rect(int a, int b) {
printf("== a = %d, b = %d ==\n", a, b);
for ( int i = 1; i <= b; i++ ) {
for ( int k = 1; k <= a; k++ ) {
printf("*");
}
printf("\n");
}
}
int main(void) {
print_rect(3, 5);
// 출력
/*
***
***
***
***
***
*/
print_rect(5, 2);
// 출력
/*
*****
*****
*/
print_rect(10, 3);
// 출력
/*
**********
**********
**********
*/
return 0;
}
// 문제 : 별찍기(삼각형)
#include <stdio.h>
#pragma warning (disable: 4996)
void print_tri(int num) {
for( int i = 1; i <= num; i++ ) {
for ( int k = 1; k <= i; k++ ) {
printf("*");
}
printf("\n");
}
}
int main(void) {
print_tri(3);
// 출력
/*
*
**
***
*/
print_tri(5);
// 출력
/*
*
**
***
****
*****
*/
print_tri(7);
// 출력
/*
*
**
***
****
*****
******
*******
*/
return 0;
}
// 문제 : 별찍기(삼각형 - 심화)
#include <stdio.h>
#pragma warning (disable: 4996)
void print_tri(int num) {
printf("num : %d 일때\n", num);
for( int i = 1; i <= num; i++ ) {
for( int k = num; k >= 1; k-- ) {
if( k <= i ) {
printf("*");
} else {
printf(" ");
}
}
printf("\n");
}
}
int main(void) {
print_tri(3);
// 출력
/*
*
**
***
*/
print_tri(5);
// 출력
/*
*
**
***
****
*****
*/
print_tri(7);
// 출력
/*
*
**
***
****
*****
******
*******
*/
return 0;
}
// 문제 : 양의정수 제곱근을 반환하는 함수를 구현해주세요.
// 조건 : 양의 정수 제곱근이 없다면 -1을 리턴
#include <stdio.h>
#pragma warning (disable: 4996)
int get_sqrt(int num) {
for ( int i = 1; i <= num; i++ ) {
if( i * i == num ) {
printf("%d", i);
return i;
}
}
return -1;
}
int main(void) {
int rs;
int num;
num = 4;
rs = get_sqrt(num);
printf("%d의 제곱근은 %d 입니다.\n", num, rs);
// 출력 => 4의 제곱곤은 2 입니다.
num = 5;
rs = get_sqrt(num);
printf("%d의 제곱근은 %d 입니다.\n", num, rs);
// 출력 => 5의 제곱곤은 -1 입니다.
num = 6;
rs = get_sqrt(num);
printf("%d의 제곱근은 %d 입니다.\n", num, rs);
// 출력 => 6의 제곱곤은 -1 입니다.
num = 9;
rs = get_sqrt(num);
printf("%d의 제곱근은 %d 입니다.\n", num, rs);
// 출력 => 9의 제곱곤은 3 입니다.
return 0;
}
반응형
'프로그래밍 > C언어' 카테고리의 다른 글
C언어 변수타입, C언어 변수타입 크기확인 (0) | 2020.05.23 |
---|---|
컴퓨터 구성, 메모리, C언어 포인터 (0) | 2020.05.23 |
C언어 함수 (0) | 2020.05.20 |
C언어 이중반복문(While, for) (0) | 2020.05.19 |
C언어 반복문 심화 문제 (0) | 2020.05.19 |