#include <stdio.h>
void getInteger(int *a, int *b, int *c) {
printf("삼각형의 세변의 길이를 입력하세요\n");
scanf("%d %d %d", a, b, c);
}
void findorder(int a, int b, int c, int *big, int *mid, int *small) {
if (a >= b && a >= c) {
*big = a;
if (b > c) {
*mid = b;
*small = c;
} else {
*mid = c;
*small = b;
}
} else if (b >= c && b >= a) {
*big = b;
if (a > c) {
*mid = a;
*small = c;
} else {
*mid = c;
*small = a;
}
} else if (c >= b && c >= a) {
*big = c;
if (b > a) {
*mid = b;
*small = a;
} else {
*mid = a;
*small = b;
}
}
}
void tridicision(int big, int mid, int small) {
if (big >= small + mid) {
printf("삼각형이 불가능합니다\n");
} else {
if (big * big == mid * mid + small * small) {
printf("직각삼각형입니다\n");
} else if (big == small && small == mid) {
printf("정감각형입니다\n");
} else if (big == mid || mid == small || big == small) {
printf("이등변삼각형입니다\n");
} else {
printf("일반삼각형입니다\n");
}
}
}
int main() {
for (int i = 0; i < 5; i++) {
int a = 0, b = 0, c = 0;
int big = 0, m = 0, small = 0;
getInteger(&a, &b, &c);
findorder(a, b, c, &big, &m, &small);
tridicision(big, m, small);
}
}
#include<stdio.h>
#define URT_SECURE_NO_WARNINGS_
void getlocation(int *x, int *y, int *x1, int *y1) {
printf("좌하단의 점을 입력하세요\n");
scanf("%d %d %d %d", x, y, x1, y1);
getchar();
}
void decision(int x, y, x1, y1) {
if ((x < 50 && y < 50) && (x1 > 100 && y1 > 100)) {
printf("사각형 A가 B에 포함됩니다\n");
} else if (((x > 50 && x < 100) && (y < 100 && y > 50)) && ((x1 < 100 && x1 > 50) && (y1 < 100 && y1 > 50))) {
printf("사각형 B가 A에 포함됩니다.\n");
} else if (((x >= 50 && x <= 100) && (y >= 50 && y <= 100)) || ((x > 50 && x < 100) && (y1 > 50 && y1 < 100)) ||
(x1 > 50 && x1 < 100) && (y1 > 50 && y1 < 100) ||
(x1 > 50 && x1 < 100) && (y < 50 && y < 100)) {
printf("사각형이 겹칩니다\n");
} else {
printf("사각형이 겹치지 않습니다\n");
}
}
int main() {
for (int i = 0; i < 5; i++) {
int x = 0, y = 0, x1 = 0, y1 = 0;
getlocation(&x, &y, &x1, &y1);
decision(x, y, x1, y1);
}
}
2.랜덤한 수 생성하는 방법
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
srand((unsigned)time(NULL));
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void getUsersAnswer(int ulist[]);
void makeInteger(int *list);
int rungame(int ulist[], int rlist[]);
int main() {
srand((unsigned) time(NULL));
int count = 0;
int rlist[3] = {0};
int ulist[3] = {0};
makeInteger(rlist);
while (1) {
count ++;
getUsersAnswer(ulist);
int result;
result = rungame(ulist, rlist);
if (result == 1) {
printf("당신의 시도 횟수는 %d !!", count);
char answer = 'a';
printf("게임을 계속하시겠어요?\n");
scanf(" %c", &answer);
if (answer == 'y') {
makeInteger(rlist);
count = 0;
} else {
break;
}
}
}
}
void makeInteger(int *list) {// 중복되지 않을 때까지 반복해서 생성한다.
while ((list[0] == list[1] || list[0] == list[2] || list[1] == list[2])) {
for (int i = 0; i < 3; i++) {
list[i] = (int)rand()%10;
}
}
}
void getUsersAnswer(int ulist[]) {
for (int i = 0; i < 3; i++) {
printf("%d 번째 정수를 입력하세요\n", i);
scanf("%d", &ulist[i]);
}
}
int rungame(int ulist[], rlist[]) {
int strike = 0, ball = 0;
for (int i = 0; i < 3; i++) {
for (int e = 0; e < 3; e++) {
if ((ulist[i] == rlist[e]) && (i == e)) {
strike++;
} else if (ulist[i] == rlist[e]) {
ball++;
}
}
}
printf("Ball: %d || strike: %d\n", ball, strike);
if (strike == 3) {
printf("축하합니다.\n");
return 1;
}
}
#include <stdio.h>
void getInteger(int list[][10]) {
for (int i = 0; i < 10; i++) {
printf("정수 %d 번째 정수를 입력하세요\n", i);
scanf("%d", &list[0][i]);
}
}
void findMost(int list[][10]) {
for (int i = 0; i < 10; i++) {
for (int e = 0; e < 10; e++) {
if ((list[0][i] != -1) && (list[0][i] == list[0][e])) {
if (i == e) {
list[1][i] += 1;
} else {
list[0][e] = -1;
list[1][i] += 1;
}
}
}
}
int mx = 0;
for (int i = 0; i < 10; i++) {
if (list[1][i] > mx) {
mx = list[1][i];
}
}
for (int i = 0; i < 10; i++) {
if (list[1][i] == mx) {
printf("최빈값 : %d, 갯수 : %d\n", list[0][i], list[1][i]);
}
}
}
int main() {
int list[2][10] = {0,};
getInteger(list);
findMost(list);
}
#include <stdio.h>
int main() {
printf("원의 반지름을 입력하세요\n");
double r;
double pi = 3.14;
double area;
double volume;
double ball;
double h;
double surface;
scanf("%lf", &r);
printf("높이를 입력하세요\n");
scanf("%lf", &h);
area = r * r * pi;
surface = area * 2 + 2 * pi * r * h;
volume = area * h;
ball = (double) 3 / 4 * pi * r * r * r;
printf("원의 넓이 %lf 원기둥의 부피 %lf 원기둥의 겉넓이 %lf, 구의 부피 %lf", area, volume, surface, ball);
//원기둥의 겉넓이와 부피, 구의 부피
}
실습과제 3
#include <stdio.h>
int main() {
printf("돈을 입력하세요\n");
int money;
scanf("%d", &money);
int list_m[7] = {50000,10000,5000, 1000, 100, 500, 50, 10};
int list_c[7] = {0};
for (int i = 0; i < 7; i++) {
list_c[i] = money / list_m[i];
money = money % list_m[i];
}
for (int i = 0; i < 7; i++) {
printf(" %d권 : %d개 \n", list_m[i], list_c[i]);
}
}
실습과제 4 정수의 각 자리수를 더해는 방법
#include<stdio.h>
int main() {
int money;
scanf("%d", &money);
int sum = 0;
while (money != 0) {
sum += money % 10;
money = money / 10;
}
printf("%d",sum);
}
정수를 거꾸로 출력하는 방법
#include<stdio.h>
int main() {
printf("정수를 입력하세요\n");
int num = 0;
scanf("%d", &num);
while (num != 0) {
printf("%d", num % 10);
num = num / 10;
}
}
소수 찾는 방법
#include<stdio.h>
int main(){
printf("정수를 입력하세요");
int num = 0;
scanf("%d",&num);
for(int i=1; i<num; i++){
int count = 0;
for(int e = 1; e<num; e++){
if (i% e == 0){
count++;
}
}
if(count == 2){
printf("소수 : %d\n",i);
}
}
}
진은아 이거는 시험에 나오면 그래도 저 포문 범위를 잘봐야된다.
실습과제 2
i) a, b를 포함하여 그 사이에 존재하는 정수들의 합을 계산하여 그 결과를 반환하는 함수
ii) a, b를 포함하여 그 사이에 존재하는 정수들의 곱을 계산하여 그 결과를 반환하는 함수
iii) ak <= b를 만족하는 정수 k값 중 가장 큰 값을 구하여 그 결과를 반환하는 함수
#include<stdio.h>
int sum(int a, int b) {
return a + b;
}
int mul(int a, int b) {
int result = 1;
for (int i = a; i < b + 1; i++) {
result *= i;
}
return result;
}
int dtime(int a, int b) {
int k = 1;
int p = a;
while (a <= b) {
k++;
a = p * a;
}
return k-1;
}
int main(){
int a,b;
printf("두 정수르 입력하세요\n");
scanf("%d %d",&a,&b);
printf("sum : %d\n",sum(a,b));
printf("mul : %d\n", mul(a,b));
printf("dtime : %d\n",dtime(a,b));
}
실습과제3
#include<stdio.h>
int isprime(int a) {
int count = 0;
for (int i = 1; i < a + 1; i++) {
if (a % i == 0) {
count++;
}
}
if (count == 2) {
return 1;
} else {
return 0;
}
}
int main() {
int num =0;
printf("정수를 입력하세요");
scanf("%d",&num);
for (int i = 0; i < num + 1; i++) {
if (isprime(i) == 1) {
printf("소수 : %d\n", i);
}
}
}
다음 문제는 풀때 제일 큰 인덱스와 가장 작은 인덱스를 찾아서 반환하는함수인데
#include<stdio.h>
void printArray(int *list) {
printf("[");
for (int i = 0; i < 5; i++) {
if (i < 4) {
printf("%d,", list[i]);
} else {
printf("%d", list[i]);
}
}
printf("]\n");
}
void changeArray(int *list) {
int max = list[0], min = list[0];
int maxindex, minindex;
for (int i = 0; i < 5; i++) {
if (max < list[i]) {
max = list[i];
maxindex = i;//맥스일때의 인덱스를 변수에 저장
}
if (min >= list[i]) {
min = list[i];
minindex = i;//미니멈 일때의 인덱스를 변수에 저장
}
}
list[maxindex] = min;
list[minindex] = max;
}
int findIndex(int value, int * list){
for(int i =0; i< 5; i++){
if(value == list[i]){
return i;
}
}
}
int getIntegr(int* list){
for(int i = 0; i< 5; i++){
printf("정수를 입력하세여\n");
scanf("%d",&list[i]);
}
}
int main(){
int list[5];
getIntegr(list);
printArray(list);
changeArray(list);
printArray(list);
int user = 0;
printf("정수를 입력하세요\n");
scanf("%d",&user);
printf("%d\n",findIndex(user, list));
printArray(list);
}
void changeArray(int *list) {
int max = list[0], min = list[0];
int maxindex = 0, minindex = 0; 이 부분 추가 안해주면 오류가 발생할 수도 있다.
for (int i = 0; i < 5; i++) {
if (max <= list[i]) {
max = list[i];
maxindex = i;
}
if (min >= list[i]) {
min = list[i];
minindex = i;
}
}
list[maxindex] = min;
list[minindex] = max;
}
이 함수에서 주의해야 할점은 if (max <= list[i])if (min >= list[i]) 이 부분인데 이 부분을 작거나 같다 혹은 크거나 같다라고 안해줘서 if 문이 한번도 실행이 안되면 참사가 일어나서 디버깅해도 못찾는다 그니까 항상 이상하다 싶으면 0으로 초기화 해서 하용하는 것이 오류를 줄일 수있는 방법같다.
minindex = i;, maxindex = i;이 코드드를 작성하기 전에 먼저 나같으면 이 둘의 변수를 초기화 하는것이 안정적으로 오류를 줄일 수 있는 방식인거같다.