Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 풀이
- 점프 투 파이썬 #패키지 # 비전공자
- eslint
- putchar()
- 쉼표필요
- 원 면적
- () (+) 차이
- perpectC
- 백엔드 개발자 #로드맵
- perpect C
- 정답
- +연산자 의미
- 오류
- 연습문제
- PERPECT
- 3장
- 실습예제
- eslint 쉼표필요 오류
- 3강
- c
- Chapter3
- JavaScript
- 티스토리 커버이미지 변경
- getchar()
- 평균
- 원 둘레
- 3판
- ㅔㄴ트 안잉
- 합
- 비트마스크
Archives
- Today
- Total
옥수수와 식빵 그리고 코딩
9장 실습예제 본문
p.6 다른 파일에서 구현된 함수 사용
소스파일 안에 서브 함수파일을 같이 만들어 놓으면 됨
//메인
# include <stdio.h>
void message();
void cacao();
int main(void)
{
puts("메인");
message();
cacao();
puts("메인종료");
return 0;
}
void message()
{
puts("\t메시지입니다");
}
//cacao 함수
void cacao()
{
puts("\t카톡입니다.");
}
p.11 함수의 정의와 호출
#include <stdio.h>
int main(void)
{
int a = 3, b = 5;
int add(int a, int b);
int sum = add(a, b);
printf("합: %d\n", sum);
return 0;
}
int add(int a, int b)
{
int sum = a + b;
return (sum);
}
int findMin(int x, int y)
{
int min = x < y ? x : y;
return(min);
}
p.12 함수 정의후 함수 선언하여 함수 호출
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int intpow(int m, int n);
int main(void)
{
int m, n;
printf("정수 m을 n번 제곱합니다.\n");
printf("정수 m,n입력: ");
scanf("%d %d", &m, &n);
printf("\n%d의 %d제곱은 %d입니다.\n", m, n, intpow(m, n));
return 0;
}
int intpow(int m, int n)
{
int mult = 1, i = 1;
for (i = 1; i <= n; i++)
{
mult *= m;
}
return (mult);
}
p.16 오류남 질문하고 다시 하기 -- 해결~!. 함수의 정의와 호출
오류난 이유
int add(int a, int b) //a, b는 매개 변수
{
return a+b;
}
//와
int add()
{
int a; //a, b는 지역 변수
int b;
return a+b;
}
이 둘은 같지 않음
//메인 파일
# include <stdio.h>
int add(int a, int b);
int findMax(int, int);
void printMin(int, int); //함수선언
int main(void)
{
int a = 10, b = 15;
int max = findMax(a, b);
printf("최대 : %d\n", max);
printf("합 : %d\n", add(a, b));
printMin(a, b);
return 0;
}
void printMin(int a, int b)
{
int min = a < b ? a : b;
printf("최소: %d\n", min);
}
//함수가 정의된 파일
int add(int a, int b)
{
int sum = a + b;
return (sum);
}
int findMax(int a, int b)
{
int max = a > b ? a : b;
return(max);
}
int findMin(int x, int y)
{
int min = x < y ? x : y;
return (min);
}
파일: 연습 - project1-메인.c, 소스.c
p.19 함수에서 배열인자 사용
#include <stdio.h>
int sumary(int ary[], int SIZE);
int main(void)
{
int point[] = { 95, 88, 76, 54, 85, 33, 65, 75, 99, 82 };
int arySize = sizeof(point);
printf("메인에서 배열 전체 크기: %d\n", arySize);
int aryLength = arySize / sizeof(int);
int sum = 0;
for (int i = 0; i < aryLength; i++)
sum += point[i];
printf("메인에서 구한 합 %d\n", sum);
printf("함수 sumary() 호출로 구한 합 %d\n", sumary(point, aryLength));
printf("함수 sumary() 호출로 구한 합 %d\n", sumary(&point[0], aryLength));
return 0;
}
int sumary(int ary[], int SIZE)
{
int sum = 0;
printf("함수에서 배열 전체 크기 :%d\n", (int)sizeof(ary));
for (int i = 0; i < SIZE; i++)
{
sum += ary[i];
}
return sum;
}
p. 21
2차원 배열을 인자로 하는 함수의 정의와 호출
#include <stdio.h>
double sum(double data[][2], int, int);
void printarry(double data[][2], int, int);
int main(void)
{
double x[][2] = { 11, 12, 21, 22, 31, 32 };
int rowsize = sizeof(x) / sizeof(x[0]);
int colsize = sizeof(x[0]) / sizeof(x[0][0]);
printf("2차원 배열의 자료값은 다음과 같다 \n");
printarry(x, rowsize, colsize);
printf("2차원 배열 원소 합은 %.3lf\n", sum(x, rowsize, colsize));
return 0;
}
double sum(double data[][2], int rowsize, int colsize)
{
double total = 0;
for (int i = 0; i < rowsize; i++)
for (int j = 0; j < colsize; j++)
total += data[i][j];
return total;
}
void printarry(double data[][2], int rowsize, int colsize)
{
for (int i = 0; i < rowsize; i++)
{
printf("%d행 원소: ", i + 1);
for (int j = 0; j < colsize; j++)
printf("x[%d][%d] = %5.2lf ", i, j, data[i][j]);
printf("\n");
}
printf("\n");
}
p. 22 배열에 모든 원소를 지정한 수 만큼 증가시키는 함수
#include <stdio.h>
void increment(int ary[], int n, int SIZE);
void printary(int data[], int SIZE);
int main(void)
{
int data[] = { 4, 7, 2, 3, 5 };
int aryLength = sizeof(data) / sizeof(int);
int inc = 3;
printary(data, aryLength);
increment(data, inc, aryLength);
printf("배열 원소에 각각 %d의 더한 결과 \n", inc);
printary(data, aryLength);
return 0;
}
void increment(int ary[], int n, int SIZE)
{
for (int i = 0; i < SIZE; i++)
ary[i] += n;
}
void printary(int data[], int SIZE)
{
for (int i = 0; i < SIZE; i++)
printf("%2d ", data[i]);
printf("\n");
}
p. 24 재귀함수를 이용하여 팩토리얼 구하기
#include <stdio.h>
int factorial(int);
int main(void)
{
for (int i = 1; i <= 10; i++)
printf("%2d! = %d\n", i, factorial(i));
return 0;
}
int factorial(int number)
{
if (number <= 1)
return 1;
else
return (number * factorial(number - 1));
}
p. 26 난수를 위한 함수 rand()이용
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("0~%5d 사이의 난수 8개 : rand()\n", RAND_MAX);
for (int i = 0; i < 8; i++)
printf("%5d ", rand());
puts("");
return 0;
}
p. 27 srand()로 시드 값을 먼저 지정한 후 1~100사이의 난수를 생성
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 100
int main(void)
{
long seconds = (long)time(NULL);
srand(seconds);
printf("0~%5d 사이의 난수 8개 : rand()\n", MAX);
for (int i = 0; i < 8; i++)
printf("%5d ", rand()% MAX + 1);
puts("");
return 0;
}
실행 할 때마다 다른 결과가 나옴
p.29 <ctype.h> 문자관련 함수
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
void print2char(char);
int main(void)
{
char ch;
printf("알파벳(종료x) 또는 다른 문자 입력하세요.\n");
do
{
printf("문자 입력 후 Enter: ");
scanf("%c", &ch);
getchar(); //Enter키 입력받음
if (isalpha(ch))
print2char(ch);
else
printf("입력: %c\n", ch);
} while (ch != 'x' && ch != 'X');
return 0;
}
void print2char(char ch)
{
if (isupper(ch))
printf("입력: %c, 반환: %c\n", ch, tolower(ch));
else
printf("입력: %c, 반환: %c\n", ch, toupper(ch));
return 0;
}
p. 31 1~100사이의 난수 알아 맞추기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 100
int main(void)
{
int guess, input;
srand((long)time(NULL));
guess = rand() % MAX + 1;
printf("1에서 %d사이에서 한 정수가 결정되었습니다.\n", MAX);
printf("이 정수는 무엇일까요? 맞춰보삼: ");
while (scanf("%d", &input))
{
if (input > guess)
printf("입력한 수 %d보다 작음. 다시 ㄱㄱ : ", input);
else if (input < guess)
printf("입력한 수 %d보다 큼. 다시 ㄱㄱ : ", input);
else
{
puts("정답");
break;
}
}
return 0;
}
'C > 2021겨울계절 - 프로그래밍 이해' 카테고리의 다른 글
10장 실습예제 (0) | 2022.01.04 |
---|---|
9장 실전예제 (0) | 2021.12.30 |
8장 실전예제 (0) | 2021.12.30 |
if else를 이용한 연봉 계산 (0) | 2021.12.29 |
7장 실습예제 (0) | 2021.12.29 |
Comments