CS50 스터디 미션 2, 3주차 문제풀이
2주차 팀미션 (C언어 기초)
문제 1
#include <stdio.h>
#include <cs50.h>
int in_order(void);
int ch_stock(int x);
int main(void)
{
int o = in_order();
int s = ch_stock(5);
float p = 10000;
float op = o*p;
float t = op*(10/100);
printf("주문건수 : %i 건\n", o);
printf("기존 재고량 : %i 개\n", s);
printf("남은 재고량 : %i 개\n", s-o);
printf("매출액(부가세 포함) : %.2f 원\n", op+t);
}
int in_order(void)
{
int n;
do
{
n = get_int("주문 건수를 입력해 주세요:\n");
}
//주문건수 조건 걸기 : 주문건수는 0보다 작을수 없음
while( n < 0 );
return n;
}
int ch_stock(int x)
{
//재고수량 맞는지 확인하기
char answer = get_char("기존 재고수량은 %i 개 입니다. 맞으면 y, 아니면 n을 입력하세요:\n", x);
if ( answer == 'y' || answer == 'Y' )
{
return x;
}
//재고수량이 실제와 다르면 직접 입력받기
else
{
return x = get_int("실재고를 입력해 주세요:\n");
}
}
문제 2.
#include <stdio.h>
#include <cs50.h>
int main(void) {
int targetAmount = get_int("목표 금액이 얼마인가요?\n"); // 목표 원금
printf("원금 + 이자: %.0f원 입니다.\n", targetAmount*1.012); // 이자 + 원금
}
// 목표 금액이 얼마인가요?
// 10000
// 원금 + 이자: 10120원 입니다.
// 주문 건수를 입력해 주세요:
// 3
// 기존 재고수량은 5 개 입니다. 맞으면 y, 아니면 n을 입력하세요:
// n
// 실재고를 입력해 주세요:
// 5
// 주문건수 : 3 건
// 기존 재고량 : 5 개
// 남은 재고량 : 2 개
// 매출액(부가세 포함) : 30000.00 원
믄제 3.
#include <string.h>
#include <cs50.h>
#include <stdio.h>
int main(void) {
// 요일별 메뉴 인덱스
string menu[7];
menu[0] = "월요일 : 청국장";
menu[1] = "화요일 : 비빔밥";
menu[2] = "수요일 : 된장찌개";
menu[3] = "목요일 : 칼국수";
menu[4] = "금요일 : 냉면";
menu[5] = "토요일 : 소불고기";
menu[6] = "일요일 : 오삼불고기";
string inputDay = get_string("요일을 입력하세요: ");
// 조건별로 인덱스 불러오기
if (strcmp(inputDay, "월요일") == 0)
printf("%s\n", menu[0]);
else if (strcmp(inputDay, "화요일") == 0)
printf("%s\n", menu[1]);
else if (strcmp(inputDay, "수요일") == 0)
printf("%s\n", menu[2]);
else if (strcmp(inputDay, "목요일") == 0)
printf("%s\n", menu[3]);
else if (strcmp(inputDay, "금요일") == 0)
printf("%s\n", menu[4]);
else if (strcmp(inputDay, "토요일") == 0)
printf("%s\n", menu[5]);
else if (strcmp(inputDay, "일요일") == 0)
printf("%s\n", menu[6]);
return 0;
}
// 요일을 입력하세요: 월요일
// 월요일 : 청국장
// $ ./mission3
// 요일을 입력하세요: 목요일
// 목요일 : 칼국수
3주차 팀미션 (배열)
문제 1.
#include <cs50.h>
#include <stdio.h>
void guide(void);
void change_grade(int in_score);
int find_index(int in_score, int leng);
char ch_plus(int in_score, int plusmark);
int main(void)
{
int in_score;
guide();
while( true )
{
in_score = get_int("성적을 입력 하세요 : ");
if( in_score >= 0 && in_score <= 100 )
{
change_grade(in_score);
}
else if(in_score==999)
{
printf("학점 프로그램을 종료 합니다\n");
break;
}
else
{
printf("** %i 성적을 올바르게 입력하세요. 범위는 0~100 입니다.\n", in_score);
}
}
}
void guide(void)
{
printf("학점프로그램\n");
printf("종료를 원하면 999를 입력하세요\n");
printf("[학점 테이블]]\n");
printf("점수 : A+ A B+ B C+ C D+ D F \n");
printf("학점 : 95 90 85 80 75 70 65 60 0 \n");
}
void change_grade(int in_score)
{
int leng = 5;
int plusmark=5; //
char grades[] = {'A','B','C','D','F'};
if( in_score < 60 ) {
in_score = 0;
}
printf("성적은 %c%c 입니다\n", grades[find_index(in_score, leng)], ch_plus(in_score, plusmark));
}
int find_index(int in_score, int leng)
{
int scores[] = {90,80,70,60,0};
int cg_grade1=(in_score/10)*10;
for(int i = 0; i < leng ; i++ )
{
if( scores[i] == cg_grade1)
{
return index = i;
}
}
return index;
char ch_plus(int in_score, int plusmark)
{
int cg_grade2=in_score%10;
if( in_score == 100 || cg_grade2 >= plusmark)
{
return '+';
}
else
{
return 0;
}
}
/*
학점프로그램
종료를 원하면 999를 입력하세요
[학점 테이블]
점수 : A+ A B+ B C+ C D+ D F
학점 : 95 90 85 80 75 70 65 60 0
성적을 입력 하세요 : 0
성적은 F 입니다
성적을 입력 하세요 : 10
성적은 F 입니다
성적을 입력 하세요 : 20
성적은 F 입니다
성적을 입력 하세요 : 30
성적은 F 입니다
성적을 입력 하세요 : 70
성적은 C 입니다
성적을 입력 하세요 : 86
성적은 B+ 입니다
성적을 입력 하세요 : 97
성적은 A+ 입니다
성적을 입력 하세요 : 100
성적은 A+ 입니다
성적을 입력 하세요 : 123
** 123 성적을 올바르게 입력하세요. 범위는 0 ~ 100 입니다.
성적을 입력 하세요 :
*/
문제 2.
#include <stdio.h>
#define SIZE 500000
int main(int arge, char*argv[]) {
int n;
int nSum = 0;
int sum = 0;
scanf("%d", &n);
// 1부터 N의 숫자중 K가 빠진 배열
int partArr[SIZE];
int lengthOfPartArr = n-1; // n - 1을 저장
// 1 부터 N 까지의 정상적인 숫자의 합
for (int j = 0; j <= n; j++) {
nSum += j;
}
// 1 부터 N-1 까지의 숫자의 합
for(int i = 0; i < lengthOfPartArr; i++){
scanf("%d", &partArr[i]);
sum += partArr[i]; // 띄어쓰기가 있을 때 마다 partArr[i]에 하나씩 저장
}
printf("K = %d\n", nSum - sum); // 1 ~ n 숫자를 더한 값에서 n-1의 숫자를 더한 값을 빼기
// TODO: n과 partArr를 이용하여, K를 구하라
return 0;
}
Comments