float long char double int unsigned short
long char int short : 정수형
unsigned : 정수형의 양수 데이터를 저장할때 사용한다.
#include <stdio.h>
int main(void)
{
int a=0; //변수 a를 0으로 초기화
a=a+1; //a(0)에 a(0)+1 값을 저장 -> a=1
a=a+2; //a(1)에 a(1)+2 값을 저장 -> a=3
a=a+3; //a(3)에 a(3)+2 값을 저장 -> a=6
printf("a: %d",a); // 따라서 최종 a값인 6이 출력
return 0;
}
실행결과
6
#include <stdio.h>
int main(void)
{
> int kor=70, eng=80, mat=90; //점수를 저장할 변수 선언, 초기화
> int tot; //점수 총점을 저장할 변수 선언
> tot=kor+eng+mat; //tot변수에 국어, 영어, 수학 점수 변수 합의 값 저장
> printf("국어: %d, 영어: %d, 수학: %d\n", kor, eng, mat); //국어, 영어, 수학 점수 출력
> printf("총점: %d", tot); // 총점 출력
return 0;
}
실행결과
국어 : 70, 영어 : 80, 수학 : 90
총점 : 240
char ch; short sh; int in; float ft; double db;
① scanf(%d", &ch);
② scanf(%d", &sh);
③ scanf(%d%f", &in, &ft);
④ scanf(%f", &db);
정답: 3
1 -> 자료형 char의 변환 문자는 %c가 사용되어야 한다.
2 -> 자료형 short의 변환 문자는 %ud가 사용되어야 한다.
4 -> 자료형 double의 변환 문자는 %lf가 사용되어야 한다.
#include <stdio.h>
int main(void)
{
char fruit[20];
int cnt;
printf("좋아하는 과일: ");
> scanf("%s", fruit ); //문자열을 입력하므로 &를 사용하지 않음
printf("몇 개: ");
> scanf("%d", &cnt); //cnt 변수는 정수형이므로 &를 사용
printf("%s를 %d개 드립니다.", fruit, cnt);
return 0;
}
실행결과
좋아하는 과일 : 망고
몇 개 : 3
망고를 3개 드립니다.
#include <stdio.h>
int main(void)
{
char ch;
printf("문자 입력: ");
> scanf("%c, &ch); //문자 입력, char형이므로 &를 붙인다.
> printf("%c문자의 아스키 코드 값은 %d입니다.", ch, ch); //char형 변수는 변환문자에 따라 출력되는 값이 달라진다. %c를 사용하면 문자가, %d를 사용하면 정수가 출력된다.
return 0;
}
실행결과
문자 입력: A/t
A/t 문자의 아스키 코드 값은 65/116입니다.
#include <stdio.h>
int main(void)
{
double a = 4.0, b = 1.2;
> printf("%.1lf + %.1lf = %.1lf\n", a, b, a + b);
> printf("%.1lf - %.1lf = %.1lf\n", a, b, a - b);
> printf("%.1lf * %.1lf = %.1lf\n", a, b, a * b);
> printf("%.1lf / %.1lf = %.1lf\n", a, b, a / b);
return 0;
}
실행결과
4.0+1.2=5.2
4.0-1.2=2.8
4.0*1.2=4.8
4.0/1.2=3.3
#include <stdio.h>
int main(void)
{
int a, b, tot;
double avg;
printf("두 과목의 점수 : ");
> scanf("%d%d",&a, &b); //scanf함수에서 변환문자를 여러개 쓸 때는 콤마(,)를 사용하지 않고 이어쓰기(이거틀림)
tot = a + b;
avg = tot / 2.0;
> printf("평균: %.1lf\n",avg);
return 0;
}
실행결과
두 과목의 점수: 70 85
평균: 77.5
국어-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, res; //전체 학점, 결과 저장 변수 선언
> double kscore = 3.8, escore = 4.4, mscore = 3.9; //평점 변수 선언, 초기화. 실수이므로 double 자료형
> double grade; //평점 평균 변수 선언
> credits = kor + eng + mat; //전체 학점=국+영+수
> grade = (kscore + escore + mscore) / 3; //평점의 평균을 계산 -> 과목별 평점을 더하고 3으로 나눴으나 오답
//grade = (kor*kscore + eng*escore + mat*mscore) / credits; -> 옳은 코드
> res = (credits >= 10) && (grade >= 4.0); // 전체학점이 10학점 이상이면서(AND) 평점 평균이 4.0보다 크면 1(T) 출력, 아니면 0(F)출력
> printf("%d", res); //res 출력
return 0;
}
실행결과
1
#include <stdio.h>
int main(void)
{
int res;
> res = (sizeof(short) > sizeof(long)) ? 1 : 0;
> printf("%d\n\n", res); //0은 출력했는데 long을 어떻게 출력하는지 몰랐음 예약어라서 변수로 쓸 수도 없고?
//printf("%s\n", (res==1) ? "short" : "long"); -> printf 함수에서 수식을 쓸 수 있는지 몰랐다.
return 0;
}
실행결과
long
#include <stdio.h>
int main(void)
{
> int seats=70, audience=65;
> double rate;
> rate = ((double)audience / (double)seats)*100;
> printf("입장률: %.1lf\n%%", rate); // % 자체를 출력할 때는 두 번 연속으로 입력하기
return 0;
}
실행결과
입장률 : 92.9%
내가 작성한 코드
#include <stdio.h>
int main(void)
{
int hour, min, sec;
double time=3.76;
hour = (int)time;
double ra = time - hour;
double ra2 = (ra * 60);
min = (int)ra2;
double ra3 = ra2 - min;
sec= (int) (ra3 * 60);
printf("%.2lf시간은 %d시간 %d분 %d초입니다.", time, hour, min, sec);
return 0;
}
해설지 코드
#include <stdio.h>
int main(void)
{
int hour, min, sec;
double time=3.76;
hour=(int)time; // time 변수를 int로 형 변환하여 정수만 잘라내기
time -= hour; // time = time - hour (0.76)
time *= 60.0; // time = time * 60.0 (45.6)
min=(int)time; // 형 변환
time -=min; // time = time - min (0.6)
time *=60; // time = time * 60
sec = (int)time;
printf("3.76시간은 %d시간 %d분 %d초입니다.\n", hour, min, sec);
return 0;
}
실행결과
3.76시간은 3시간 45분 35초입니다.
둘 다 결과는 동일하게 나오나 해설지의 코드가 훨씬 간결하다.
복합대입 연산자를 생각도 못 해서 변수를 만들어서 결과를 대입했음..
BMI는 표준체중, 저체중, 과체중을 판별하는 수치로 몸무게를 키의 제곱으로 나누어 구합니다. 이때 키는 미터(m)단위로 계산합니다.
실행결과
몸무게(kg)와 키(cm) 입력: 66 185.6(입력)
체중관리가 필요합니다.
20행에서 (cm * 0.01) 사이에 *를 안 넣은걸로 30분을 헤맴
나도 모르게 수학 문제 풀듯이 풀어서 헷갈렸다.
안녕하세요. 혹시 4-2문제에서 sec 0.6*60 출력 35입니까? 36아닙니까?