1. 모듈화 프로그래밍
** lec01.c
#include<stdio.h>
#include<stdlib.h>
// 모듈화 프로그래밍
#include"studentFile.h"
int main() {
printf("학생수 입력: ");
int n;
scanf("%d", &n);
S* s = (S*)malloc(n * sizeof(S));
// 학생 구조체 배열이 생성됨
for (int i = 0; i < n; i++) {
inputS(&s[i], i);
}
for (int i = 0; i < n; i++) {
show(s[i]);
}
return 0;
}
** studentFile.h
#pragma once
#include<stdio.h>
typedef struct student {
int num; // 1001번부터 순차적으로 지급
char name[20];
int s1;
int s2;
double avg;
}S;
void inputScores(S* sp) { // 주소값을 인자로 받기 위한 표인터 필요 -> 값 변화 발생
printf("중간고사 점수 입력 : ");
scanf("%d", &sp->s1);
printf("기말고사 점수 입력 : ");
scanf("%d", &sp->s2);
sp->avg = (sp->s1 + sp->s2) / 2.0;
}
void inputS(S* sp, int index) { // 주소값을 인자로 받기 위한 표인터 필요! -> 값 변화 발생
sp->num = 1000 + index;
printf("%d번의 학생 이름 입력 : ", sp->num);
scanf("%s", sp->name);
inputScores(sp);
}
void show(S sp) {
printf("%d. %s의 성적은 %.2lf점입니다.\n", sp.num, sp.name, sp.avg);
}
2. Ctrl + K + F
: 코드 줄정리 단축키
3. 행맨게임
1) 사용자가 정수 1개입력
2) 단어입력 -> 기본점수 100점 부여
3) 틀리면 점수가 10 감점 처리됨
4) 단어를 맞춤거나 점수가 0점 -> 종료
5) 단어 맞추기 반복
6) 최종점수 출력-> 절반이상 점수획득시 ★
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
// 1. 사용자가 정수 1개 입력
// 2. 단어 입력 -> 기본점수 100점부여
// 3. 점수가 -10 처리됨
// 4. 단어를 맞춤 or 0점 종료
// 5. 단어 맞추기 사용자가 정수 입력한 만큼 반복
// 6. 최종 점수 출력 -> ★
typedef struct WORD {
char word[10]; // apple kiwi
char blind[10]; // _____ ____
int score;
}W;
int main() {
printf("단어개수입력: ");
int n;
scanf("%d", &n);
W *w = (W *)malloc(n * sizeof(W));
for (int i = 0; i < n; i++) {
printf("단어입력: ");
scanf("%s", w[i].word); // apple _____
int j;
for (j = 0; j < strlen(w[i].word); j++) {
w[i].blind[j] = '_';
}
w[i].blind[j] = '\0'; // 문자배열 => 문자열
// a p p l e -> 문자배열
// a p p l e \0 -> 문자열
w[i].score = 100;
}
char c;
int score = 0;
printf("\n☆★☆★게임을 시작합니다!☆★☆★\n");
// ctrl+K+F : 줄정리
for (int j = 0; j < n; j++) {
while (1) { // => 중단시점 구현하기! (조건확인필수)
printf("%s : ", w[j].blind);
scanf(" %c", &c); // 버퍼비우기
// 행동을 했는지,안했는지 => sw변수
int sw = 1;
for (int i = 0; i < strlen(w[j].word); i++) {
if (c == w[j].word[i]) {
w[j].blind[i] = c;
sw = 0;
}
}
if (sw) {
// 단어를 맞추지못했다.
w[j].score -= 10;
printf("해당 문자는 없습니다!ㅠ\n");
}
if (w[j].score == 0 || strcmp(w[j].word, w[j].blind) == 0) {
printf("\n정답은 [%s]입니다.\n", w[j].word);
score += w[j].score;
printf("현재점수는 %d점입니다.\n", score);
break;
}
}
}
printf("\n최종점수는 %d점입니다.\n", score);
if (n * 50 <= score) {
printf("★☆★☆★☆\n");
}
return 0;
}
4. 공용체 : 공간절약, 열거형 : 가독성 증가를 위해 활용
#include<stdio.h>
// 공용체 -> 공간절약
union check {
int i;
char c;
};
// 열거형 -> 가독성 증가를 위해 활용
enum WEEK {
SUN, MON, TUE, WEN, THU, FRI, SAT
};
int main() {
/*
union check U;
printf("공용체 U의 크기는 %d이다.\n", sizeof(U));
// 속성들 중에 메모리 크기가 가장 큰 속성으로 설정됨
U.i = 97;
printf("i=%d, c=%c\n", U.i, U.c);
U.c = 'A';
printf("i=%d, c=%c\n", U.i, U.c);
*/
enum WEEK week;
week = SUN;
printf("%d\n", week); // 0
week = SAT;
printf("%d\n", week); // 6
for (int i = SUN; i <= SAT; i++) {
printf("%d ", i);
}
printf("\n");
enum level { low = 10, mid = 50, high = 100 };
int exp;
scanf("%d", &exp);
if (exp < low) {
printf("브론즈");
}
else if (exp < mid) {
printf("실버");
}
else if (exp < high) {
printf("골드");
}
else {
printf("플래티넘");
}
return 0;
}
'웹_프론트_백엔드 > 단과' 카테고리의 다른 글
[단과_자료구조] 2020.07.22 (0) | 2020.07.22 |
---|---|
[단과_자료구조] 2020.07.20 (0) | 2020.07.21 |
[단과_자료구조] 2020.07.15 (0) | 2020.07.15 |
[단과_자료구조] 2020.07.13 (0) | 2020.07.14 |
[단과_C] 2020.03.24 (0) | 2020.03.25 |