C언어 멘토링 | 5주차 [과제]

2022. 5. 16. 23:57·Programming Language/C

문제1

구구단 출력

설명 : 이차원 배열을 선언하고 반복문을 통해 구구단 3단을 이차원 배열에 저장한 후 출력
조건 : 반드시 다차원 배열과 반복문을 이용

출력 결과 예시


풀이

#include <stdio.h>


int main()
{
	int mul[3][9]; //[0][0~8]에는 1단, [1][0~8]에는 2단, [2][0~8]에는 3단 저장

	for (int i = 0; i <= 2; i++) { //1, 2, 3단
		for (int j = 0; j <= 8; j++) { //1~9 까지 곱
			mul[i][j] = (i + 1) * (j + 1); //i와 j가 0부터 시작하므로 +1을 해줌

			printf("%d * %d = %d\n", i + 1, j + 1, mul[i][j]);
		}
		printf("\n");
	}
}

문제2

백준 2577번
세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.
예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.

입력 : 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

출력 : 첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.

출력 결과 예시


풀이

#include <stdio.h>

int main() {
	int num[10] = { 0, }; //각 배열 값을 0으로 초기와
	int a, b, c, mul;
	
	scanf("%d %d %d", &a, &b, &c); //정수 3개 입력 받기


	mul = a * b * c;  //곱
	
	for(int i = mul; i > 0; i /= 10) { // 곱해준 수를 i에 대입, 몫이 0으로 될 때까지 10으로 나눔
		num[i % 10] += 1; // i를 10으로 나눈 나머지를 0이면 0번지에, 1이면 1번지에 각 각 나온 횟수만큼 1씩 증가시킴

	}
	for (int j = 0; j <= 9; j++) {
		printf("%d\n", num[j]); // 횟수 출력
	}
}

제출 시 scanf_s 말고 scanf로 수정하기


문제3

백준 1152번

입력 : 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다.

출력 : 첫째 줄에 단어의 개수를 출력한다.

출력 결과 예시


풀이

#include <stdio.h>

char sentence[1000001]; //0~1000000개의 총 1000001개의 칸 생성
int main() {
	
	int i, word = 0;

	scanf("%[^\n]s", &sentence); //[\n]의 의미는 엔터가 입력될 때까지 입력 받으라는 뜻
	
	for (i = 1; i <= 1000000; i++) {

		if (sentence[i-1] == ' ' && sentence[i] != ' ') { //문자 앞이 공백이고 다음 문자가 공백이 아닐 때
			word++;
		}
		if (sentence[i-1] == ' ' && sentence[i] == NULL) { //문자 앞이 공백이고 다음 문자가 NULL값일 때
			word--;
		}
	}
	
	if (sentence[0] == ' ') {
		word--;
	}

	printf("%d", word+1);
}

공백을 기준으로 세는 것이므로,

문자열 앞, 뒤에 공백이 없을 때 +1을 해 주어야 한다.

앞, 뒤에 공백이 있을 때에는 -1을 해 주어야 한다.

저작자표시 비영리 (새창열림)

'Programming Language > C' 카테고리의 다른 글

백준 2480번 : 주사위 세개  (0) 2022.06.23
C언어 멘토링 | 6주차 [과제] | 백준 2675번, 1157번  (0) 2022.06.01
C언어 멘토링 | 4주차 [과제]  (0) 2022.05.07
C언어 멘토링 | 3주차 [과제]  (0) 2022.05.03
C언어 멘토링 | 2주차 [과제]  (0) 2022.04.07
'Programming Language/C' 카테고리의 다른 글
  • 백준 2480번 : 주사위 세개
  • C언어 멘토링 | 6주차 [과제] | 백준 2675번, 1157번
  • C언어 멘토링 | 4주차 [과제]
  • C언어 멘토링 | 3주차 [과제]
602zzang
602zzang
  • 602zzang
    yks_STUDY
    602zzang
  • 전체
    오늘
    어제
    • 분류 전체보기 (77)
      • Programming Language (36)
        • C (15)
        • PYTHON (9)
        • RUST (12)
      • Reverse Engineering (3)
      • OS (17)
        • LINUX (17)
      • 보안 이슈 (6)
      • Digital Forensics (1)
      • CTF (8)
      • 기타 (6)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    rustling
    rust
    소켓 통신
    python
    빡공팟
    P4C
    Rocky Linux
    cyberdefenders
    umassctf2025
    c
    bandit
    TeamH4C
    백준
    보안이슈
    파이썬
    드림핵
    코드업
    공급망
    picoCTF
    보안동향
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
602zzang
C언어 멘토링 | 5주차 [과제]
상단으로

티스토리툴바