배열을 사용하면, 메모리 사용 효율이 높다.
char a ="A";
char b ="B";
char c="C";
====> 임의의 메모리번지에 저장됨
char a[3]={A,B,C};
====> 메모리번지에 순서되로 저장됨
절대주소지정방식
상대주소지정방식
임의주소지정방식
1. 배열을 이용한 대문자 변환
//배열을 이용한 대문자 변환
#include <stdio.h>
void main()
{
int i = 0;
char buf[13];
printf("\n 소문자 12개를 입력해 보세요. \n");
printf(" 입력 : ");
while(i<12){
scanf("%c",&buf[i]);
i++;
}
printf("\n 소문자를 입력하셨군요. 대문자로 변환합니다. \n\n");
for(i =0; i<12; i++)
printf("%c", buf[i]-('a'-'A'));
printf("\n\n");
}
2. 배열을 이용한 대소문자 변환 (응용)
//배열을 이용한 대소문자 변환 (응용)
#include <stdio.h>
void main()
{
int i =0;
int j =0;
char buf[6];
printf("\n 소문자를 대문자로 변환하려면 1을 \n");
printf(" 대문자를 소문자로 변환하려면 2를 입력하세요. : ");
scanf("%d",&j);
fflush(stdin);
if(j==1){
printf("\n 소문자 알파벳 5개를 입력해 보세요. \n");
printf(" 입력 : ");
while(i<5){
scanf("%c",&buf[i]);
i++;
}
printf("\n 대문자로 변환합니다. \n");
for(i=0; i<5; i++){
printf("%c",buf[i] - ('a'-'A'));
}
printf("\n");
}//end if
if(j==2){
printf("\n 대문자 알파벳 5개를 입력해 보세요 . \n");
printf(" 입력 : ");
while(i<5){
scanf("%c",&buf[i]);
i++;
}
printf("\n 소문자로 변환합니다. \n");
for(i=0; i<5; i++){
printf("%c",buf[i]-('A'-'a'));
}
printf("\n");
}//end if
}//end main
3. 이차원배열을 이용한 총점과 평균 구하기
/*
이차원 배열을 이용하여 5명의 학생에 대한 영어,
수학 점수를 입력받아 영어와 수학 평균을 구하는 프로그램.
*/
#include <stdio.h>
void DisplayTable(void);
int Grade[5][2];
void main(void)
{
int i;
printf("\n 각 학생의 영어와 수학 점수를 입력하시오. \n");
for(i=0; i<5 ; i++){
printf("\n %d번 학생의 영어 점수 : ", i+1);
scanf("%d",&Grade[i][0]);
printf("\n %d번 학생의 수학 점수 : ", i+1);
scanf("%d",&Grade[i][1]);
}//end for
printf("\n 입력을 종료합하니다. \n\n");
DisplayTable();
}//end main
void DisplayTable(void){
int i;
int Total[2] = {0,0};
printf("\n 학생 번호 \t 영어 점수 \t 수학 점수 \n");
for(i=0; i<5; i++){
printf("\n \t%d\t\t%d\t\t%d\n", i+1, Grade[i][0],Grade[i][1]);
Total[0] += Grade[i][0]; //영어 총점
Total[1] += Grade[i][1]; //수학 총점
}//end for
printf("\n ================================================ \n\n");
printf(" 총점 \t\t\t%d\t\t%d\n", Total[0], Total[1]); //총점 출력
printf(" 평균 \t\t\t%d\t\t%d\n\n", Total[0]/5,Total[1]/5); // 평균 출력
}
4. 포인터 변수 ptr의 선언
//포인터 변수 ptr의 선언
#include <stdio.h>
void main(void)
{
int data =10;
int *ptr;
printf("\n data의 주소 : %x, data의 값 : %d \n", &data, data);
ptr = &data;
printf("\n ptr의 주소 : %x, prt의 값 : %x \n\n",&ptr,ptr);
}//end main
5. 정수형 포인터 ptr의 주소, 값, 가리키는 값
//정수형 포인터 ptr의 주소, 값, 가리키는 값
#include <stdio.h>
void main(void)
{
int data = 10;
int *ptr; //정수형 포인터 변수 ptr의 선언
/* 변수 data의 주소와 값의 출력 */
printf("\n data의 주소 : %x, data의 값 : %d \n\n",&data, data);
ptr = &data;
/* 포인터 변수 ptr의 주소와 값의 출력 */
printf(" ptr의 주소 : %x, ptr의 값 : %x \n\n",&ptr, ptr);
/* 포인터 ptr이 가리키는 곳의 값과 data의 값 출력 */
printf(" ptr이 가리키는 곳의 값 : %d, data의 값 : %d \n\n",*ptr, data);
/* 포인터 ptr의 주소, 값, 가리키는 값의 출력 */
printf(" prt의 주소 : %x, prt 의 값ㅅ ; %x, ptr이 가리키는 값 : %d \n\n",&ptr,ptr,*ptr);
}//end main
6. 포인터를 이용한 대소문자 변환
//포인터를 이용한 대소문자 변환
#include <stdio.h>
#include <string.h>
void PrintUpper(char);
void main()
{
int i;
int num;
char *buf = "I am suwon."; //포인트 변수의 선언과 초기화
printf("\n 포인터의 활용 예제 \n\n");
num = strlen(buf); // buf안의 총 데이터 수를 구함
for(i=0; i<num; i++){
PrintUpper(*buf++);
}
printf("\n\n");
}//end main
void PrintUpper(char data){
printf(" %c ", data - ('a'-'A')); //매개변수 data를 대문자로 변환 출력
}