학원수업/C언어
C언어 7일차
파워욱
2020. 10. 16. 21:20
1.
a la russe
(1) 먼저 세 칸을 만들고 두 수를 1번 째, 2번째 칸에 적는다.
이 때, 1번째 수가 홀수이면 2번째 칸의 값을 3번째 칸에 옮겨 적는다.
(2) 1번 째 칸에 있는 값을 2로 나누고, 2번 째 칸에 있는 값에 2를 곱한다.
이 때, 1번째 수가 홀수이면 2번째 칸의 값을 3번째 칸에 옮겨적는다.
이 것을 1번 째 칸에 있는 값이 0이 될 때 까지 반복한다.
(3) 3번째 칸에 적혀진 모든 값을 더하여 출력한다.
#include<stdio.h>
#pragma warning (disable:4996)
int main()
{
int num1 = 21, num2 = 22, sum = 0 , result;
result = num1 * num2;
for (num1;num1>0;num1/=2)
{
if (num1 % 2 == 1)
{
sum += num2;
}
num2 *= 2;
}
printf("%d %d", sum, result);
return 0;
}
2. 마방진 3 * 3
오른쪽하나 아래하나 홀수 정사각형이면 다 됨
492
357
816
#include<stdio.h>
#pragma warning (disable:4996)
void Mabangjin(int(*ptr)[5], int arrSize)
{
int row = arrSize - 1;
int col = (arrSize - 1) / 2;
const int maxRow = arrSize - 1;
const int maxCol = arrSize - 1;
ptr[row][col] = 1;
for (int i = 2; i <= (arrSize * arrSize); i++)
{
if ((col + 1) > maxCol && (row + 1) > maxRow)
{
row--;
}
else if ((row + 1) > maxRow)
{
row = 0;
col++;
}
else if ((col + 1) > maxCol)
{
row++;
col = 0;
}
else
{
row++;
col++;
}
if (ptr[row][col] != 0)
{
row -= 2;
col--;
}
ptr[row][col] = i;
}
}
int main(int argc, char* argv[])
{
int a[5][5];
int arrSize = sizeof(a[0]) / sizeof(int);
for (int i = 0; i < arrSize; i++)
{
for (int j = 0; j < arrSize; j++)
{
a[i][j] = 0;
printf("%2d ", a[i][j]);
}
printf("\n");
}
printf("\n");
Mabangjin(a, arrSize);
for (int i = 0; i < arrSize; i++)
{
for (int j = 0; j < arrSize; j++)
{
printf("%2d ", a[i][j]);
}
printf("\n");
}
}