프로그래밍기초 연습문제 풀이
01. 파일의 읽기(read text)와 쓰기(write text)
#include <stdio.h>
void main(){
FILE *fi = fopen("abc.dat", "rt");
FILE *fo = fopen("ccc.dat", "wt");
char a[6];
int i;
for(i=0;i<3;i++){
fscanf(fi, "%s", a);
fprintf(fo, "%s\n", a);
}
fclose(fi);
fclose(fo);
}
02. 파일의 읽기(read text)와 쓰기(write text)
#include <stdio.h>
void main(){
FILE *fi = fopen("abc.dat", "rt");
FILE *fo = fopen("cba.dat", "wt");
char a[4];
int i;
for(i=0;i<7;i++){
fscanf(fi, "%s", a);
fprintf(fo, "%s", a);
}
fclose(fi);
fclose(fo);
}
03. 파일을 읽어들이고 입력받은 문자열 낱말의 갯수를 출력하기
#include <stdio.h>
void main(){
int i = 0;
FILE *f = fopen("ddd.dat", "rt");
char a[100];
while(!feof(f)){
i++;
fscanf(f, "%s", a);
}
printf("낱말의 개수는 %d개입니다.\n", i);
fclose(f);
}
04. 파일에 값을 입력받아 내보내기
#include <stdio.h>
void main(){
FILE *fi = fopen("base.dat", "rt");
char name[10];
int anta, tasu;
int i;
printf("------------------------------\n");
printf("이름\t타수\t안타\t타율\n");
printf("------------------------------\n");
for(i=0;i<5;i++){
fscanf(fi, "%s %d %d", name, &tasu, &anta);
printf("%s\t%d\t%d\t%.2f\n", name, anta, tasu, (float)anta / tasu);
}
printf("------------------------------\n");
fclose(fi);
}
----------------------------------
함수의 정의 실습]
01. 정수를 입력받아 짝수, 홀수 구분하는 함수 만들기
#include <stdio.h>
f(int a);
void main()
{
int a;
printf("한개의 정수를 입력하시오.>>");
scanf("%d",&a);
f(a);
}
f(int a)
{
if(a%2==0)
printf("짝수입니다.\n");
else if(a%2==1)
printf("홀수입니다.\n");
}
02. 두 정수를 입력받아 차이와 합계 구하는 함수 만들기
#include <stdio.h>
int sub(int x, int y)
{
int z;
z = x - y;
return z;
}
int add(int x, int y)
{
int z;
z = x + y;
return z;
}
void main()
{
int a, b;
printf("숫자 두 개를 입력하시오 :");
scanf("%d %d", &a, &b);
if(a>b)
printf("%d - %d = %d\n", a, b, sub(a, b));
else
printf("%d + %d = %d\n", a, b, add(a, b));
}
03. 점수를 입력받아 학점으로 출력하는 함수 만들기
#include <stdio.h>
int Sub(int x)
{
if(x>=90)
printf("A");
else if(x>=80)
printf("B");
else if(x>=70)
printf("C");
else if(x>=60)
printf("D");
else
printf("F");
return x;
}
void main()
{
int a;
printf("학점 출력 프로그램\n");
printf("점수를 입력 하세요: ");
scanf("%d",&a);
Sub(a);
printf("%d\n",a);
}
구조체 함수의 정의 실습] 학생정보출력 프로그램
#include <stdio.h>
struct student_t
{
char name[15];
int score[3];
};
void calc(struct student_t *s1)
{
double sum = s1->score[0] + s1->score[1] + s1->score[2];
double ave = sum/3;
printf("%s\t%d\t%d\t%d\t%.1f\t%.1f\t\n",s1->name,s1->score[0],s1->score[1],s1->score[2],sum,ave);
}
void main(void)
{
struct student_t s[3];
int counter = 0;
int i;
for(counter=0; counter<3; counter++)
{
printf("학생이름 : ");
scanf("%s",&s[counter].name);
printf("국어점수 : ");
scanf("%d",&s[counter].score[0]);
printf("영어점수 : ");
scanf("%d",&s[counter].score[1]);
printf("수학점수 : ");
scanf("%d",&s[counter].score[2]);
}
printf("이름\t국어\t영어\t수학\t총점\t평균\n");
printf("---------------------------------------------\n");
for(i=0;i<counter;i++)
calc(&s[i]);
}
구조체 배열의 정의 실습] 학생정보출력 프로그램
#include <stdio.h>
#include <string.h>
struct student_t
{
char name[10];
char phone[10];
char adress[10];
char major[10];
};
int main()
{
struct student_t p[3];
int i;
char search[10];
for(i=0;i<3;i++)
{
printf("이름 : "); scanf("%s", p[i].name);
printf("주소 : "); scanf("%s", p[i].adress);
printf("전화번호 : "); scanf("%s", p[i].phone);
printf("전공 : "); scanf("%s", p[i].major);
}
printf("이름을 입력 하세요 : ");
scanf("%s", search);
for(i=0;i<3;i++)
{
if(strcmp(p[i].name, search) == 0)
{
printf("이름 %s\n", p[i].name);
printf("주소 %s\n",p[i].adress);
printf("전화번호 %s\n",p[i].phone);
printf("전공 %s \n",p[i].major);
return 1;
}
}
printf("이름이 없습니다.\n");
return 0;
}
----------------------------------
프로젝트 1] 의료진단 프로그램
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define PAU system("pause")
#define CLS system("cls")
void Reset(int *imoney,int cout);
void AllPrint(int *num,char name[][15],int *jmoney,int *imoney,int *Allmoney,char code[][5],int cout);
void Print(int *num,char name[][15],int *jmoney,int *imoney,int *Allmoney,char code[][5],int a);
void Menu();
void SetName(char name[][15],int cout);
void SetIn(int *jmoney,int cout,int *imoney);
void SetCode(char code[][5],int cout);
void SetMoney(int random,int *jmoney,int cout);
void SearchNum(int *num,char name[][15],int *jmoney,int *imoney,int *Allmoney,char code[][5]);
void SearchName(int *num,char name[][15],int *jmoney,int *imoney,int *Allmoney,char code[][5],char input);
void Searchcode(int *num,char name[][15],int *jmoney,int *imoney,int *Allmoney,char code[][5]);
void title();
void fals();
int SetNum(int *num,int cout);
int Month2(int *imoney,int cout);
int Month(int *imoney,int cout);
int Week3(int *imoney,int cout);
int Week2(int *imoney,int cout);
int GetAllmoney(int *jmoney, int *imoney,int *Allmoney,int cout);
int Random();
void main()
{
char name[15][15];
char code[15][5];
char s_name;
int input;
int num[15];
int cout=0;
int random;
int jmoney[15];
int imoney[15];
int Allmoney[15];
while(1)
{
CLS;
random=Random();
Menu();
scanf("%d",&input);
CLS;
switch(input)
{
case 1:
if(cout>=15)
{
printf("더이상 입력 받지 못합니다.!!\n");
break;
}
else
{
printf("-----------------------------------\n");
printf("\t환자 입력\n");
printf("-----------------------------------\n\n\n");
printf("등록번호 %d 환자 입니다.!!\n",SetNum(num,cout));
printf("환자의 이름 >> ");
SetName(name,cout);
printf("진료 코드 내과(ns)/외과(os) >> ");
SetCode(code,cout);
SetMoney(random, jmoney, cout);
PAU;
if(jmoney[cout]>10000)
SetIn(jmoney, cout, imoney);
else
{
Reset(imoney,cout);
printf("진료비가 10000 원 미만 이므로 ");
printf("환자의 상태가 양호합니다.!!\n");
printf("입원하실 필요가 없습니다.!!\n");
}
GetAllmoney(jmoney, imoney, Allmoney, cout);
cout++;
}
break;
case 2:
printf("1. 등록 번호로 찾기\n");
printf("2. 이름으로 찾기\n\n");
printf("선택해 주세요 >> ");
scanf("%d",&input);
if(input==1)
SearchNum(num,name,jmoney,imoney,Allmoney,code);
else if(input==2)
{
printf("이름으로 검색합니다.!!\n");
printf("검색할 이름은 >> ");
scanf("%s",&s_name);
SearchName(num,name,jmoney,imoney,Allmoney,code,s_name);
}
else
printf("잘못 입력하셨습니다...\n");
break;
case 3:
Searchcode(num,name,jmoney,imoney,Allmoney,code);
break;
case 4:
AllPrint(num,name,jmoney,imoney,Allmoney,code,cout);
break;
case 5:
printf("프로그램을 종료합니다.!!\n");
PAU;
return;
default:
fals();
break;
}//switch
printf("메인으로 돌아갑니다..\n");
PAU;
}
}
void fals()
{
printf("잘못 입력하셨습니다.!! ");
printf("다시 입력해 주세요.!!\n");
}
void Reset(int *imoney,int cout)
{
imoney[cout]=0;
}
void AllPrint(int *num,char name[][15],int *jmoney,int *imoney,int *Allmoney,char code[][5],int cout)
{
int a;
if(cout!=0)
{
title();
for(a=0;a<cout;a++)
printf("%d\t%s\t%s\t%d\t%d\t%d\n",num[a],name[a],code[a],jmoney[a],imoney[a],Allmoney[a]);
printf("--------------------------------------------------\n");
}
else
printf("입력된 환자가 없습니다.!! 다시 확인해 주세요!!\n");
}
void Print(int *num,char name[][15],int *jmoney,int *imoney,int *Allmoney,char code[][5],int a)
{
printf("%d\t%s\t%s\t%d\t%d\t%d\n",num[a],name[a],code[a],jmoney[a],imoney[a],Allmoney[a]);
printf("--------------------------------------------------\n");
}
void Menu()
{
printf("***********************************\n");
printf("\t의료카드 프로그램\n");
printf("***********************************\n\n\n");
printf("1. 환자입력\n");
printf("2. 환자정보검색\n");
printf("3. 외과, 내과 진료 기록 출력\n");
printf("4. 진료금액계산\n");
printf("5. 프로그램 종료\n\n");
printf("선택해 주세요 >> ");
}
void SetName(char name[][15],int cout)
{
scanf("%s",&name[cout]);
}
int Random()
{
srand(time(NULL));
return rand()%50+1;
}
int SetNum(int *num,int cout)
{
return num[cout]=cout+1;
}
void SetCode(char code[][5],int cout)
{
scanf("%s",&code[cout]);
}
void SetMoney(int random,int *jmoney,int cout)
{
jmoney[cout]=random*1000;
}
int Month2(int *imoney,int cout)
{
return imoney[cout]=(10000*60)-((10000*60)*7/10);
}
int Month(int *imoney,int cout)
{
return imoney[cout]=(10000*30)-((10000*30)*8/10);
}
int Week3(int *imoney,int cout)
{
return imoney[cout]=(10000*21)-((10000*21)*8/10);
}
int Week2(int *imoney,int cout)
{
return imoney[cout]=(10000*14)-((10000*14)*8/10);
}
void SetIn(int *jmoney,int cout,int *imoney)
{
printf("진료비가 %d 원 입니다.!!\n",jmoney[cout]);
printf("환자의 상태가 좋지 않으므로 입원하셔야 됩니다.!!\n");
printf("입원 기간은.. ");
if(jmoney[cout]>40000)
{
printf("2달 입니다.!!\n");
Month2(imoney,cout);
}
else if(jmoney[cout]>30000)
{
printf("1달 입니다.!!\n");
Month(imoney, cout);
}
else if(jmoney[cout]>20000)
{
printf("3주일 입니다.!!\n");
Week3(imoney,cout);
}
else
{
printf("2주일 입니다.!!\n");
Week2(imoney,cout);
}
}
int GetAllmoney(int *jmoney, int *imoney,int *Allmoney,int cout)
{
return Allmoney[cout]=jmoney[cout]+imoney[cout];
}
void SearchNum(int *num,char name[][15],int *jmoney,int *imoney,int *Allmoney,char code[][5])
{
int input,a,b=0;
printf("-------------------------------------------\n");
printf("\t등록번호로 검색합니다.!!\n");
printf("-------------------------------------------\n");
printf("등록번호를 입력해 주세요 >> ");
scanf("%d",&input);
title();
for(a=0;a<15;a++)
{
if(input==num[a])
{
Print(num,name,jmoney,imoney,Allmoney,code,a);
b++;
}
if(b==0)
printf("환자가 없습니다..!! 다시 확인해 주세요!! \n");
}
}
void SearchName(int *num,char name[][15],int *jmoney,int *imoney,int *Allmoney,char code[][5],char input)
{
int a,b=0;
title();
for(a=0;a<15;a++)
{
if(input==name[a][0])
{
Print(num,name,jmoney,imoney,Allmoney,code,a);
b++;
}
if(b==0)
printf("환자가 없습니다..!! 다시 확인해 주세요!! \n");
}
}
void Searchcode(int *num,char name[][15],int *jmoney,int *imoney,int *Allmoney,char code[][5])
{
char input;
int a,b=0;
printf("-------------------------------------------\n");
printf("\t외과, 내과 진료 기록 출력\n");
printf("-------------------------------------------\n\n");
printf("내과(ns)/외과(os) 중 선택해 주세요 >> ");
scanf("%s",&input);
title();
for(a=0;a<15;a++)
{
if(input==code[a][0])
{
Print(num,name,jmoney,imoney,Allmoney,code,a);
b++;
}
if(b==0)
printf("환자가 없습니다..!! 다시 확인해 주세요!! \n");
}
}
void title()
{
printf("--------------------------------------------------\n");
printf("등록번호 이름 진료과 입원비 진료비 진료금액\n");
printf("--------------------------------------------------\n");
}
'학습공간 > C, 프로그래밍기초' 카테고리의 다른 글
[9주차] 구조체와 사용자 정의 자료형 1, 2 (배열, 구조체, 포인터) (0) | 2019.11.26 |
---|---|
[8주차] 다차원 배열, 문자와 문자열 처리 함수 (0) | 2019.11.26 |
[7주차] 포인터와 배열 함께 이해하기, 포인터와 함수에 대한 이해 (Call by Value & Call by Reference) (0) | 2019.11.26 |
[6주차] 1차원 배열, 포인터의 이해 (0) | 2019.11.26 |
[5주차] 함수의 정의와 선언 그리고 호출, 지역변수 & 전역변수, 재귀함수의 호출 (0) | 2019.11.26 |