C언어 과제 정리
//간단한 계산기 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배열 내에서 출력되도록 했다 그렇게 한 결과 랜덤으로 첫번째 배열이 나올 경우에도 오류가 나지 않았다