C언어::최종과제
최종 과제
프로젝트1.
[mylib.h 파일]
#ifndef _MYLIB_H_
#define _MYLIB_H_
#include<stdio.h>
void data_input(int *a, int *b);
int get_sum(int a, int b);
void res_print(int res);
#endif
[main.c 파일]
#include"mylib.h"
int main()
{
int a, b;
int res;
data_input(&a, &b);
res = get_sum(a, b);
res_print(res);
return 0;
}
[mylib.c 파일]
#include"mylib.h"
void data_input(int *a, int *b)
{
printf("정수 두 개 입력: ");
scanf("%d%d", a, b);
}
int get_sum(int a, int b)
{
return a + b;
}
void res_print(int res)
{
printf("두 수의 합은 : %d\n", res);
}
프로젝트2.
[mylib.h]파일
#ifndef _MYLIB_H_
#define _MYLIB_H_
#define SIZE 5
#include<stdio.h>
void input_data(int *pa);
int get_max(int *pa, int cnt);
int get_min(int *pa, int cnt);
void res_print(int max, int min);
#endif
[main.c]파일
#include"mylib.h"
int main()
{
int arr[SIZE];
int max, min;
int size;
size = sizeof(arr) / sizeof(arr[0]);
input_data(arr);
max = get_max(arr, size);
min = get_min(arr, size);
res_print(max, min);
return 0;
}
[mylib.c]파일
#include"mylib.h"
void input_data(int *pa)
{
int i;
for (i = 0; i < 5; i++)
{
printf("%d번째 정수 입력:", i + 1);
scanf("%d", pa + i);
}
}
int get_max(int *pa,int cnt)
{
int i;
int max=pa[0];
for (i = 1; i < cnt; i++)
{
if (max < pa[i]) max = pa[i];
}
return max;
}
int get_min(int *pa, int cnt)
{
int i;
int min = pa[0];
for (i = 0; i < cnt; i++)
{
if (min > pa[i]) min = pa[i];
}
return min;
}
void res_print(int max, int min)
{
printf("가장 큰 수:%d, 가장 작은 수: %d\n", max, min);
}
프로젝트3.
[mylib.h]파일
#ifndef _MYLIB_H_
#define _MYLIB_H_
#define SIZE 5
#include<stdio.h>
void input_data(int *pa);
void buble_sort(int *pa);
void res_print(int *pa);
#endif
[main.c]파일
#include"mylib.h"
int main()
{
int arr[SIZE];
input_data(arr);
buble_sort(arr, SIZE);
res_print(arr, SIZE);
return 0;
}
[mylib.c]파일
#include"mylib.h"
void input_data(int *pa)
{
int i;
for (i = 0; i < 5; i++)
{
printf("%d번째 정수 입력:", i + 1);
scanf("%d", pa + i);
}
}
void buble_sort(int *pa) //오름차순
{
int step, i;
int temp;
for (step = 0; step < SIZE - 1; step++)
{
for (i = 0; i < SIZE - 1; i++)
{
if (pa[i] > pa[i + 1])
{
temp = pa[i];
pa[i] = pa[i + 1];
pa[i + 1] = temp;
}
}
}
}
void res_print(int *pa)
{
int i;
for (i = 0; i < SIZE; i++)
{
printf("%5d", *(pa + i));
}
putchar('\n');
}
프로젝트4.
[mylib.h]파일
#ifndef _MYLIB_H_
#define _MYLIB_H_
#define SIZE 5
#include<stdio.h>
typedef struct
{
char name[20];
int kor;
int eng;
int mat;
int tot;
double avg;
} Student;
void data_input(Student *s);
void totavg(Student *s);
void array_avg(Student *s);
void res_print(Student *s);
#endif
[main.c]파일
#include"mylib.h"
int main()
{
Student s[SIZE] = { 0, };
data_input(s);
totavg(s);
array_avg(s);
res_print(s);
return 0;
}
[mylib.c]파일
#include"mylib.h"
void data_input(Student *s)
{
int i;
for (i = 0; i < SIZE; i++)
{
printf("이름: ");
scanf("%s", (s+i)->name);
printf("국어, 영어, 수학 점수입력: ");
scanf("%d%d%d", &(s + i)->kor, &(s + i)->eng, &(s + i)->mat);
}
putchar('\n');
}
void totavg(Student *s)
{
int i;
for (i = 0; i < SIZE; i++)
{
(s+i)->tot = (s+i)->kor + (s+i)->eng + (s+i)->mat;
(s+i)->avg = (s+i)->tot / 3.0;
}
putchar('\n');
}
void array_avg(Student *s)
{
int step, i;
Student temp;
for (step = 0; step < SIZE - 1; step++)
{
for (i = 0; i < SIZE - 1 - step; i++)
{
if (s[i].avg < s[i+1].avg)
{
temp = s[i];
s[i] = s[i + 1];
s[i+1] = temp;
}
}
}
}
void res_print(Student *s)
{
int i;
printf("#정렬후\n");
for (i = 0; i < SIZE; i++)
{
printf("%s", (s + i)->name);
printf("%4d %4d %4d", (s + i)->kor, (s + i)->eng, (s + i)->mat);
printf("%4d %.1lf \n", (s + i)->tot, (s + i)->avg);
}
putchar('\n');
}
프로젝트5.
[mylib.h]파일
#ifndef _MYLIB_H_
#define _MYLIB_H_
#define SIZE 10
#include<stdio.h>
void get_name(char *name);
void get_data(FILE *ifp, int *data);
void sort_descending(int *data);
void put_data(FILE *ofp, int *data);
#endif
[main.c]파일
#include"mylib.h"
int main()
{
FILE *ifp, *ofp;
char iname[30];
int data[SIZE];
get_name(iname);
ifp = fopen(iname, "r");
if (ifp == NULL)
{
printf("파일을 찾지 못했습니다...\n");
return 1;
}
ofp = fopen("result.txt", "w");
if (ofp == NULL)
{
printf("파일을 찾지 못했습니다...\n");
return 1;
}
get_data(ifp, data);
sort_descending(data);
put_data(ofp, data);
fclose(ifp);
fclose(ofp);
return 0;
}
[mylib.c]파일
#include"mylib.h"
void get_name(char *name)
{
printf("입력받을 파일명을 입력하세요: ");
scanf("%s", name);
}
void get_data(FILE *ifp, int *data)
{
int res;
int i = 0;
while (i < 10)
{
res = fscanf(ifp, "%d", data + i);
if (res == EOF) break;
i++;
}
}
void sort_descending(int *data)
{
int step, i;
int temp;
for (step = 0; step < SIZE - 1; step++)
{
for (i = 0; i < SIZE - 1 - step; i++)
{
if (data[i] > data[i + 1])
{
temp = data[i];
data[i] = data[i + 1];
data[i + 1] = temp;
}
}
}
}
void put_data(FILE *ofp, int *data)
{
int i;
for (i = 0; i < SIZE; i++)
{
fprintf(ofp, "%d ", data[i]);
}
}
프로젝트6.
[mylib.h]파일
#ifndef _MYLIB_H_
#define _MYLIB_H_
#define STD 5 //학생수
typedef struct
{
char name[20];
int kor;
int eng;
int mat;
int tot;
double avg;
} Student;
#include<stdio.h>
void get_data(FILE *ifp, Student *s);
void get_totavg(Student *s);
void array_grade(Student *s);
void print_result(FILE *ofp, Student *s);
#endif
[main.c]파일
#include "mylib.h"
int main()
{
FILE *ifp, *ofp;
Student s[STD] = { 0, };
int res;
ifp = fopen("data.txt", "r");
if (ifp == NULL)
{
printf("파일을 찾을 수 없습니다..\n");
return 1;
}
ofp = fopen("result.txt", "w");
if (ofp == NULL)
{
printf("파일을 찾을 수 없습니다..\n");
return 1;
}
get_data(ifp, s);
get_totavg(s);
array_grade(s);
print_result(ofp, s);
fclose(ifp);
fclose(ofp);
return 0;
}
[mylib.c]파일
#include"mylib.h"
void get_data(FILE *ifp, Student *s)
{
int i = 0;
int res;
for (i = 0; i < STD;i++)
{
res = fscanf(ifp, "%s %d%d%d", (s + i)->name, &(s + i)->kor, &(s + i)->eng, &(s + i)->mat);
}
}
void get_totavg(Student *s)
{
int i;
for (i = 0; i < STD; i++)
{
s[i].tot = s[i].kor + s[i].eng + s[i].mat;
s[i].avg = s[i].tot / 3.0;
}
}
void array_grade(Student *s)
{
int step, i;
Student temp;
for (step = 0; step < STD - 1; step++)
{
for (i = 0; i < STD - 1 - step; i++)
{
if (s[i].avg < s[i + 1].avg)
{
temp = s[i];
s[i] = s[i + 1];
s[i + 1] = temp;
}
}
}
}
void print_result(FILE *ofp, Student *s)
{
int i;
fprintf(ofp, "이름 국어 영어 수학 총합 평균\n");
for (i = 0; i < STD; i++)
{
fprintf(ofp, "%5s %3d %6d %6d %7d %9.2lf\n", s[i].name, s[i].kor, s[i].eng, s[i].mat, s[i].tot, s[i].avg);
}
}