#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void){
int N;
scanf("%d", &N);
for (int j = 0; j < N; j++) {
for (int k = 0; k < j; k++) {
printf(" ");
}
for (int i=0; i < N-j; i++) {
printf("*");
}
printf("\n");
}
return 0;
}
1.N으로 별의 개수를 입력받는다.
2.for문을 이용하여 별을 반복한다. 하나는 별의 개수가 감소하고 다른 하나는 공백의 수가 증가하므로 이를 고려한다.
3.출력한다.
#include <stdio.h>
#include <string.h>
#define MAX_LEN 101
void add(char *a, char *b, char *result) {
int lenA = strlen(a);
int lenB = strlen(b);
int lenResult = lenA > lenB ? lenA : lenB;
int carry = 0, sum = 0;
result[lenResult] = '\0';
for (int i = 1; i <= lenResult; i++) {
int digitA = (i <= lenA) ? a[lenA - i] - '0' : 0;
int digitB = (i <= lenB) ? b[lenB - i] - '0' : 0;
sum = digitA + digitB + carry;
carry = sum / 10;
result[lenResult - i] = (sum % 10) + '0';
}
if (carry) {
memmove(result + 1, result, lenResult + 1);
result[0] = carry + '0';
}
}
void multiply(char *a, char *b, char *result) {
int lenA = strlen(a);
int lenB = strlen(b);
int lenResult = lenA + lenB;
int* tempResult = (int*)calloc(lenResult, sizeof(int));
for (int i = lenA - 1; i >= 0; i--) {
for (int j = lenB - 1; j >= 0; j--) {
tempResult[i + j + 1] += (a[i] - '0') * (b[j] - '0');
}
}
for (int i = lenResult - 1; i > 0; i--) {
if (tempResult[i] >= 10) {
tempResult[i - 1] += tempResult[i] / 10;
tempResult[i] %= 10;
}
}
int pos = 0;
for (int i = 0; i < lenResult; i++) {
if (pos == 0 && tempResult[i] == 0) continue;
result[pos++] = tempResult[i] + '0';
}
if (pos == 0) result[pos++] = '0';
result[pos] = '\0';
free(tempResult);
}
int main(void) {
char a[MAX_LEN], b[MAX_LEN], result[MAX_LEN * 2];
char operator;
scanf("%s", a);
while (getchar() != '\n');
scanf("%c", &operator);
scanf("%s", b);
if (operator == '+') {
add(a, b, result);
} else if (operator == '*') {
multiply(a, b, result);
}
printf("%s\n", result);
return 0;
}
1.받을 수 있는 숫자의 최대한의 길이를 MAX_LEN으로 정해둔다.
2.+일 때와 *일 때를 각각 고려햐여 함수로 만든다.
3.+연산자가 들어올 경우 각 숫자들을 1의 자리부터 더하며 올려주는 방식으로 진행한다.
4.*연산자가 들어올 경우 동적 할당을 이용한다.
5.각 숫자들을 손으로 곱셈을 수행하는 방식처럼 곱한 뒤, 각 순서에 맞춰서 넣어준다.
6.곱셈을 전부 한 다음, 숫자가 10 이상일 때를 고려하여 처리한다.