상세 컨텐츠

본문 제목

c언어:배열 문제 풀이

코딩 기록

by jii 2022. 12. 9. 19:05

본문

#배열에 1 ~100 사이의 난수를 저장, 최대최소 구하기

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

int main(){
	int A[100];
	int n, min, max;
	scanf("%d", &n);//n은 배열의 크기
	srand(time(NULL));

	for (int i = 0; i < n; i++){
		A[i] = rand() % 100 + 1;
		printf("%d ", A[i]);
	}
	printf("\n");
	min = max = A[0];

	for (int i = 1; i < n; i++){
		if (A[i] < min)
			min = A[i];
		if (A[i] > max)
			max = A[i];
	}
	printf("%d %d\n", min, max);
	return 0;
}

#  이차원 배열에 두 자리 수 난수를 저장한 후, 행의 합과 열의 합 구하기(함수로)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
//배열 만들고 출력하기
void makeArray(int A[N][N], int r, int c){
	for (int i = 0; i < r; i++) {
		for (int j = 0; j < c; j++) {
			A[i][j] = rand() % 90 + 10;
			printf("%d ", A[i][j]);
		}
		printf("\n");
	}
}
//행과 열 합 구하기
void sum(int A[][N], int r, int c){
	int rowsum, colsum;
	printf("\n");
	for (int i = 0; i < r; i++){
		rowsum = 0;
		for (int j = 0; j < c; j++)
			rowsum += A[i][j];
		printf("%d ", rowsum);
	}
	printf("\n");

	for (int j = 0; j < c; j++){
		colsum = 0;
		for (int i = 0; i < r; i++)
			colsum += A[i][j];
		printf("%d ", colsum);
	}
	printf("\n");
}

int main(){
	int A[N][N];
	int r, c;
	scanf("%d %d", &r, &c);
	srand(time(NULL));
	makeArray(A, r, c);
	sum(A, r, c);
	return 0;
}

 

#세 자리 양의 정수 A, B, C가 주어지면 A×B×C의 계산 결과에서 0부터 9까지 몇 번씩 쓰였는지 구하기 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(){
	int N[10] = { 0 };
	int a, b, c, num;//num은 각 자리수 
	scanf("%d %d %d", &a, &b, &c);

	int g = a * b * c;
	while (g != 0){
		num = g % 10;
		N[num]++;
		g /= 10;
	}
	for (int i = 0; i < 10; i++)
		printf("%d\n", N[i]);
	return 0;
}

#두 개의 양의 정수 P와 Q가 주어질 때, P의 약수를 x 좌표, Q의 약수를 y좌표로 하는 점(x, y)들을 출력

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
	int A[20], B[20];
	int a, b, cnt1 = 0, cnt2 = 0;
	scanf("%d %d", &a, &b);
	//a의 약수
	for (int i = 1, j = 0; i <= a; i++)
		if (a % i == 0) {
			A[j++] = i;
			cnt1++;
		}
	//b의 약수
	for (int i = 1, j = 0; i <= b; i++)
		if (b % i == 0) {
			B[j++] = i;
			cnt2++;
		}
	for (int i = 0; i < cnt1; i++)
		for (int j = 0; j < cnt2; j++)
			printf("(%d,%d)\n", A[i], B[j]);
	return 0;
}

#예약 시스템

//예약되면1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 10
int main(){
	char ans1;
	int ans2, i;
	int seats[SIZE] = { 0 };
	while (1){
		printf("좌석을 예약하시겠습니까?(y/n) ");
		scanf(" %c", &ans1);
		if (ans1 == 'y'){
			printf("-------------------------------\n");
			printf(" 1 2 3 4 5 6 7 8 9 10\n");
			printf("-------------------------------\n");
			for (i = 0; i < SIZE; i++)
				printf(" %d", seats[i]);
			printf("\n");
			printf("몇번째 좌석 예약 ?");
			scanf("%d", &ans2);
			if (ans2 <= 0 || ans2 > SIZE) {
				printf("1부터 10사이의 숫자를 입력하세요\n");
				continue;
			}
			if (seats[ans2 - 1] == 0) { // 예약되지 않았으면
				seats[ans2 - 1] = 1;//예약되도록
				printf("예약되었습니다.\n");
			}
			else // 이미 예약되었으면
				printf("이미 예약된 자리입니다.\n");
		}
		else if (ans1 == 'n')
				return 0;
	}
	return 0;
}

'코딩 기록' 카테고리의 다른 글

java : 2일차  (0) 2023.01.05
java : 1일차  (0) 2023.01.02
c언어:포인터  (0) 2022.12.10
c언어: 배열  (0) 2022.12.09
순환(recursion):재귀호출  (0) 2022.12.09

관련글 더보기

댓글 영역