C - 기초 중간 정리 (데이터형~배열)
- 다음 기억공간의 이름으로서 가능한 것은?
Char No2 _abcd intfloat %int
풀이)
Char No2, _abcd intfloat
변수 이름 짓는 규칙:
영문자, 숫자, _ 조합으로 만든다.
예약어는 사용할 수 없다.(-> char, int, short, float, double)
[프로그램 개발 지식 공유]
- 다음 데이터형에 대해 정수형인지 실수형인지와 기억 공간의 크기를 적으시오
기본형 | 정수or실수형 | 크기(bytes) |
---|---|---|
int | ||
풀이)
기본형 | 정수or실수형 | 크기(bytes) |
---|---|---|
char | 정수 | 1byte |
int | 정수 | 4byte |
long | 정수 | 4byte |
float | 실수 | 4byte |
double | 실수 | 8byte |
- C언어에서 함수 호출 시, 매개변수 전달방식은?
풀이)
call by value
C언어에서는 값에 의한 호출 방식을 사용한다.
포인터를 이용하면 call by reference 방식을 사용할 수 있다.
참고하면 좋은 글!
- 다음을 C코딩으로 표현
1) 2진수 1101을 정수형변수 k에 보관
2) 16진수 B34를 정수형변수 hex에 보관
3) val이라는 기억공간의 값을 문자로 출력한다.
풀이)
정수 리터럴
0b0101 : 2진수 정수 0101의 리터럴 표현
0741 : 8진수 정수 741의 리터럴 표현
0xAB3 : 16진수 정수 AB3의 리터럴 표현
정수 출력 서식 지정자
%d : char, short, int 를 정수로 출력
%o : 부호 없는 8진 정수
%x : 부호 없는 16진 정수(소문자)
%X : 부호 없는 16진 정수(대문자)
%ld : long 을 정수로 출력
%lld : long long 을 정수로 출력
문자 리터럴
‘h’ : 문자 h 리터럴 표현
“hello world” : 문자열 hello world 리터럴 표현
문자 출력 서식 지정자
%c : 문자
%s : 문자열(문자 배열)
- 다음 출력문으로 나타나는 내용을 적으시오
printf("Hi%3d \n \ \n&",34);
printf("\ \ \n%8.3f",3.2);
풀이)
%3d 라는 것은 출력할 공간 3칸을 확보하고, 인자로 받는 34를
그 자리에 오른쪽으로 붙여서 출력한다는 의미.
&는 그대로 출력한다.
\\
: 역슬래쉬 두개는 출력 시 역슬래쉬 하나를 그대로 출력한다는 의미이다.
\n
: 커서를 다음 줄 맨 앞쪽(왼쪽)으로 붙인다.
%8.3f : 8칸의 출력한 공간을 확보하고, 소수점은 3자리까지
반올림하여 출력하겠다는 뜻이다. 만약 소수점이 첫번째까지
있는 숫자라면, 오른쪽 나머지는 0으로 채운다.
Hi 34
\n&\
3.200
(자릿수 맞추어서 출력하기, 소수점 반올림 출력)참고하면 좋은 글!
- 정수형 변수 i를 활용하여 다음과 같이 출력하고자 한다.
각 1~4에 들어갈 내용은?
-4 0 4 8 12 16 20 …. 124
for(1;2;3) {
printf("4 ",i);
}
풀이)
1 : i = -4
2 : i <= 124
3 : i += 4
4 : %d
- 정수형 변수 k를 활용하여 다음과 같이 출력하고자 한다.
완전한 프로그램을 작성하시오.(다음 숫자가 계산된 값들 나열)
$4/(32)$ , $5/(43)$ , … , $100/(99 * 98)$
풀이)
#include<stdio.h>
main() {
int i;
float result;
for(i=2;i<=98;i++) {
result=(float)(i+2)/((i+1)*i);
printf("%7.6f\n",result);
}
}
- sum과 x라는 2개의 변수만을 이용하여 아래의 내용을 계산하는 완전한 프로그램을 작성하시오(for문 이용)
1 + 4 + 7 + 10 + 13 + 16 + 19 + 22
풀이)
#include<stdio.h>
main() {
int i,sum = 0;
for(i = 1;i<=22;i+=3) {
sum += i;
}
}
- 다음에 주어진 배열로부터 각 문항을 코딩하시오(for문 이용, 주요 부분 코딩)
int m[12] = {10,17,22,14,19,4,25,12,35,9,11,8};
1) 순서대로 출력
2) 역순 출력
3) 배열 내에 저장된 값이 짝수인 경우에 한해 모두 출력
4) 평균을 출력
5) 30 이하인 값의 합계
6) 최소값 출력
풀이)
#include<stdio.h>
main() {
int m[12] = {10,17,22,14,19,4,25,12,35,9,11,8};
int i, sum=0,min = m[0];
float avr;
int mSize = sizeof (m) / sizeof (int);
for(i=0;i<mSize;i++) {
// 주요 부분
}
}
1) 순서대로 출력
printf("%d ",m[i]);
// m[0], m[1], ... , m[11]
2) 역순 출력
printf("%d ",m[(mSize-1) - i]);
// m[11], m[10], ... , m[0]
3) 배열 내에 저장된 값이 짝수인 경우에 한해 모두 출력
if(m[i] % 2 == 0) {
printf("%d ", m[i]);
}
4) 평균을 출력
#include<stdio.h>
main() {
int m[12] = {10,17,22,14,19,4,25,12,35,9,11,8};
int i, sum=0;
float avr;
int mSize = sizeof (m) / sizeof (int);
for(i=0;i<mSize;i++) {
sum += m[i];
}
avr = sum/mSize;
printf("%d ", avr);
}
5) 30 이하인 값의 합계
if(m[i] <= 30) {
printf("%d \n", m[i]);
}
6) 최소값 출력
#include<stdio.h>
main() {
int m[12] = {10,17,22,14,19,4,25,12,35,9,11,8};
int i, min = m[0];
float avr;
int mSize = sizeof (m) / sizeof (int);
for(i=0;i<mSize;i++) {
if(m[i]<min) {
min = m[i];
}
}
printf("%d ", min);
}
- “We are the Champion, we will keep on fighting till the end”
1) 위 문자열에 대한 선언
2) 문자 갯수는?
3) 모두 대문자로 바꾸어라
4) 문자 e의 갯수는?
5) THE 의 개수는?
6) 공백문자, 특수문자의 갯수는?
풀이
1) 위 문자열에 대한 선언
char str[] = "We are the Champion, we will keep on fighting till the end";
2) 문자 갯수는?
int i,count = 0;
for(i=0;str[i] != '\0';i++) {
count++;
}
3) 모두 대문자로 바꾸어라
아스키코드표 참고:
‘A’ = 65
‘a’ = 97
space = 32
‘0’ = 48
null = 0
int i;
int delta = 'a'-'A';
for(i=0;str[i] != '\0';i++) {
if(str[i] >= 'a' && str[i] <= 'z') { // 소문자라면
str[i] -= delta; // 대문자로 바꾸기
}
}
printf("%s",str);
4) 문자 e의 갯수는?
#include<stdio.h>
main() {
int i,count = 0;
char str[] = "We are the Champion, we will keep on fighting till the end";
int delta = 'a'-'A';
for(i=0;str[i] != '\0';i++) {
if(str[i] == 'e') {
count++;
}
}
printf("%d",count);
}
5) THE 의 개수는?
#include<stdio.h>
main() {
int i,count = 0;
char str[] = "We are the Champion, we will keep on fighting till the end";
int delta = 'a'-'A';
for(i=0;str[i] != '\0';i++) {
if(str[i] >= 'a' && str[i] <= 'z') { // 소문자라면
str[i] -= delta;
}
}
for(i=2;str[i] != '\0';i++) {
if(str[i-2] == 'T' && str[i-1] == 'H' && str[i] == 'E') {
count++;
}
}
printf("count = %d", count);
}
6) 공백문자, 특수문자의 갯수는?
댓글남기기