목차
1. 1~9단까지의 구구단 배열 만들고, 두 숫자를 대입하여 구구단을 계산하기
♣결과
♧코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int gugu[10][10];
int i, k;
for (i = 1; i <= 9; i++) {
for (k = 1; k <= 9; k++) {
gugu[i][k] = i * k;
}
}
printf("알고싶은 구구단을 입력하시오(예시: 2 3): ");
int n, m;
scanf("%d%d", &n, &m);
printf("%dX%d=%d \n", m, n, gugu[m][n]);
return 0;
}
//olivia_codingschool
2. 두 행렬 곱하기
♣결과
♧코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define ROWS 3
#define COLS 3
int main(void) {
int i, j, k;
//첫 번째 행렬 구하기
int s1[ROWS][COLS];
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
s1[i][j] = i + 1;
printf("%d ", s1[i][j]);
}
printf("\n");
}
printf("\n");
//두 번째 행렬 구하기
int s2[ROWS][COLS];
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
s2[i][j] = i + 2;
printf("%d ", s2[i][j]);
}
printf("\n");
}
printf("\n");
// 행렬 곱하기
int result[ROWS][COLS];
for (i = 0; i < ROWS; i++) {
for (k = 0; k < COLS; k++) {
int sum = 0;
for (j = 0; j < COLS; j++) {
sum += s1[i][j] * s2[j][k];
}
result[i][k] = sum;
}
}
// 결과값 보기
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
//olivia_codingschool
3. 전치행렬 구하기
-전치행렬이란?
전치행렬(transpose matrix)은 행렬의 열과 행을 서로 바꾼 행렬을 말합니다. 즉, 만약 A가 크기가 m x n인 행렬이라면, A의 전치행렬인 A^T는 크기가 n x m인 행렬입니다.
전치행렬은 각 요소의 위치를 바꾸는 것이기 때문에 대각선 요소를 제외한 나머지 요소는 대칭이 됩니다. 따라서, 대칭행렬을 다룰 때 전치행렬을 이용하면 계산이 간단해지는 경우가 있습니다.
전치행렬은 행렬 연산에서 유용하게 사용되며, 행렬의 곱셈, 행렬의 역행렬 계산 등 다양한 분야에서 활용됩니다. 또한, 컴퓨터 과학에서도 전치행렬은 배열이나 행렬 데이터를 처리할 때 자주 사용됩니다.
♣결과
♧코드
#define _crt_secure_no_warnings
#include <stdio.h>
#define size 4
int main(void)
{
int i, j;
int s[size][size];
int k[size][size];
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++) {
s[i][j] = j+1;
printf("%d ", s[i][j]);
}
printf("\n");
}
printf("\n");
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++) {
k[i][j] = s[j][i];
printf("%d ", k[i][j]);
}
printf("\n");
}
return 0;
}
//olivia_codingschool
4. 0-9까지 난수를 100번 생성하여, 가장 많이 생성된 수를 출력하기
♣결과
♧코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
//매 프로그램 실행마다 난수발생
srand(time(NULL));
//배열 초기값을 모두 0으로 설정
int s[10] = { 0,0 };
int i, number, max_value;
int random_number;
//0~9 사이 난수 발생 시키기
for (i = 0; i < 100; i++) {
random_number = rand() % 10;
s[random_number] += 1;
}
// 임시값 설정하기
number = -1;
max_value = s[0];
// 배열에서 최대값구하고 해당 인덱스와 함께 출력하기
printf("배열은 다음과 같다.");
for (i = 0; i < 10; i++) {
printf("%d ", s[i]);
if (s[i] > max_value) {
max_value = s[i];
number = i;
}
}
printf("\n%d가 %d번 나왔습니다", number, max_value);
return 0;
}
//olivia_codingschool
5. 주사위를 던져서 한 면이 나올 확률 구하기
-잘 만들어진 주사위라면 1/6에 가까워진다.
count 횟수를 조절하며 확률을 비교해보자.
♣결과
♧코드
#define _crt_secure_no_warnings
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define size 6
int main(void)
{
// 배열 초기화하기, 초기값으로 0을 입력
int arr[6] = {0,0,0,0,0,0};
int i;
int count = 1000000;
int random_number;
double pb;
// 0~5 중의 난수 구하고, 나온 횟수 구하기
srand(time(NULL));
for (i = 0; i < count; i++) {
random_number = rand() % 6;
arr[random_number] += 1;
}
// 나온 횟수 확인하기
for (i = 0; i < size; i++) {
printf("%d %d\n", i + 1, arr[i]);
}
// 한 면이 나올 확률 구하기
pb = (double)arr[0] / count*100;
printf("약 %.2lf%입니다", pb);
return 0;
}
//olivia_codingschool
'C언어 > 참고서: C언어 콘서트' 카테고리의 다른 글
C언어 38차시 함수, 함수헤더, 파라미터, parameter, 함수몸체, 함수호출, call, argument (0) | 2023.04.04 |
---|---|
C언어 37차시 배열 연습문제 3, 분산, 표준편차 (0) | 2023.04.04 |
C언어 35차시 배열 연습문제 1 (0) | 2023.04.04 |
C언어 34차시 배열 인덱스의 범위 넘어갈 때 발생하는 문제 (0) | 2023.03.29 |
C언어 33차시 다차원 배열, 2차원 배열, 배열의 초기화, 행렬 (0) | 2023.03.29 |