2011. 5. 31. 15:29
C에서 배열(Array)과 포인터(Pointer)의 활용
2011. 5. 31. 15:29 in JavaAndroid
구조체의 활용은 배열로 처리하는 것과 포인터를 이용하는 방식이 있는데 하나의 구조체를 만들고 그것을 필요한 수 만큼 배열로 선언하여 작업을 해도 되고, 배열없이 구조체를 포인터 변수에 할당하여 프로그래밍 할 수도 있다. 학생의 이름과 국영수 점수를 입력받아 총점과 평균을 구하는 프로그램을 두 가지 방법으로 코딩하면 아래와 같쑝. 테스트를 위해 학생 수를 일단 꼴랑 2명으로 했쑝.
1. 배열로 처리
1: #include <stdio.h>2: #include <stdlib.h>3:4: struct _student {
5: char name[10] ;
6: int korean ;
7: int english ;
8: int math ;
9: int total ;
10: double avg ;
11: } students ;12:13: int main(void)14: {15: students student[2] ;16:17: int i ;
18:19: for(i = 0 ; i < 2 ; i++) {
20: printf("이 름 : ") ;21: scanf("%s", student[i].name) ;22: printf("국어점수 : ") ;23: scanf("%d", &student[i].korean) ;24: printf("영어점수 : ") ;25: scanf("%d", &student[i].english) ;26: printf("수학점수 : ") ;27: scanf("%d", &student[i].math) ;28:29: student[i].total = student[i].korean + student[i].english + student[i].math30: student[i].avg = student[i].total / 3.0 ;31: putch('\n') ;32: }33:34: printf("======= 성적 처리 결과 ===========\n\n") ;35:36: for(i = 0 ; i < 2 ; i++) {
37: printf("이 름 : %s\n", student[i].name) ;38: printf("국어점수 : %d\n", student[i].korean) ;39: printf("영어점수 : %d\n", student[i].english) ;40: printf("수학점수 : %d\n", student[i].math) ;41: putch('\n') ;42: printf("총 합계 : %d\n", student[i].total) ;43: printf("평 균 : %.2lf\n", student[i].avg) ;44: printf("----------------------------------------------\n") ;45: }46:47: return 0;
48: }
2. 포인터로 처리
1: #include <stdio.h>2: #include <stdlib.h>3:4: struct _student {
5: char name[10] ;
6: int korean ;
7: int english ;
8: int math ;
9: int total ;
10: double avg ;
11: } students, *sp ;12:13: int main(void)14: {15: sp = &students ;16:17: int i ;
18:19: for(i = 0 ; i < 2 ; i++) {
20: printf("이 름 : ") ;21: scanf("%s", sp -> name) ;22: printf("국어점수 : ") ;23: scanf("%d", &sp -> korean) ;24: printf("영어점수 : ") ;25: scanf("%d", &sp -> english) ;26: printf("수학점수 : ") ;27: scanf("%d", &sp -> math) ;28:29: sp -> total = sp -> korean + sp -> english + sp -> math ;30: sp -> avg = sp -> total / 3.0 ;31: sp++ ;32: putch('\n') ;33: }34:35: sp = &student ;36:37: printf("======= 성적 처리 결과 ===========\n\n") ;38:39: for(i = 0 ; i < 2 ; i++) {
40: printf("이 름 : %s\n", sp -> name) ;41: printf("국어점수 : %d\n", sp -> korean) ;42: printf("영어점수 : %d\n", sp -> english) ;43: printf("수학점수 : %d\n", sp -> math) ;44: putch('\n') ;45:46: printf("총 합계 : %d\n", sp -> total) ;47: printf("평 균 : %.2lf\n", sp -> avg) ;48: sp++ ;49: printf("----------------------------------------------\n") ;50: }51:52: return 0;
53: }
'JavaAndroid' 카테고리의 다른 글
한자가 나오는 안드로이드 에뮬레이터 키보드 한국어로 설정하기 (0) | 2011.06.04 |
---|---|
이클립스에서 안드로이드 SDK 2.3.3 `진저브레드` 버전으로 에뮬레이터 업그레이드 (0) | 2011.06.02 |
C#으로 만든 간단한 콘솔 계산기 (0) | 2011.06.02 |
C# 구구단 출력 프로그램 (0) | 2011.06.01 |
자바(Java)의 `Random 클래스`로 구현한 숫자 맞추기 야구 게임 (0) | 2011.05.27 |
자바(Java)의 `오버라이딩(Overriding)`과 super 지시자 (0) | 2011.05.25 |
자바(Java)에서 `is a` 관계와 `has a` 관계 (0) | 2011.05.25 |
자바(Java)의 상속 예제 코드 (0) | 2011.05.24 |