카테고리 없음

C언어 과제 정리

에푸 2022. 5. 5. 12:30

//간단한 계산기 1차 버전

 

#include <stdio.h>

void main() {
int first_in, second_in, value;
char calculating = 'a';                            //연산자 입력변수
float value2, first_in2, second_in2 = 0;       //나눗셈용 변수

printf("연산자 입력: ");
scanf_s("%c", &calculating, 1);


if (calculating == '+') {

printf("계산할 숫자1: ");
scanf_s("%d", &first_in);

printf("계산할 숫자2: ");
scanf_s("%d", &second_in);

value = first_in + second_in;

printf("\n계산값은 %d입니다", value);

}
else if (calculating == '-') {

printf("계산할 숫자1: ");
scanf_s("%d", &first_in);

printf("계산할 숫자2: ");
scanf_s("%d", &second_in);

value = first_in - second_in;

printf("\n계산값은 %d입니다", value);
}
else if (calculating == '/') {

printf("계산할 숫자1: ");
scanf_s("%f", &first_in2);                                       //소수점 표시용 %f

printf("계산할 숫자2: ");
scanf_s("%f", &second_in2);                                   //소수점 표시용 %f

value2 = first_in2 / second_in2;

printf("\n계산값은 %.2f입니다", value2);                  //소수점 표시용 %f
}
else if (calculating == '*') {

printf("계산할 숫자1: ");
scanf_s("%d", &first_in);

printf("계산할 숫자2: ");
scanf_s("%d", &second_in);

value = first_in * second_in;

printf("\n계산값은 %d입니다", value);
}
else if (calculating != '+', '-', '/', '*') {
printf("\a\n입력이 잘못되었습니다\n");                 // 입력오류 검출용
}

printf("\n\n이용해주셔서 감사합니다\n");
}

 

//===========================================================================

// 간단한 계산기 2차 버전

#include <stdio.h>

void main() {
int   first_in, second_in;
char  calculating;                            //연산자 입력변수
float value;                                   //나눗셈용 변수

printf("계산식 입력: ");

scanf_s("%d", &first_in);                            //scanf_s 써보기
scanf_s("%c", &calculating, 1);
scanf_s("%d", &second_in);

//scanf("%d %c %d", &first_in, &calculating, &second_in);          //기존 scanf

if (calculating == '+') {
printf("\n%d + %d는 %d입니다", first_in, second_in, first_in + second_in);
}
else if (calculating == '-') {
printf("\n%d - %d는 %d입니다", first_in, second_in, first_in - second_in);
}
else if (calculating == '/') {
value = (float)first_in / second_in;                                    //실수변환
printf("\n%d / %d는 %.2f입니다", first_in, second_in, value);
}
else if (calculating == '*') {
printf("\n%d x %d는 %d입니다", first_in, second_in, first_in * second_in);
}
else if (calculating != ('+', '-', '/', '*')) {
printf("\a\n입력이 잘못되었습니다\n");
}

 

//===========================================================================
// 간단한 계산기 3차 버전


switch (calculating) {
case '+': printf("\n%d + %d는 %d입니다", first_in, second_in, first_in + second_in); break;
case '-': printf("\n%d - %d는 %d입니다", first_in, second_in, first_in - second_in); break;
case '*': printf("\n%d x %d는 %d입니다", first_in, second_in, first_in * second_in); break;
case '/': value = (float)first_in / second_in;                                   //실수변환
printf("\n%d / %d는 %.2f입니다", first_in, second_in, value); break;
default: printf("\a\n입력이 잘못되었습니다\n");
}
printf("\n\n이용해주셔서 감사합니다\n");
}

 

//===========================================================================

 

#include <stdio.h>

int main() {
int nail = 0;
int count = 0;

while (nail < 100) {
nail += 5;                                                                  // nail = nail + 5;와 동일
printf("달팽이가 이동한 거리 = %d m\n", nail);
(nail < 50) ? (nail -= 1) : (nail -= 2);                                //되도록 괄호로 가독성을 높일 것
printf("달팽이가 이동하고 미끄러진 거리 = %d m\n", nail);
printf("===================\n");

count++;
}

printf("이동한 횟수 = %d회\n", count);

return 0;
}

 

// 출력값

달팽이가 이동한 거리 = 5 m
달팽이가 이동하고 미끄러진 거리 = 4 m
===================
달팽이가 이동한 거리 = 9 m
달팽이가 이동하고 미끄러진 거리 = 8 m
===================
달팽이가 이동한 거리 = 13 m
달팽이가 이동하고 미끄러진 거리 = 12 m
===================
달팽이가 이동한 거리 = 17 m
달팽이가 이동하고 미끄러진 거리 = 16 m
===================
달팽이가 이동한 거리 = 21 m
달팽이가 이동하고 미끄러진 거리 = 20 m
===================
달팽이가 이동한 거리 = 25 m
달팽이가 이동하고 미끄러진 거리 = 24 m
===================
달팽이가 이동한 거리 = 29 m
달팽이가 이동하고 미끄러진 거리 = 28 m
===================
달팽이가 이동한 거리 = 33 m
달팽이가 이동하고 미끄러진 거리 = 32 m
===================
달팽이가 이동한 거리 = 37 m
달팽이가 이동하고 미끄러진 거리 = 36 m
===================
달팽이가 이동한 거리 = 41 m
달팽이가 이동하고 미끄러진 거리 = 40 m
===================
달팽이가 이동한 거리 = 45 m
달팽이가 이동하고 미끄러진 거리 = 44 m
===================
달팽이가 이동한 거리 = 49 m
달팽이가 이동하고 미끄러진 거리 = 48 m
===================
달팽이가 이동한 거리 = 53 m
달팽이가 이동하고 미끄러진 거리 = 51 m
===================
달팽이가 이동한 거리 = 56 m
달팽이가 이동하고 미끄러진 거리 = 54 m
===================
달팽이가 이동한 거리 = 59 m
달팽이가 이동하고 미끄러진 거리 = 57 m
===================
달팽이가 이동한 거리 = 62 m
달팽이가 이동하고 미끄러진 거리 = 60 m
===================
달팽이가 이동한 거리 = 65 m
달팽이가 이동하고 미끄러진 거리 = 63 m
===================
달팽이가 이동한 거리 = 68 m
달팽이가 이동하고 미끄러진 거리 = 66 m
===================
달팽이가 이동한 거리 = 71 m
달팽이가 이동하고 미끄러진 거리 = 69 m
===================
달팽이가 이동한 거리 = 74 m
달팽이가 이동하고 미끄러진 거리 = 72 m
===================
달팽이가 이동한 거리 = 77 m
달팽이가 이동하고 미끄러진 거리 = 75 m
===================
달팽이가 이동한 거리 = 80 m
달팽이가 이동하고 미끄러진 거리 = 78 m
===================
달팽이가 이동한 거리 = 83 m
달팽이가 이동하고 미끄러진 거리 = 81 m
===================
달팽이가 이동한 거리 = 86 m
달팽이가 이동하고 미끄러진 거리 = 84 m
===================
달팽이가 이동한 거리 = 89 m
달팽이가 이동하고 미끄러진 거리 = 87 m
===================
달팽이가 이동한 거리 = 92 m
달팽이가 이동하고 미끄러진 거리 = 90 m
===================
달팽이가 이동한 거리 = 95 m
달팽이가 이동하고 미끄러진 거리 = 93 m
===================
달팽이가 이동한 거리 = 98 m
달팽이가 이동하고 미끄러진 거리 = 96 m
===================
달팽이가 이동한 거리 = 101 m
달팽이가 이동하고 미끄러진 거리 = 99 m
===================
달팽이가 이동한 거리 = 104 m
달팽이가 이동하고 미끄러진 거리 = 102 m
===================
이동한 횟수 = 30회

 

//===========================================================================

// 메뉴 정하기 프로그램

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>

int random(int x);              // 랜덤 메뉴 고르기용 함수 선언

int main() {
int menu = 0;                   //음식의 종류
int menu2;                       //음식의 이름
char teuk1[10][20] = { "불고기","찜닭","닭도리탕","스테이크","월남쌈","수육","아귀찜","쌈밥","낙지볶음" };
char jjigae2[10][20] = { "된장찌개","김치찌개","부대찌개","순두부찌개","청국장찌개","동태찌개","비지찌개","고추장찌개","오징어찌개" };
char bab3[10][20] = { "카레","비빔밥","오므라이스","김치볶음밥","제육덮밥","연어덮밥","치킨마요덮밥","돈부리","오징어덮밥" };
char hejang4[10][20] = { "순댓국","콩나물국밥","북엇국","홍합탕","뼈해장국","대파라면","매생이국","선지해장국","우거지국" };
char myeon5[10][20] = { "라멘","토마토스파게티","크림스파게티","냉면","잔치국수","비빔국수","칼국수","우동","콩국수" };
char pyeon6[10][20] = { "샌드위치","프렌치토스트","떡볶이","시리얼","샐러드","밥버거","핫도그","편의점도시락","김밥/유부초밥" };
char tang7[10][20] = { "육개장","닭개장","떡국","소고기뭇국","시래깃국","갈비탕","추어탕","삼계탕","대구탕" };
char etc8[10][20] = { "초밥","짜장면","짬뽕","깐풍기","마파두부","잡채","팟타이","쌀국수","햄버거" };


//printf로 쓰려다가 문자열 배열로 반복문출력하기로 함.
//올랜덤하려다가 배열을 통합해서 그 안에서 돌릴 수 없다는 것을 깨닫고 개별적으로 랜덤 돌리기로 함


do {
printf("먹고 싶은 음식의 종류를 고르세요\n\n");
printf("1. 특식\n2. 찌개\n3. 덮밥/볶음밥\n4. 해장\n5. 면\n6. 간편식\n7. 국/탕\n8. 기타\n");
printf("==================\n");
scanf_s("%d", &menu);
printf("==================\n");
} while ((1 > menu) || (menu > 8));             // 메뉴 고르는 데 1~8이 나오지 않았을 때 다시 do 출력


if (menu == 1) {
for (int i = 0; i < 9; i++) {
printf("%d  %s\n", i+1, teuk1[i]);
}
printf("10 랜덤\n");                            // 여기까지 메뉴 표시, 랜덤을 따로 놓은 이유는 배열 내에서 난수를 돌리려고
printf("==================\n");
scanf_s("%d", &menu2);
printf("==================\n");
if (menu2 == 10) {
int tmp = 0;
tmp = random(menu2);
printf("\n고르신 메뉴는 %s입니다!\n", teuk1[tmp - 1]); // 랜덤 선택 시 출력, -1은 배열과의 차이를 고려 입력상 편의를 위해
}
else if ((1 <= menu2) && (menu2 <= 9)) {
printf("\n고르신 메뉴는 %s입니다!\n", teuk1[menu2 - 1]);
}
else {
printf("\n메뉴를 다시 입력해주세요!\n");                        // 오류 방지
}
}
else if (menu == 2) {
for (int i = 0; i < 9; i++) {
printf("%d  %s\n", i + 1, jjigae2[i]);            
}
printf("10 랜덤\n");
printf("==================\n");
scanf_s("%d", &menu2);
printf("==================\n");
if (menu2 == 10) {
int tmp = 0;
tmp = random(menu2);
printf("\n고르신 메뉴는 %s입니다!\n", jjigae2[tmp - 1]);
}
else if ((1 <= menu2) && (menu2 <= 9)) {
printf("\n고르신 메뉴는 %s입니다!\n", jjigae2[menu2 - 1]);
}
else {
printf("\n메뉴를 다시 입력해주세요!\n");
}
}
else if (menu == 3) {
for (int i = 0; i < 9; i++) {
printf("%d  %s\n", i + 1, bab3[i]);
}
printf("10 랜덤\n");
printf("==================\n");
scanf_s("%d", &menu2);
printf("==================\n");
if (menu2 == 10) {
int tmp = 0;
tmp = random(menu2);
printf("\n고르신 메뉴는 %s입니다!\n", bab3[tmp - 1]);
}
else if ((1 <= menu2) && (menu2 <= 9)) {
printf("\n고르신 메뉴는 %s입니다!\n", bab3[menu2 - 1]);
}
else {
printf("\n메뉴를 다시 입력해주세요!\n");
}
}
else if (menu == 4) {
for (int i = 0; i < 9; i++) {
printf("%d  %s\n", i + 1, hejang4[i]);
}
printf("10 랜덤\n");
printf("==================\n");
scanf_s("%d", &menu2);
printf("==================\n");
if (menu2 == 10) {
int tmp = 0;
tmp = random(menu2);
printf("\n고르신 메뉴는 %s입니다!\n", hejang4[tmp - 1]);
}
else if ((1 <= menu2) && (menu2 <= 9)) {
printf("\n고르신 메뉴는 %s입니다!\n", hejang4[menu2 - 1]);
}
else {
printf("\n메뉴를 다시 입력해주세요!\n");
}
}
else if (menu == 5) {
for (int i = 0; i < 9; i++) {
printf("%d  %s\n", i + 1, myeon5[i]);
}
printf("10 랜덤\n");
printf("==================\n");
scanf_s("%d", &menu2);
printf("==================\n");
if (menu2 == 10) {
int tmp = 0;
tmp = random(menu2);
printf("\n고르신 메뉴는 %s입니다!\n", myeon5[tmp - 1]);
}
else if ((1 <= menu2) && (menu2 <= 9)) {
printf("\n고르신 메뉴는 %s입니다!\n", myeon5[menu2 - 1]);
}
else {
printf("\n메뉴를 다시 입력해주세요!\n");
}
}
else if (menu == 6) {
for (int i = 0; i < 9; i++) {
printf("%d  %s\n", i + 1, pyeon6[i]);
}
printf("10 랜덤\n");
printf("==================\n");
scanf_s("%d", &menu2);
printf("==================\n");
if (menu2 == 10) {
int tmp = 0;
tmp = random(menu2);
printf("\n고르신 메뉴는 %s입니다!\n", pyeon6[tmp - 1]);
}
else if ((1 <= menu2) && (menu2 <= 9)) {
printf("\n고르신 메뉴는 %s입니다!\n", pyeon6[menu2 - 1]);
}
else {
printf("\n메뉴를 다시 입력해주세요!\n");
}
}
else if (menu == 7) {
for (int i = 0; i < 9; i++) {
printf("%d  %s\n", i + 1, tang7[i]);
}
printf("10 랜덤\n");
printf("==================\n");
scanf_s("%d", &menu2);
printf("==================\n");
if (menu2 == 10) {
int tmp = 0;
tmp = random(menu2);
printf("\n고르신 메뉴는 %s입니다!\n", tang7[tmp - 1]);
}
else if ((1 <= menu2) && (menu2 <= 9)) {
printf("\n고르신 메뉴는 %s입니다!\n", tang7[menu2 - 1]);
}
else {
printf("\n메뉴를 다시 입력해주세요!\n");
}
}
else if (menu == 8) {
for (int i = 0; i < 9; i++) {
printf("%d  %s\n", i + 1, etc8[i]);
}
printf("10 랜덤\n");
printf("==================\n");
scanf_s("%d", &menu2);
printf("==================\n");
if (menu2 == 10) {
int tmp = 0;
tmp = random(menu2);
printf("\n고르신 메뉴는 %s입니다!\n", etc8[tmp - 1]);
}
else if ((1 <= menu2) && (menu2 <= 9)) {
printf("\n고르신 메뉴는 %s입니다!\n", etc8[menu2 - 1]);
}
else {
printf("\n메뉴를 다시 입력해주세요!\n");
}
}
return 0;
}

int random(int x) {


srand((unsigned)time(NULL)); 
int i = (rand() % 9)+1; 
return i; 
}

 

// 위의 printf에서 입출력의 편의를 위해 1~9만을 입력하여 0의 배열에서부터 출력이 가능하도록 하였으나,

// rand의 난수를 생성하는 과정에서 0을 생성하게 되면 0 - 1로 출력하게 되어 -1배열을 출력하라는 명령이 되어 쓰레기값이 출력된다

// 그래서 애초부터 난수가 리턴될 때도 고정된 숫자를 입력할 때와 같이 1~9를 리턴하여 

// 출력은 그대로 0~8배열 내에서 출력되도록 했다 그렇게 한 결과 랜덤으로 첫번째 배열이 나올 경우에도 오류가 나지 않았다