게임프로그래밍 개발 수업/C언어 수업
C언어 1차원 배열, 문자열의 입력과 출력
막뇌
2023. 3. 28. 10:35
3월 28일 수업 내용입니다.
배열이란 무엇인가?
다수의 정보를 저장하기 위해 사용, 변수선언 자체를 다수로 하게 된다.
단순히 다수의 변수 선언 역할만 하지는 않는다. 배열로 할 수 있는 일이 더욱 많다.
1차원 배열에 필요한 구성요소는 3가지, 위와 같다.
배열의 이름 자체가 주소다.
배열의 구조를 알아보는 예제
#include<stdio.h>
int main()
{
int arr[5];
int sum = 0;
arr[0] = 10, arr[1] = 20, arr[2] = 30, arr[3] = 40, arr[4] = 50;
for (int i = 0; i < 5; i++)
{
sum += arr[i];
}
printf("합계 : %d \n", sum);
return 0;
}
출력 해보면 결과는 150이 나온다.
for문을 사용하여 배열을 담아보기
#include<stdio.h>
int main()
{
int arr[10];
for (int i = 0; i < 10; i++)
{
arr[i] = (i + 1) * 10;
printf("%d \n", arr[i]);
}
return 0;
}
결과는
10
20
30
40
...
100
으로 출력 된다.
#include<stdio.h>
int main()
{
int arr1[5] = { 1,2,3,4,5, };
int arr2[] = { 1,2,3,4,5,6,7 };
int arr3[5] = { 1,2 };
int ar1Len, ar2Len, ar3Len, i;
printf("배열 arr1의 크기: %d\n", sizeof(arr1));
printf("배열 arr2의 크기: %d\n", sizeof(arr2));
printf("배열 arr3의 크기: %d\n", sizeof(arr3));
ar1Len = sizeof(arr1) / sizeof(int); //배열 arr1의 길이 계산
ar2Len = sizeof(arr2) / sizeof(int); //배열 arr2의 길이 계산
ar3Len = sizeof(arr3) / sizeof(int); //배열 arr3의 길이 계산
for (i = 0; i < ar1Len; i++)
printf("%d ", arr1[i]);
printf("\n");
for (i = 0; i < ar2Len; i++)
printf("%d ", arr2[i]);
printf("\n");
for (i = 0; i < ar3Len; i++)
printf("%d ", arr3[i]);
printf("\n");
return 0;
}
1차원 배열의 초기값 형태
크기는 비트 수로 결정됨
배열의 크기를 자료형으로 나누면 배열의 길이가 나온다.
크기 / 자료형 = 길이
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int arr1[100];
srand((int)time(NULL));
for (int i = 0; i < 100; i++)
arr1[i] = rand() % 100 + 1;
for (int i = 0; i < 100; i++)
{
if (i % 10 == 0)
printf("\n");
printf("%3d ", arr1[i]);
}
return 0;
}
정수를 랜덤하게 출력하는 기능을 만들어 보았다.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
char str[] = "Good morning!"; //변수형태의 문자열
printf("배열 str의 크기: %d \n", sizeof(str));
printf("널 문자 문자형 출력: %c \n", str[13]);
printf("널 문자 정수형 출력: %d \n", str[13]);
str[12] = '?';
printf("문자열 출력: %s \n", str);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
char str[50];
int idx = 0;
printf("문자열 입력: ");
scanf_s("%s", str, sizeof(str)); //scanf_s에서 문자열인 경우는 sizeof를 꼭 넣어준다.
printf("입력받은 문자열: %s \n", str);
printf("문자단위 출력: ");
while (str[idx] != '\0') //null값의 표현은 1.NULL 2. 0 3. '\0' 으로 표현 가능
{
printf("%c", str[idx]);
idx++;
}
printf("\n");
return 0;
}
문제 풀어보기
문제의 정답
더보기
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void GUGU(int num1, int num2);
int main() {
int num1;
int num2;
printf("두개의 정수 입력: ");
scanf_s("%d %d", &num1, &num2);
GUGU(num1, num2);
return 0;
}
void GUGU(int num1, int num2) {
int n1;
int n2;
if (num1 > num2) {
n1 = num1;
n2 = num2;
}
else {
n1 = num2;
n2 = num1;
}
for (int i = n2; i <= n1; i++) {
for (int j = 1; j < 10; j++) {
printf("%d X %d = %d\n", i, j, i * j);
}
printf("\n");
}
}
문제의 정답