본문 바로가기

Lobo's study room/[혼공단]c언어스터디

[2주차]3.변수와 데이터 입력 && 4.연산자

03-1|변수 확인  문제

1.다음 자료형 중에서 실수형에 O표를 하세요.

2.다음 프로그램의 실행결과를 예상해보세요.

 

a의 초기값 0

a=a+1;

a값 1로 업데이트.

a=a+2;

업데이트된 값인 1에서 2 더해서 a 업데이트. a의 최종값 3.

a=a+3;

업데이트된 값인 3에서 3 더해서 a 업데이트.a의 최종값 6.

따라서 a의 값은 6이 나올것을 예상했습니다.

실제 코드 실행결과도 6으로 예상했던 값이 맞은것을 확인할 수 있었습니다.

 

3.국어, 영어, 수학 점수를 저장할 변수(kor, eng, mat)를 선언하고 각각 70, 80, 90점으로 초기화합니다. 총점을 저장할 변수(tot)를 선언하여 세 과목의 합을 구하고 세 과목의 점수와 총점을 출력하는 프로그램을 작성하세요.

#include <stdio.h>

int main(void)
{
int kor = 70;
int eng = 80;
int mat = 90;

int sum;

sum = kor + eng + mat;

printf("kor:%d, eng:%d, mat:%d", kor, eng, mat);
printf("sum:%d\n", sum);

return 0;
}

03-2|데이터 입력 확인  문제

1.다음과 같이 변수가 선언되어 있을 때, scanf 함수의 사용법이 옳은 것을 고르세요.(오답!)

①scanf(“%d”, &ch);(x)

문자형이니까 %c

②scanf(“%d”, &sh);(x)

short는 %hd

③scanf(“%d%f”, &in, &ft);(o)

변수가 여러개일때는 이어서 사용

④scanf(“%f”, &db);(x)

double형 변수는 %lf

============================

여기서 정답을 고를때 4번을 골랐었는데

double는 %lf, float는 %f 





2.다음 프로그램의 빈칸에 알맞은 내용을 채워보세요.

 

#include <stdio.h>

int main(void)
{
	char fruit[20];
    int cnt;
    
    printf("좋아하는 과일 : ");
    scanf("%s", fruit);
    printf("몇 개 : ");
    scanf("%d", &cnt);
    printf("%s를 %d개 드립니다.", fruit, cnt);
    
    return 0;
}

 

3.키보드로 문자를 입력하여 아스키 코드 값을 출력하는 프로그램을 작성하세요. 어떤 문자가 입력될지는 실행할 때 결정합니다.

#include <stdio.h>

int main(void)
{
	char ch;
    
    printf("문자 입력:");
    scnaf("%c", &ch);
    printf("%c문자의 아스키 코드 값은 %d입니다.");
    
    return 0;
}

04-1|산술 연산자, 관계 연산자, 논리 연산자

1.4.0과 1.2의 덧셈, 뺄셈, 곱셈, 나눗셈을 한 값을 소수점 이하 첫째 자리까지 출력하세요.

#include <stdio.h>

int main(void)
{
	double a = 4.0, b = 1.2;
    
    printf("%.1f + %.1f = %.1f\n", a, b, a + b);
    printf("%.1f - %.1f = %.1f\n", a, b, a - b);
    printf("%.1f * %.1f = %.1f\n", a, b, a * b);
    printf("%.1f / %.1f = %.1f\n", a, b, a / b);
    
    return 0;
}

 

2.두 과목의 점수를 입력하여 평균을 출력하는 프로그램을 작성하세요. 평균은 소수점 이하 첫째 자리까지 출력하세요.

#include <stdio.h>

int main(void)
{
	int a, b, tot;
    double avg;
    
    printf("두 과목의 점수 : ");
    scanf("%d %d", &a, &b);			//점수 입력
    tot = a + b;					//두 점수를 더해 총점을 구한다.
    avg = tot / 2.0;
    //평균 계산, tot가 정수형이므로 나누는 값을 2.0과 같이 실수값으로 사용해야 한다.
    //그렇지 않으면 피연산자가 모두 정수 값이므로 정수인 몫을 계산한다.
    
    printf("평균 : %.1f\n", avg);
    
    return 0;
}

3.태희가 신청한 전체 학점과 평점을 계산하여 신청 학점이 10학점 이상이고 평점 평균이 4.0을 넘는 경우 1을 출력하고, 그렇지 않으면 0을 출력하는 프로그램을 작성하세요. 태희가 이전 학기에 신청한 과목당 학점과 얻은 점수는 아래와 같습니다.

*국어-3학점-3.8

*영어-5학점-4.4

*수학-4학점-3.9

각 변수명은 다음과 같습니다.

 

국어 영어 수학 전체 학점 결과 저장 국어 평점 영어 평점 수학 평점 평점 평균
kor eng mat credits res kscore escore mscore grade

#include <stdio.h>

int main(void)
{
	int kor = 3, eng = 5, mat = 4;								
    //국어, 영어, 수학의 학점 초기화
    int credits;												
    //전체 학점을 저장할 변수
    int res;													
    //연산 결과를 저장할 변수
    double kscore = 3.8, escore = 4.4, mscore = 3.9;			
    //각 과목의 평점 초기화
    double grade;												
    //평점의 평균을 저장할 변수
    
    credits = kor + eng + mat;									
    //전체 학점 계산
    grade = (kor * kscore + eng * escore + mat * mscore)/credits;//평점의 평균 계산
    res = (credits >= 10)&&(grade > 4,0);							
    //평점 평균이 4.0보닫 크면 참이므로 결과는 1, 그렇지 않으면 거짓으로 결과는 0
    printf("%d\n", res);
    
    return 0;
}

04-2|그 외 유용한 연산자

1.short형과 long형의 자료형의 크기를 비교하여 크기가 큰 자료형이 무엇인지 출력하세요.

#include <stdio.h>

int main(void)
{
	int res;
    res = sizeof(short)>sizeof(long);
    printf("%s\n", (res==1)?"short":"long");
    
    return 0;
}

2.야구 경기장의 좌석 수가 70개고 입장객 수가 65명일 때 입장률을 출력하세요.

#include <stdio.h>

int main(void)
{
	int seats = 70;		//경기장의 관중수(seats) 초기화
    int audience = 65;	//관중수(audience) 초기화
    double rate;		//입장률(rate)를 저장할 변수
    
    rate = (double)audience/(double)seats*100.0;
    //'audience/seats'를 바로 연산하면 둘 다 int형이므로 몫을 계산한다.
    //이 경우 관중수가 좌석 수보다 크지 않으므로 항상 0이 출력된다.
    //나누기(/)와 곱하기(*)는 우선 순위가 같으므로 연산 방향에 따라 왼쪽부터
    //나누기 연산이 먼저 수행된다.
    printf("입장률 : %.1lf%%\n", rate);	//입장률 출력
    
    return 0;
}

3. 3.76시간은 몇 시간, 몇 분, 몇 초인지 출력하세요.

#include <stdio.h>

int main(void)
{
	int hour, min, sec;	//시, 분, 초를 저장할 변수
    double time = 3.76;	//시간 초기화
    
    hour = (int)time;	//형 변환으로 정수 부분만을 골라낸다.
    time -= hour;		//한 시간이 안되는 부분만을 다시 저장한다.
    time *= 60.0;		//분 단위로 환산
    min = (int)time;	//정수 부분만을 골라내어 분으로 저장한다.
    time -= min;		//일분이 안되는 부분만을 다시 저장한다.
    time *= 60.0;		//초 단위로 환산
    sec = (int)time;	//정수 부분만을 골라내어 초로 저장한다.
    printf("3.76시간은 %d시간 %d분 %d초입니다.\n", hour, min, sec);
    //변환한 시간 출력
    
    return 0;
}

도전1|체중관리 프로그램

체중(kg)과 키(cm)를 입력하여 BMI(신체질량지수)를 구한 후에 BMI의 값이 20.0 이상 25.0 미만이면 “표준입니다”를 출력하고 그렇지 않으면 “체중관리가 필요합니다”를 출력합니다.

BMI는 표준체중, 저체중, 과체중을 판별하는 수치로 몸무게를 키의 제곱으로 나누어 구합니다.

이때 키는 미터(m)단위로 계산합니다.

#include <stdio.h>

int main(void)
{
	double weight, height, bmi;
    
    printf("몸무게(kg)와 키(com) 입력 : ");
    scanf("%lf%lf",&weight, &height);
    
    height = height / 100.0;
    bmi = weight / (height * height);
    
    if(bmi >= 20 && bmi < 25)
    {
    	printf("표준입니다");
    }
    else{
    	printf("체중관리가 필요합니다");
        }
    return 0;
 }