개요
배열 days[] 를 아래와 같이 초기화하고 배열 원소의 값을 다음과 같이 출력하는 프로그램 을 작성하라. |
목표
1월은 31일까지 있습니다. 2월은 29일까지 있습니다. ..... |
Code
#include<stdio.h>
int main(void)
{
int days[] = { 30,29,31,30,31,30,31,31,30,31,30,31 };
for (int i = 1; i <= 12; i++) {
printf("%2d월은 %d일까지 있습니다.\n", i, days[i - 1]);
}
return 0;
}
Output

개요
크기가 10인 1차원 배열에 난수를 저장한 후에, 최대값과 최소값을 출력하는 프로그램을 작성하라. 난수는 rand() 함수를 호출하여 생성하라. |
Code
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main(void)
{
int aRand[10] = { 0 }, i, j, temp;
srand(time(NULL));
for (int i = 0; i < 10; i++) {
aRand[i] = rand() % 1000 + 1;
}
for (i = 0; i < 10; i++) {
for (j = i + 1; j < 10; j++) {
if (aRand[i] > aRand[j]) {
temp = aRand[i];
aRand[i] = aRand[j];
aRand[j] = temp;
}
}
}
for (int i = 0; i < 10; i++) {
printf("%5d", aRand[i]);
}
printf("\nMIN : %d\tMAX : %d",aRand[0],aRand[9]);
}
Output

개요
0부터 9까지의 난수를 100번 생성하여 가장 많이 생성된 수를 출력하는 프로그램을 작성하시오. 난수는 rand() 함수를 사용하여 생성하라. 힌트 0에서 9까지의 난수는 rand()%10으로 구할 수 있다. |
Code
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedef struct randomNo
{
int no;
int times;
}ran_t;
void getRand(ran_t arr[]);
void sSort(ran_t arr[]);
void printArr(ran_t arr[]);
int main(void)
{
ran_t aRand[10] = { 0 };
getRand(aRand);
sSort(aRand);
printArr(aRand);
printf("MAX rand No. %d : %d", aRand[9].no,aRand[9].times);
return 0;
}
void getRand(ran_t arr[])
{
srand((unsigned)time(NULL));
for (int i = 0; i < 10; i++) {
arr[i].no = i;
}
for (int i = 0; i < 100; i++) {
arr[rand() % 10].times++;
}
}
void sSort(ran_t arr[])
{
int i, j, iMin, iIndexMin;
ran_t temp;
for (i = 0; i < 9; i++) {//0~8번까지 최소값을 구하면
//9번은 자동적으로 최대값이므로 Sorting 불필요
//최소값을 찾아 가장 왼쪽부터 최소값으로 채워 갈 때, 비교할 초기값 설정
iMin = arr[i].times;
for (j = i + 1; j < 10; j++) {
if (iMin > arr[j].times) {//찾은 최소값과 최소값이 있는 index 저장
iMin = arr[j].times;
iIndexMin = j;
}
}
temp = arr[iIndexMin]; //최소값을 스왑
arr[iIndexMin] = arr[i];
arr[i] = temp;
}
}
void printArr(ran_t arr[])
{
for (int i = 0; i < 10; i++) {
printf("[No. %d] : %d times\n", arr[i].no, arr[i].times);
}
}
Output

개요
다음과 같은 2차원 표를 베열로 생성하고, 각 행의 합계, 각 열의 합계를 구하여 출력하는 프로그램을 작성하라 12 56 32 16 98 99 56 34 41 3 65 3 87 78 21 |
Code
#include<stdio.h>
int main(void)
{
int iArray[3][5] = {{12,56,32,16,98},{99,56,34,41,3},{65,3,87,78,21}};
int iRowSum[3] = { 0 };
int iColSum[5] = { 0 };
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
printf("%4d", iArray[i][j]);
iRowSum[i] += iArray[i][j];
for (int k = 0; k < 3; k++) {
iColSum[j] += iArray[k][j];
}
}
printf("%4d\n", iRowSum[i]);
}
for (int i = 0; i < 5; i++) {
printf("%4d", iColSum[i]);
}
return 0;
}
Output

개요
1부터 10까지의 정수에 대하여 제곱값과 세제곱값을 계산하여 출력하는 프로그램을 작성하라. 크기의 2차원 배열을 만들고 첫 번째 열에는 정수를, 두 번째 열에는 제곱값을, 세 번째 열에는 세제곱값을 저장하라. 추가로 사용자에게 세제곱값을 입력하도록 하고 이 세제곱값을 배열에서 찾아서 그것의 세제곱근을 출력하도록 하라 |
Code
#include<stdio.h>
#include<math.h>
int main(void)
{
int iArray[3][10] = { 0 },iNum,iNum2;
for (int i = 0; i < 10; i++) {
iArray[0][i] = i + 1;
printf("%5d", iArray[0][i]);
iArray[1][i] = pow(iArray[0][i], 2);
iArray[2][i] = pow(iArray[0][i], 3);
}
putchar('\n');
for (int i = 0; i < 10; i++) {
printf("%5d", iArray[1][i]);
}
putchar('\n');
for (int i = 0; i < 10; i++) {
printf("%5d", iArray[2][i]);
}
putchar('\n');
printf("3제곱수 중 하나를 입력하세요 : ");
scanf_s("%d", &iNum);
for (int i = 0; i < 10; i++) {
if (iNum == iArray[2][i]) {
iNum2 = iArray[0][i];
}
}
printf("%d의 3제곱근은 %d입니다.\n", iNum, iNum2);
}
Output

'C\C++' 카테고리의 다른 글
malloc, realloc 예제 (0) | 2022.03.03 |
---|---|
포인터 문제 (0) | 2022.03.02 |
구조체 문제 (0) | 2022.03.02 |
최대 최소 구하기(bubble sort) (0) | 2022.02.28 |
String 관련 예제 (0) | 2022.02.27 |