[C] 공부한 내용 정리

2021. 12. 7. 23:06·C
학생 정보 입력 받기

#define _CRT_SECURE_NO_WARNINGS    
#include <stdio.h>

typedef struct _Student
{
    char name[10];
    int age;
    int grade;
    float kor;
    float eng;
    float math;
} Student;

int main(void)
{
    Student student;
    printf("[학생] \n");

    printf("이름 : ");
    scanf("%s", student.name);

    printf("나이 : ");
    scanf("%d", &student.age);

    printf("학년 : ");
    scanf("%d", &student.grade);

    printf("국어 : ");
    scanf("%f", &student.kor);

    printf("영어 : ");
    scanf("%f", &student.eng);

    printf("수학 : ");
    scanf("%f", &student.math);

    float total = (student.kor + student.eng + student.math) / 3;
    printf("평균 점수 : %.1f", total);
    
    return 0;
}

 

행과 열 바꾸기

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void)
{
	int nums[4][4];
	int i, j;

	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 4; j++)
		{
			scanf("%d", &nums[i][j]);
		}
	}

	printf("\n");
	printf("[변경 전]\n");

	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("%3d", nums[i][j]);
		}
		printf("\n");
	}
	printf("\n");
	printf("[변경 후]\n");

	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("%3d", nums[j][i]);
		}
		printf("\n");
	}
	return 0;
}

 

최대값 구하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void maxnumber(int* num, int** max);

int main(void)
{
	int num[5];
	int* m = &num[0];
	int** max = &m;

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

	maxnumber(num, max);
	return 0;
}

void maxnumber(int* num, int** max)
{
	for (int i = 1; i < 5; i++)
	{
		if (num[i] > **max)
		{
			**max = num[i];
		}
	}
	printf("\n최댓값 : %d", **max);
}

 

행렬 곱 구하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int a[3][3];
	int b[3][3];
	int i, j, k;

	printf("[행렬 A]\n");
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			scanf("%d", &a[i][j]);
		}
	}

	printf("\n[행렬 B]\n");
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			scanf("%d", &b[i][j]);
		}
	}

	printf("\n[행렬 A]\n");
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%3d", a[i][j]);
		}
		printf("\n");
	}

	printf("\n[행렬 B]\n");
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%3d", b[i][j]);
		}
		printf("\n");
	}

	// 행렬 곱
	int gop[3][3];

	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			gop[i][j] = 0;
			for (k = 0; k < 3; k++)
			{
				gop[i][j] += a[i][k] * b[k][j];
			}
		}
	}

	printf("\n[행렬 곱]\n");
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("%4d", gop[i][j]);
		}
		printf("\n");
	}

	return 0;
}

 

사칙연산 계산기 만들기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int a, b;
int plus (a, b)
{
	return a + b;
}

int min (a, b)
{
	return a - b;
}

int mul (a, b)
{
	return a * b;
}

int div(a, b)
{
	return a / b;
}

int main(void)
{
	int (*cal)(int, int);
	char sel;

	printf("연산 종류(+, -, *,  /): ");
	scanf("%c", &sel);

	printf("a : ");
	scanf("%d", &a);

	printf("b : ");
	scanf("%d", &b);

	switch (sel)
	{
	case '+':
		cal = plus;
		printf("a + b = %d", plus(a, b));
		break;

	case '-':
		cal = min;
		printf("a - b = %d", min(a, b));
		break;

	case '*':
		cal = mul;
		printf("a * b = %d", mul(a, b));
		break;

	case '/':
		cal = div;
		printf("a / b = %d", div(a, b));
		break;
	}	
	return 0;
}

 

점수의 평균 구하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int num, n=1;
	float score, avg, total =0;

	printf("학생의 수 : ");
	scanf("%d", &num);
	
	printf("\n");
	for (int i = 0; i < num; i++)
	{
		printf("학생%d : ", n);
		scanf("%f", &score);
		total += score;
		n += 1;
	}
	avg = total / num;
	printf("\n평균 : %.1f", avg);
	return 0;
}

 

소수 개수 출력하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int n, prime=0;
	int* nums;

	printf("숫자의 개수 : ");
	scanf("%d", &n);

	nums = (int*)malloc(sizeof(int) * n);

	for (int i = 0; i < n; i++)
	{
		scanf("%d", &nums[i]);
		for (int j = 2; j <= nums[i]; j++)
		{
			if (nums[i] == j) prime += 1;
			else if (nums[i] % j == 0) break;
		}
	}
	printf("\n소수의 개수는 %d입니다.", prime);
	free(nums);
	return 0;
}

 

문자열 길이 비교 후 출력하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

int main(void)
{
	char st1[100], st2[100];

	scanf("%[^\n]s", &st1);
	getchar();
	scanf("%[^\n]s", &st2);

	if (strlen(st1) > strlen(st2))
	{
		printf("%d", strlen(st1));
	}
	else if (strlen(st1) == strlen(st2))
	{
		strcat(st1, st2);
		printf("%s", st1);
	}
	else if (strlen(st1) < strlen(st2))
	{
		printf("%d", strlen(st2));
	}

	return 0;
}

 

사칙연산이 가능한 함수가 정의되어 있는 calc.h 헤더파일을 만들어서 사용하기

//main.c

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include "calc.h"

int main(void) 
{
	int n1, n2;
	scanf("%d", &n1);
	scanf("%d", &n2);

	calculator(n1, n2);
	return 0;
}
//calc.h

#include <stdio.h>

int a, b;
void calculator(a, b);
//calc.c

#include "calc.h"

void calculator(a, b)
{
	printf("\n%d + %d = %d\n", a, b, a + b);
	printf("%d - %d = %d\n", a, b, a - b);
	printf("%d * %d = %d\n", a, b, a * b);
	printf("%d / %d = %d", a, b, a / b);
}

 

계단 만들기

#define _CRT_SECURE_NO_WARNINGS
#include <windows.h>
#include <stdio.h>

void GotoXY(int x, int y)
{
    COORD Pos;
    Pos.X = x;
    Pos.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}

int main(void)
{
    int n;
    int a = 0, b = 0;
    scanf("%d", &n);

    for (int i = 0; i < n; i++)
    {
        GotoXY(a, b);
        printf("ㄱ\n");
        a += 1;
        b += 1;
    }

    return 0;
}

 

'C' 카테고리의 다른 글

scanf 오류 해결법  (0) 2022.04.03
[C] 미로찾기 게임 최종  (0) 2021.10.02
[C] #5 미로찾기 게임  (0) 2021.10.02
[C] #4 미로찾기 게임  (0) 2021.09.30
[C] #3 미로찾기 게임  (0) 2021.09.30
'C' 카테고리의 다른 글
  • scanf 오류 해결법
  • [C] 미로찾기 게임 최종
  • [C] #5 미로찾기 게임
  • [C] #4 미로찾기 게임
Rix
Rix
  • Rix
    The Nights
    Rix
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (106)
      • 알고리즘 (5)
        • Python (1)
        • C++ (6)
      • CS (0)
      • Backend (20)
        • 로드맵 (1)
        • Java (17)
        • Spring (2)
      • TIL (0)
      • Flutter (13)
      • Python (7)
        • 디스코드 챗봇 (1)
        • 문법 (1)
        • 머신러닝 (2)
      • C (28)
        • 문법 (19)
      • ETC (2)
        • Git (2)
        • GitHub (1)
        • Hacking (4)
      • Game (13)
        • Unity (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    c언어
    절대강좌유니티
    Failed to create GICache
    이중포인터
    1152
    2차원 배열
    이미지분류
    TensorFlow
    C심화
    코뮤니티
    백준
    문자열 함수
    Unity
    1546
    C
    미로찾기
    nullsafety
    DART
    콘솔창
    공백포함
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
Rix
[C] 공부한 내용 정리
상단으로

티스토리툴바