1. 약수 판정
#include <stdio.h>
void print_divisor(int value); // 약수 구하는 함수
int main(void) {
int number;
while (1) // 무한 반복
{
printf("약수를 구할 정수 입력(1 이하 종료) : ");
scanf("%d", &number); // 데이터 입력
if (number >= 2) { // 약수를 구할 수 있다면
print_divisor(number);
}
else { // 약수를 구할 수 없다면
printf("%d에 대한 약수를 구할 수 없습니다.\n", number);
printf("프로그램을 종료합니다.\n");
break;
}
printf("\n");
}
return 0;
}
void print_divisor(int value) {
printf("%d의 약수 : ", value);
for (int i = 2; i <= value; i++) {
if (value % i == 0) {
printf("%d ", i);
}
}
}
2. 완전수 출력하기
#include <stdio.h>
int perfect_number(int number); // 완전수 여부 판별 함수 (반환형 void으로 변경가능)
int main(void) {
int number=0;
printf("1000 이하의 완전수: \n");
perfect_number(number);
// 반복문 수행 및 perfect_number() 호출하여 완전 수 계산 및 출력
for (number = 1; number <= 1000; number++) {
if (perfect_number(number) == 1) {
printf("%d\n", number);
}
}
return 0;
}
//약수의 합이 자기 자신과 같아져야함.
int perfect_number(int number) {
int sum = 0;
for (int i = 1; i < number; i++) {
if (number % i == 0) {
sum += i;
}
}
if (sum == number) return 1;
else return 0;
}
3. 공 바꾸기
#include <stdio.h>
int store[101] = { 0, };
int i, j;
void swap(int a, int b);
int main(void) {
int N, M;//M은 바꿀 횟수
scanf("%d %d", &N, &M);
for (int q = 1; q <= N; q++) {
store[q] = q;
}
for (int k = 1; k <= M; k++) {
scanf("%d %d", &i, &j);
swap(i, j);
}
for (int u = 1; u <= N; u++) {
printf("%d ", store[u]);
}
return 0;
}
void swap(int a, int b) {//값 바꾸는 알고리즘 중요
int temp;
temp = store[i];
store[i] = store[j];
store[j] = temp;
}
4. 신문 헤드라인
#include <stdio.h>
#include <ctype.h>
int main(void) {
char str[100];
scanf("%s", &str);
for (int i = 0; str[i] != '\0'; i++) {//널문자를 만날때 까지 반복
str[i] = toupper(str[i]);
}//toupper은 문자열 소문자를 대문자로 바꿔줌줌
printf("%s", str);
return 0;
}
tolower() 함수는 대문자 C를 대응하는 소문자 c로 변환합니다.
toupper() 함수는 소문자 c를 대응하는 대문자 C로 변환합니다.
리턴값
두 함수는 변환된 문자를 리턴합니다. 문자 c에 대응하는 소문자 또는 대문자가 없으면 함수는 c를 변경하지 않고 리턴합니다.