๐Ÿคณ [C ๊ธฐ๋ง๊ณ ์‚ฌ ๋Œ€๋น„ ์ด์ •๋ฆฌ]

โ€์ „ํฌ์ฃผยท2023๋…„ 3์›” 26์ผ
0

๋‹ค์šฐ_C ์ž…๋ฌธ ๊ฐ•์˜

๋ชฉ๋ก ๋ณด๊ธฐ
2/7

Advanced C Programming

#include <stdio.h>

float sumCalc(int *sal, int Cn)
{
	int i, sum = 0;  
	float avg; 
	for (i = 0; i <= Cn-1; i++)
	{
		sum += *(sal + i); // sal = &salary  *(sal+i)  
		// sal++; 
	}
		avg = (float)sum / Cn; 
	return avg; 
}

int main()
{
	int salary[] = { 1,5 }; 
	int size, i; 
	char company[30] = "Multi Campus"; 
	float salAvg; 

	size = sizeof(salary) / sizeof(int); 
	salAvg = sumCalc(salary, size); 

	printf("%s ์›”๊ธ‰ํ‰๊ท : %.2f \n", company, salAvg); 

	return 0; 
}
  • 2์ฐจ์› ๋ฐฐ์—ด์˜ ์ฃผ์†Œ ๊ฐœ๋…

    • ์ฒจ์ž๊ฐ€ ์—†๋Š” ๋ฐฐ์—ด๋ณ€์ˆ˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ๊ทธ ๋ฐฐ์—ด์˜ ์‹œ์ž‘ ์ฃผ์†Œ์ด๋‹ค.
    • ๋ฐฐ์—ด ๋ณ€์ˆ˜๋ช…๊ณผ ์ฒจ์ž๋ฅผ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ฐฐ์—ด์˜ ํ–‰์„ ์˜๋ฏธํ•œ๋‹ค.
    • ํ–‰์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ๊ฐ ํ–‰์ด ์‹œ์ž‘๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ์ด๋‹ค.
    • ํ–‰์€ ๊ทธ ํ–‰์˜ ๊ฐ’์ด ์•„๋‹Œ, ํ–‰์ด ์‹œ์ž‘๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์‹œ์ž‘์ฃผ์†Œ
      ๐Ÿ”ฝ
  • ๋ฐฐ์—ด ํฌ์ธํ„ฐ

    โ–ถ ์„ ์–ธ๋ฐฉ๋ฒ• : char (*arr)[3];
    : char ํƒ€์ž…์˜ ์ธ๋ฑ์Šค๋ฅผ 3๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐฐ์—ด"์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์ž…๋‹ˆ๋‹ค. (4๋ฐ”์ดํŠธ ํ• ๋‹น)

    • 2์ฐจ์› ๋ฐฐ์—ด ํฌ์ธํ„ฐ(int (*ptr2)[3]; ๋Š” ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ™์•„์•ผ ํ•จ.
    • 3์ฐจ์› ๋ฐฐ์—ด ํฌ์ธํ„ฐ(int (*ptr3)[2][3]; ๋Š” ํ–‰๊ณผ ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ™์•„์•ผ ํ•จ.
  • ํฌ์ธํ„ฐ ๋ฐฐ์—ด

    โ–ถ ์„ ์–ธ๋ฐฉ๋ฒ• : char* arr[3];
    : char* arr[3]์€ ๋ฉ”๋ชจ๋ฆฌ 3๊ณณ์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋ฐฐ์—ด ์ž…๋‹ˆ๋‹ค.

Q&A (ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฐœ๋… ๊ตฌ๊ธ€๋ง ์ •๋ฆฌ)

  • ์งˆ๋ฌธ (sizeof)

    • char* ptr2[3]; => 4bytex3 =12 byte
    • char word[3][20] => 3x 20x1byte = 60byte
    • char(*p2)[5] => 4byte ํ• ๋‹น? (char ํƒ€์ž…์˜ ์ธ๋ฑ์Šค(์—ด)๋ฅผ 5๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐฐ์—ด์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ ํ•˜๋‚˜์˜ ํฌ์ธํ„ฐ)
    • char*p2[5] => 4bytex5=20byte ํ• ๋‹น?(๋ฉ”๋ชจ๋ฆฌ 5๊ณณ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋“ค์˜ ๋ฐฐ์—ด)

  • [C์–ธ์–ด] ๋ฐฐ์—ดํฌ์ธํ„ฐ, ํฌ์ธํ„ฐ๋ฐฐ์—ด ์ •๋ฆฌ (pointer)
    https://blockdmask.tistory.com/56

    • "ํฌ์ธํ„ฐ ๋ฐฐ์—ด"์€ ํฌ์ธํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ๋ชจ์—ฌ์„œ ๋ฐฐ์—ด๋กœ ์žˆ๋Š”๊ฒƒ์ด๊ณ 
    • "๋ฐฐ์—ด ํฌ์ธํ„ฐ"๋Š” ๋ฐฐ์—ด ํƒ€์ž…์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ•˜๋‚˜์˜ ํฌ์ธํ„ฐ ๋ผ๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
  • ํฌ์ธํ„ฐ ๋ฐฐ์—ด

    โ–ถ ์„ ์–ธ๋ฐฉ๋ฒ• : char* arr[3];
    : char* arr[3]์€ ๋ฉ”๋ชจ๋ฆฌ 3๊ณณ์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋ฐฐ์—ด ์ž…๋‹ˆ๋‹ค.

    • arr[0]์€ ์–ด๋–ค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค. (ํฌ์ธํ„ฐ ์ด๋‹ค)
    • arr[1]๋„ ์–ด๋–ค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค. (์˜คํ˜ธ ํฌ์ธํ„ฐ ์ด๋‹ค)
    • arr[2]๋„ ์–ด๋–ค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค. (์ด๊ฒƒ๋„ ํฌ์ธํ„ฐ ์ด๋‹ค)
    • ์ด ์„ธ๊ฐœ๋“ค์˜ ๋ฐฐ์—ด์ด๋‹ค.
  • ๋ฐฐ์—ด ํฌ์ธํ„ฐ

    โ–ถ ์„ ์–ธ๋ฐฉ๋ฒ• : char (*arr)[3];
    : char ํƒ€์ž…์˜ ์ธ๋ฑ์Šค๋ฅผ 3๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐฐ์—ด"์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์ž…๋‹ˆ๋‹ค.

  • while(x != 0)์ด๋ผ๊ณ  ์“ฐ๋ฉด x๊ฐ€ 0์ด ์•„๋‹Œ ์ •์ˆ˜๋ผ๋Š” ์ ์„ ์—ผ๋‘์— ๋‘๊ณ  x๋กœ ์ˆ˜์น˜์ ์ธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. while(x != '\0')์ด๋ผ๊ณ  ์“ฐ๋ฉด x๋Š” ๋ฌธ์ž์ด๊ณ  null ๋ฌธ์ž๋ฅผ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ๊ณ„์† ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • ์•„์Šคํ‚ค์ฝ”๋“œ ํ‘œ
  • ์ฆ๊ฐ์—ฐ์‚ฐ์ž๊ฐ€ ์—ญ์ฐธ์กฐ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๊ธฐ ๋•Œ๋ฌธ์—
    *ptr++๋Š” *(ptr++)๋กœ ํ’€์–ด ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • *ptr++-> ptr์˜ ๋‹ค์Œ ์ฃผ์†Œ์˜ ๊ฐ’
    • ptr++-> ptr์˜ ๋‹ค์Œ ์ฃผ์†Œ.
    • (*ptr)++ ->ptr์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’ ์ฆ๊ฐ
  • ๋ฐฐ์—ด ๋ณ€์ˆ˜ ์ž์‹ ์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
// ์ฒจ์ž์—†๋Š” ๋ฐฐ์—ด๋ณ€์ˆ˜๋ช…์€ ํฌ์ธํ„ฐ ์ƒ์ˆ˜์ด๋‹ค.
// ๋”ฐ๋ผ์„œ ๋ฐฐ์—ด ๋ณ€์ˆ˜ ์ž์‹ ์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

#include <stdio.h>

int main()
{
	char str[20] = " Multi Campus. "; 
	char* ptr; 

	ptr = str; // ๋ฐฐ์—ด์˜ ์‹œ์ž‘์ฃผ์†Œ๋ฅผ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์— ๋Œ€์ž… 

	while (*str)
		printf("%c ", *str++); // ๋ฐฐ์—ด๋ณ€์ˆ˜๋Š” ํฌ์ธํ„ฐ ์ƒ์ˆ˜์ด๋ฏ€๋กœ ์ฃผ์†Œ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ!! 

	printf("\n\n"); 

	return 0; 
}
  • C์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž์—ด ์ƒ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด ์ƒ์ˆ˜ ํฌ์ธํ„ฐ๋ผ๊ณ  ํ•œ๋‹ค.
// C์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž์—ด ์ƒ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด ์ƒ์ˆ˜ ํฌ์ธํ„ฐ๋ผ๊ณ  ํ•œ๋‹ค. 

#include <stdio.h>
#include <string.h>

int main()
{
	char str[20] = "Multi Campus."; 
	char* msg = "Advanced C."; 

	printf("str : %s, msg: %s\n", str, msg); 

	strcpy(str, msg); 
	printf("str : %s, msg: %s\n", str, msg);


	return 0; 
}
// ํฌ์ธํ„ฐ๊ฐ€ ํ•จ์ˆ˜์— ์ „๋‹ฌ๋˜๋ฉด ํ•จ์ˆ˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ถ€๋ชจ ํ•จ์ˆ˜์˜ ์ธ์ˆ˜์— ์ ‘๊ทผ ๊ฐ€๋Šฅ 

#include <stdio.h>
void swap(int* x, int* y)
{
	int tmp; 
	
	tmp = *x;
	*x = *y; 
	*y = tmp; 
}

int main()
{
	int a = 100, b = 200; 
	printf("main() a: %d, b:%d \n\n", a, b); 
	swap(&a, &b); 
	printf("swap() ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ›„ main() a: %d, b:%d \n\n", a, b); 


	return 0; 
}
  • ๋ถ€๋ชจํ•จ์ˆ˜์˜ ๋ฐฐ์—ด์„ ์ž์‹ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌ ์‹œ, ํ•ญ์ƒ ์ฃผ์†Œ๊ฐ€ ์ „๋‹ฌ๋˜๋ฉฐ, ์ด๋Š” ์ž์‹ํ•จ์ˆ˜์—์„œ ์ผ์–ด๋‚˜๋Š” ๋ณ€ํ™”๊ฐ€ ๋ถ€๋ชจํ•จ์ˆ˜์˜ ์‹ค์ธ์ˆ˜์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธ.
#include <stdio.h>

void func1(int* ptr)
{
	int i;   
	printf("func1() ํฌ์ธํ„ฐ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅํ•œ ์ฃผ์†Œ: %p, ํฌ์ธํ„ฐ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ: %d \n\n", ptr, sizeof(ptr)); 

	for (i = 0; i < 5; i++)
		*(ptr + i)  = *(ptr + i)+50;

}

void main()
{
	int i, count[5] = { 100,200,300,400,500 }; 

	printf("count ๋ฐฐ์—ด์˜ ์‹œ์ž‘ ์ฃผ์†Œ: %p, ๋ฐฐ์—ด์˜ ํฌ๊ธฐ: %d \n\n", count, sizeof(count)); 
	func1(count); // ํ•จ์ˆ˜ ํ˜ธ์ถœ 
	printf("count ๋ฐฐ์—ด์˜ ๊ฐ’: "); 
	for (i = 0; i < 5; i++)
		printf("%d ,", count[i]); 
	printf("\n\n"); 

	
}
  • ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋Š” ๊ตฌ์กฐ์ฒด ์•ˆ์˜ ๋ฉค๋ฒ„๋“ค์ด ๋ณต์žกํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋”๋ผ๋„ ๋ณ€์ˆ˜๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ผ๋ฐ˜ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ๋ฐ”๋กœ ๋Œ€์ž…๋  ์ˆ˜ ์žˆ๋‹ค.

9์žฅ ์—ฐ์Šต๋ฌธ์ œ, ์›Œํฌ๋ถ ์˜ค๋‹ต ๋…ธํŠธ

9-8

// <9-8>
#include <stdio.h>
#include <string.h>

int main(void)
{
    char names[10][20] = { "kim","lee","sin","jo","kim2",
                       "chae","jin","bak","so","chol" };
    int i, j;
    char tmp[20];

    printf("\n๋ฐฐ์—ด ์ดˆ๊ธฐํ™”\n");
    for (j = 0; j < 10; j++)
        printf("%5s", names[j]);
    printf("\n");

    for (i = 0; i < 9; i++)
        for (j = 0; j < 9 - i; j++)
            if (strcmp(names[j], names[j + 1]) > 0)
            {
                strcpy(tmp, names[j]);
                strcpy(names[j], names[j + 1]);
                strcpy(names[j + 1], tmp);
            }

    printf("\nSorted Result\n");
    for (j = 0; j < 10; j++)
        printf("%5s", names[j]);
    printf("\n");

    return 0;
}

9-6

#include <stdio.h>

int main(void)
{
      int a[3][3]={{13, 4, 30},
		    {34, 2, 5},
		    {7, 15, 27}};
      int b[3][3], i, j;

	printf("a ๋ฐฐ์—ด ๋ฆฌ์ŠคํŠธ \n");
	for(i=0;i<3; i++)
	{
		for(j=0;j<3;j++)
			printf("%5d", a[i][j]);
      printf("\n");
   }

//a ๋ฐฐ์—ด์„ ์ „์น˜ํ–‰๋ ฌ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ b ๋ฐฐ์—ด์— ์ €์žฅ
	for(i=0;i<3; i++)
		for(j=0;j<3;j++)
			b[j][i] = a[i][j];


	printf("\n์ „์น˜ํ–‰์—ด b ๋ฐฐ์—ด ๋ฆฌ์ŠคํŠธ \n");
	for(i=0;i<3; i++)
	{
		for(j=0;j<3;j++)
			printf("%5d", b[i][j]);
      printf("\n");
   }
}

9-7

#include <stdio.h>

int main()
{
	int num[7][7] = { 0 }, i, j, k = 0;
	// ๊ฐ’ ์ž…๋ ฅ 
	for (i = 0; i < 7; i++)
		for (j = 0; j < 7; j++)
		{
			k++;
			if (j < (i + 1))
				num[i][j] = k;
		}
	// ํ”ผ๋ผ๋ฏธ๋“œ ์‹ ์ถœ๋ ฅ 
	for (i = 0; i < 7; i++)
	{
		for (j = 0; j <= i; j++)
			printf("%5d", num[i][j]);
		printf("\n");
	}
	return 0;
}

workbook 2-1

#include<stdio.h>

#define stuSZ 5

int main()
{
	int answer[20] = { 1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4 };//1์ฐจ์› ์ˆซ์ž ๋ฐฐ์—ด์ดˆ๊ธฐ ๊ฐ’
    int student[stuSZ][20] = { {1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,1},
							 {1,1,3,1,1,3,3,4,3,2,3,4,1,2,3,4,3,2,3,1},
							 {4,3,1,1,1,2,3,4,1,2,2,4,2,2,3,4,4,2,3,2},
							 {1,2,4,4,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4},
							 {4,2,3,4,1,4,3,4,1,1,3,4,1,2,3,1,1,2,3,4} };//2์ฐจ์› ์ˆซ์ž ๋ฐฐ์—ด ์ดˆ๊ธฐ ๊ฐ’
	int i, j, sum = 0;//๋ณ€์ˆ˜ ์„ ์–ธ

	for (i = 0; i < stuSZ; i++)//stuSZ=5์ด๊ธฐ ๋•Œ๋ฌธ์— 0,1,2,3,4๊นŒ์ง€
	{
		//์ •๋‹ต์„ ๋น„๊ตํ•˜์—ฌ ์ ์ˆ˜ ์ถœ๋ ฅ
		int score = 100;

		for (int j = 0; j < 20; j++)//0๋ถ€ํ„ฐ19๊นŒ์ง€ j๋ฅผ ์ฆ๊ฐ€
		{
			if (answer[j] != student[i][j])//answer[j]๊ฐ€s tudent[i][j]์™€ ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด
				score -= 5;//์ ์ˆ˜=์ ์ˆ˜-5 ์‹คํ–‰
		}

		printf("%d๋ฒˆ ์ ์ˆ˜ : %d \n", i + 1, score);
	}
	return 0;
}				

workbook 3-2

//์ž…๋ ฅ๋œ ๋‚ ์งœ์˜ ์š”์ผ ๊ตฌํ•˜๊ธฐ
#include<stdio.h>

int dayStartFunc(int year, int mon, int day);

int main()
{
	int inputDate, year, month, day;
	int dayStart;//๋‹ฌ์˜ ๋‚ ์งœ๊ฐ€ ์‹œ์ž‘๋˜๋Š” ์š”์ผ

	char days[7] [10] = { "์ผ","์›”","ํ™”","์ˆ˜","๋ชฉ","๊ธˆ","ํ† " };

	printf("๋‚ ์งœ(yyyymmdd) : ");
	scanf("%d", &inputDate);//20170305 ์ž…๋ ฅ

	year = inputDate / 10000;//2020		//์ž…๋ ฅ๋œ ๋‚ ์งœ๋ฅผ 10000๋กœ ๋‚˜๋ˆ„๋ฉด ๋…„๋„
	month = (inputDate % 10000) / 100; //6 //์ž…๋ ฅ๋œ ๋‚ ์งœ๋ฅผ 10000๋กœ ๋‚˜๋ˆˆ ๊ฐ’์— 100์„ ๋‚˜๋ˆ„๋ฉด ์›”
	day = (inputDate % 10000) % 100;//9		//์ž…๋ ฅ๋œ ๋‚ ์งœ๋ฅผ 10000๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์— 100์„ ๋‚˜๋ˆ„๋ฉด ์ผ 

	printf("year: %d, month:%d, day:%d \n", year, month, day);

	dayStart = dayStartFunc(year, month, day);
	//์ž…๋ ฅ๋œ ๋‚ ์ž์˜ ์ผ์ˆ˜ ๊ณ„์‚ฐํ•จ์ˆ˜ ํ˜ธ์ถœ

	printf("\n%d๋…„ %d์›” %d์ผ์€, %s์š”์ผ\n", year, month, day, days[dayStart % 7]);//์š”์ผ์ถœ๋ ฅ  //7๋กœ ๋‚˜๋ˆด์„๋•Œ 0์ด๋ฉด ์ผ์š”์ผ ์•„๋‹ˆ๋ฉด ๊ธฐ์ค€์ผ +1์˜ ์š”์ผ์ด ๋‚˜์˜ด

	return 0;
}		   //2020, 6, 9

int dayStartFunc(int year, int mon, int day)
{
	//์œค๋…„์•„๋‹ ๋•Œ ์›”๋ณ„ ์ผ์ž
	int yearMonth[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };   //๋ฐฐ์—ด์„ ์–ธ
	int i, t_day;

	t_day = (year - 1) * 365;//2019๋…„๊นŒ์ง€ ์ผ์ž //t_day๋Š” (year - 1) * 365๋กœ ๊ณ„์‚ฐ

	for (i = 1; i < year; i++)//1~2019๊นŒ์ง€ ์œค๋…„ ํ™•์ธ //i๋Š” 1๋ถ€ํ„ฐ ๋…„๋„ ๊นŒ์ง€
	{
		if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0))	//๋งŒ์•ฝ i๋ฅผ 4๋กœ ๋‚˜๋ˆด์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๊ณ  100์œผ๋กœ ๋‚˜๋ˆด์„๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ i๋ฅผ 400์œผ๋กœ ๋‚˜๋ˆด์„๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ผ๋ฉด
			t_day++;//์œค๋…„์€ 366์ผ์ด๋ฏ€๋กœ ํ•˜๋ฃจ ๋”ํ•จ
	}
	for (i = 0; i < mon; i++)	//i๋Š” 0๋ถ€ํ„ฐ ์›” ๊นŒ์ง€
	{
		if(((year%4==0&&year%100!=0)||(year%400==0))&&(i==2))//๋…„๋„๋ฅผ 4๋กœ ๋‚˜๋ˆด์„๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๊ณ  100์œผ๋กœ ๋‚˜๋ˆด์„๋•Œ 0์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ ๋…„๋„๋ฅผ 400์œผ๋กœ ๋‚˜๋ˆด์„๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๊ณ  i๊ฐ€ 2์ผ๋•Œ
			t_day+=29; //t_day=t_day+29
		else		   //๋˜๋Š”
			t_day+=yearMonth[i]; //t_day=t_day+yearMonth[i]๊ณ„์‚ฐ
	}

	return t_day+day;
		//๋…„,์ „ ์›” ๊นŒ์ง€์˜ ํ•ฉ๊ณผ ํ˜„์žฌ๋‹ฌ์˜ ์ผ์ž ๋”ํ•˜์—ฌ ๋ฐ˜ํ™˜
}

10์žฅ ์—ฐ์Šต๋ฌธ์ œ, ์›Œํฌ๋ถ ์˜ค๋‹ต ๋…ธํŠธ

10-5

#include <stdio.h>

int main()
{
	char str[20]; // "C language." ๋ผ๋Š” ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•  ๋ฌธ์ž์—ด ๋ฐฐ์—ด str ์„ ์–ธ (์‹ค์ œ๋กœ ๋Œ€์ž…๋˜๋Š” ๋ฌธ์ž์—ด: C language + `\0`) 
	char* ptr; // ๋ฌธ์ž์—ด์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ ์„ ์–ธ, ptr = 3000(์ž„์˜์˜ ์ฃผ์†Œ๊ฐ’), *ptr = 'C', ptr++ = 3001(์ž„์˜์˜ ์ฃผ์†Œ๊ฐ’)  
	int cn = 0;

	ptr = str;  //๋ฐฐ์—ด์˜ ์‹œ์ž‘์ฃผ์†Œ ๋Œ€์ž…

	printf("Input String ? ");
	gets(str);

	while (*ptr) // while (*ptr != '\0')
		ptr++;
	ptr--; // '.' ์œ„์น˜๋กœ ํฌ์ธํ„ฐ ์ด๋™ 

	while (ptr >= str) // ๋งŒ์•ฝ ptr์— ํ• ๋‹น๋œ ์ฃผ์†Œ๊ฐ€ 2999๋กœ, str์— ํ• ๋‹น๋œ 3000๋ณด๋‹ค ์ž‘์œผ๋ฉด ๋” ์ด์ƒ ๋ฌธ์ž์—ด์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ptr์— ํ• ๋‹น๋œ ์ฃผ์†Œ๋ฒˆ์ง€๋Š” str์— ํ• ๋‹น๋œ ์ฃผ์†Œ๋ฒˆ์ง€๋ณด๋‹ค ์ปค์•ผํ•จ (3000, 3001..) 
	{
		printf("%c ", *ptr--); // ์—ญ์œผ๋กœ ์ถœ๋ ฅ, ํฌ์ธํ„ฐ๋ฅผ ์šฐ์—์„œ ์ขŒ๋กœ ์›€์ง์ž„ 
		cn++; // ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์…ˆ : 11
	}
	printf("\n\n");
	printf("๋ฌธ์ž์—ด์˜ ํฌ๊ธฐ : %d \n\n", cn); // 11

	return 0;
}

10-7

#include <stdio.h>

int main()
{
	char str[50] = "Multi Campus.";
	char *ptr; // *ptr์€ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ„์ ‘ ์ฐธ์กฐํ•œ `๊ฐ’` 

	ptr = &str;  //๋ฐฐ์—ด์˜ ์‹œ์ž‘์ฃผ์†Œ ๋Œ€์ž… ptr = str;

	printf("before : %s \n\n", str);

	while (*ptr != '\0') // while(*ptr!='\0') , while (*ptr != 0) //loop util null terminator if found.
		// ๋ฌธ์ž ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๊ฐ’์ด 0(null) ์ด ์•„๋‹๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ ์ˆ˜ํ–‰ 
	{
		if (*ptr >= 'A' && *ptr <= 'Z') // 65~90 ๋Œ€๋ฌธ์ž 
			*ptr = *ptr + 32; // 97~122 ์†Œ๋ฌธ์ž
		else if (*ptr >= 'a' && *ptr <= 'z')
			*ptr = *ptr - 32;
		*(ptr++); // ptr์˜ ๋‹ค์Œ ์ฃผ์†Œ์˜ ๊ฐ’
	}
	printf("after : %s \n", str);

	return 0;
}


/*
์ฆ๊ฐ์—ฐ์‚ฐ์ž๊ฐ€ ์—ญ์ฐธ์กฐ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๊ธฐ ๋•Œ๋ฌธ์—
*ptr++๋Š” *(ptr++)๋กœ ํ’€์–ด ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

*ptr++ -> ptr์˜ ๋‹ค์Œ ์ฃผ์†Œ์˜ ๊ฐ’
ptr++-> ptr์˜ ๋‹ค์Œ ์ฃผ์†Œ.
(*ptr)++ ->ptr์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’ ์ฆ๊ฐ 

*/

10-9

#include <stdio.h>

void my_Strcat(char* dest, char* source);

int main() {
	char strDestination[20] = "king";
	char strSource[20] = "dom";

	my_Strcat(strDestination, strSource);

	printf("Source: %s ,  Destination: %s\n", strSource, strDestination);
}

void my_Strcat(char* dest, char* source) {
	for (; *dest; dest++);
	for (; *source; dest++, source++) {
		*dest = *source;
	}
	*dest = '\0';
}

workbook 2-1

#include <stdio.h>

int main()
{
    char str[50]="Multi Campus.", tmp[50];
	char *from, *to;
   
	from = str;
	to = tmp;

	 while(*from)
	 {
		 *to = *from;
		 from++, to++;
	 }
	 *to = '\0'; //null ๋ฌธ์ž ์ถ”๊ฐ€


	 printf("str: %s, tmp: %s \n", str, tmp);
     
    return 0;
}

workbook 3-1

#include <stdio.h>

int main()
{
	double dNum[5], dSum = 0.0;
	double* ptr; //ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ptr ์„ ์–ธ 
	int i, size;

	size = sizeof(dNum) / sizeof(double); // ๋ฐฐ์—ด ํฌ๊ธฐ ๊ณ„์‚ฐ 
	ptr = dNum; //ptr์— ์ฐธ์กฐํ•  ์ฃผ์†Œ ์ €์žฅ 

	for (i = 0; i < size; i++)
	{
		printf("%d, ์‹ค์ˆ˜ ์ž…๋ ฅ? ", i + 1);
		scanf("%lf", &ptr[i]);//&ptr[i] = ptr+1 
		dSum += ptr[i];  //*(ptr + i) = ptr[i]

		/*
			*ptr++ -> ptr์˜ ๋‹ค์Œ ์ฃผ์†Œ์˜ ๊ฐ’
			ptr++-> ptr์˜ ๋‹ค์Œ ์ฃผ์†Œ.
			(*ptr)++ ->ptr์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’ ์ฆ๊ฐ 
		*/
	}

	printf("\n์ž…๋ ฅ๋œ dNum ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ \n");
	for (i = 0; i < size; i++)
		printf("%.2lf, ", dNum[i]);
	printf("\n");
	printf("dNum ๋ฐฐ์—ด์˜ ํ•ฉ: %.2lf \n", dSum);

	return 0;
}

11์žฅ ์—ฐ์Šต๋ฌธ์ œ, ์›Œํฌ๋ถ ์˜ค๋‹ต ๋…ธํŠธ

11-8

#include <stdio.h>
#include <string.h>

struct A {
  char dept[20];
  char name[20];
  enum B {manager1 = 1, manager2, manager3, employee1, employee2} position;
  int salary;
  int sudang;
} emps[10];

int main(void)
{
  int i, count;
  for(i = 0; i < 10; i++)
  {
    printf("%d, ๋ถ€์„œ ?(์ข…๋ฃŒ:end) ", i + 1);
    gets(emps[i].dept);
    if(!strcmp(emps[i].dept, "end"))
      break;
    printf("   ์„ฑ๋ช… ? ");
    gets(emps[i].name);
    printf("   ์ง๊ธ‰ =>");
    do{
      printf(" 1:์‚ฌ์žฅ, 2:๋ถ€์žฅ, 3:๊ณผ์žฅ, 4:๋Œ€๋ฆฌ, 5:์‚ฌ์› ? ");
      scanf("%d", &emps[i].position);  
    }while(emps[i].position < 1 || emps[i].position > 5);
    printf("   ์›”๊ธ‰ ? ");
    scanf("%d%*c", &emps[i].salary);
    if(emps[i].position >= manager2)  //์ˆ˜๋‹น ์„ ํƒ
      emps[i].sudang = 70000;
    else
      emps[i].sudang = 5000;
  }

  count = i;
  printf("----------------------------------------\n");
  printf("    ๋ถ€์„œ  ์„ฑ๋ช…  ์ง๊ธ‰  ์‹ค์ˆ˜๋ น์•ก  \n");
  printf("----------------------------------------\n");
  // ์ถœ๋ ฅ๋ฌธ ์ž‘์„ฑ
  for(int j = 0; j < i; j++)
  {
    printf("%s, ", emps[j].dept);
    printf("%s, ", emps[j].name);
    switch(emps[j].position)
    {
      case 1 :
        printf("์‚ฌ์žฅ, ");
        break;
      case 2 :
        printf("๋ถ€์žฅ, ");
        break;
      case 3 :
        printf("๊ณผ์žฅ, ");
        break;
      case 4 :
        printf("๋Œ€๋ฆฌ, ");
        break;
      case 5 :
        printf("์‚ฌ์›, ");
        break;
    }
    printf("%8d\n", emps[j].salary + emps[j].sudang);
  }
  return 0;
}

workbook 1-1

#include <stdio.h>

int main()
{
	struct STUDENT { char name[20]; //ํ•™์ƒ์ด๋ฆ„
	                int score[3];   //๊ณผ๋ชฉ์ ์ˆ˜
					int sum;        //ํ•ฉ
					float avg;      //ํ‰๊ท 
	};

	struct STUDENT std1 = {"ํ™๊ธธ๋™", 68,89,80};
	int i;

	for(i=0;i<3;i++)
	   std1.sum += std1.score[i];
	std1.avg = (float) std1.sum/3;

	printf("%s, %d, %d, %d, %d, %.2f \n", 
		   std1.name , std1.score[0], std1.score[1], std1.score[2], std1.sum, std1.avg );

	return 0;
}

workbook 2-2

#include <stdio.h>
#include <ctype.h>

struct A_MEMBER { char name[20];
                  int age;
				  char gender;
                  char grade;
				  char mobTel[15];
				  char custAddr[100];
};

void heading();

int main()
{
	struct A_MEMBER cust;

	printf("์„ฑ๋ช… ?  ");
	gets(cust.name);
	printf("๋‚˜์ด ?  ");
	scanf("%d%*c", &cust.age);

	do{
		printf("์„ฑ๋ณ„ ?  (๋‚จ:m,์—ฌ:w) ");
		scanf("%c%*c", &cust.gender);
		cust.gender = toupper(cust.gender);
	} while(cust.gender!='M' && cust.gender!='W');

	do{
		printf("ํšŒ์›๋“ฑ๊ธ‰ ?  (A, B, C) ");
		scanf("%c%*c", &cust.grade);
		cust.grade = toupper(cust.grade);
	} while(cust.gender!='A' && cust.grade!='B' && cust.grade!='C');
	
	printf("ํœด๋Œ€ํฐ ๋ฒˆํ˜ธ ?  ");
	gets(cust.mobTel);

	printf("๊ทผ๋ฌด์ง€์—ญ ์ฃผ์†Œ ?  ");
	gets(cust.custAddr);

	heading();

	printf("%s, %d, %c, %4c, %s, %s \n", cust.name, cust.age, 
		   cust.gender, cust.grade, cust.mobTel, cust.custAddr);

	return 0 ;
}

void heading()
{
	printf("======================================================\n");
	printf("์„ฑ๋ช…   ๋‚˜์ด ์„ฑ๋ณ„ ๋“ฑ๊ธ‰ ํœด๋Œ€ํฐ๋ฒˆํ˜ธ    ๊ณ ๊ฐ์ฃผ์†Œ \n");
	printf("======================================================\n");

}

workbook 3-1

#include <stdio.h>

#define STU_SZ 5

struct STUDENT { char name[20];
                 char subject[5][30];
                 int hakjum_unit[5];
                 double jumsu[5];
				 double greade;
};

void heading();

int main()
{
	struct STUDENT stu = { "๊นŒ๊ฟ์ด", "C/C++","JAVA","Oracle","์ „์‚ฐ๊ฐœ๋ก ","๊ต์–‘1", 3, 3, 2, 4, 3, 4.5, 3.0, 3.5, 4.0, 3.5, 0.0 };
	int i, h_unit_tot=0;
	double tmp=0;


	for(i=0;i<5;i++)
	{
		h_unit_tot += stu.hakjum_unit[i];  //์ด ์ด์ˆ˜์‹œ๊ฐ„
		tmp += stu.hakjum_unit[i] * stu.jumsu[i]; //๊ณผ๋ชฉ๋ณ„ ์ด์ˆ˜๋‹จ์œ„*ํ‰์ ์˜ ํ•ฉ
	}

	stu.greade = tmp/h_unit_tot;  //์ด ํ‰์ 

	heading();
	printf("%5s, ", stu.name );
	for(i=0;i<5;i++)
		printf("%6s:%d:%.1lf, ", stu.subject[i], stu.hakjum_unit[i], stu.jumsu[i]);
	printf("=> %.2lf \n", stu.greade);


	return 0;
}

void heading()
{
	printf("=======================================================================================\n");
	printf("์„ฑ๋ช…     ๊ณผ๋ชฉ  ํ•™์     ๊ณผ๋ชฉ  ํ•™์     ๊ณผ๋ชฉ  ํ•™์    ๊ณผ๋ชฉ  ํ•™์      ๊ณผ๋ชฉ  ํ•™์     ์ดํ‰์  \n");
	printf("=======================================================================================\n");
}

12์žฅ ์—ฐ์Šต๋ฌธ์ œ, ์›Œํฌ๋ถ ์˜ค๋‹ต ๋…ธํŠธ

12-5

//12-5
#include <stdio.h> 

int main()
{
	int i;
	char Ch = 65, ch = 97, space = 32;
	FILE* fp;	//ํŒŒ์ผํฌ์ธํ„ฐ


	//1.์ŠคํŠธ๋ฆผ ์—ฐ๊ฒฐ
	fp = fopen("ex05.dat", "wt");		//๋ฌธ์ž์—ด ์ƒ์ˆ˜๋Š”  ์–ด๋””์ธ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค
	for (i = 0; i < 26; i++)
	{
		fputc(Ch, fp);
		fputc(ch, fp);
		fputc(space, fp);
		Ch++;
		ch++;
	}
}

12-7

#include <stdio.h>
#include <stdlib.h>

int main() {
	struct TMP {
		char name[20];
		int age;
		int salary;
		char mobTel[20];
	} tmp;
	int i;

	FILE* fp = fopen("ex07.dat", "rt");
	if (fp == NULL) {
		printf("Wrong Access.\n");
		exit(1);
	}
	
	while (1) {
		i = fscanf(fp, "%s %d %d %s", &tmp.name, &tmp.age, &tmp.salary, tmp.mobTel);
		if (i == 0 || i == EOF) break;

		printf("%s, %d, %d, %s\n", tmp.name, tmp.age, tmp.salary, tmp.mobTel);
	}

	fclose(fp);
}

workbook 2-1

#include <stdio.h>
#include <stdlib.h>

#define STU_SZ 3 

struct STUDENT { char name[20];
                 int kor;
				 int eng;
				 int mat;
				 float avg;
};

void heading();

int main()
{
	struct STUDENT stu[ STU_SZ] = { {"๊นŒ๊ฟ์ด", 89,96,94}, 
									{"ํ•œ์†ก์ด", 53,73,84},
									{"๋‘์†ก์ด", 39,90,69} };
	int i;
	FILE *fp;

	for(i=0;i<STU_SZ;i++)
		stu[i].avg = (float) (stu[i].kor+stu[i].eng+stu[i].mat) / 3;

	heading();

	for(i=0;i<STU_SZ;i++)
		printf("%s, %3d, %3d, %3d, %7.2f \n", stu[i].name , stu[i].kor, stu[i].eng , stu[i].mat , stu[i].avg);

	fp=fopen("Level2_1.txt","wt");
	if(fp==NULL)
	{
		printf("Open Error. \n");
		exit(1);
	}

	for(i=0;i<STU_SZ;i++)
		fprintf(fp, "%s %d %d %d %f ", stu[i].name , stu[i].kor, stu[i].eng , stu[i].mat , stu[i].avg);
	fclose(fp);

	printf("Level2_1.txt ํŒŒ์ผ์ €์žฅ. \n");

	return 0;
}

void heading()
{
	printf("=================================\n");
	printf("์„ฑ๋ช…   ๊ตญ์–ด  ์˜์–ด  ์ˆ˜ํ•™  ํ‰๊ท  \n");
	printf("=================================\n");
}

workbook 2-2

#include <stdio.h>
#include <stdlib.h>

struct STUDENT { char name[20];
                 int kor;
				 int eng;
				 int mat;
				 float avg;
};

void heading();

int main()
{
	struct STUDENT stu;
	int i, result;
	FILE *fp;

	fp=fopen("Level2_1.txt","rt");
	if(fp==NULL)
	{
		printf("Open Error. \n");
		exit(1);
	}

	heading();

	while(1)
	{
		result= fscanf(fp, "%s %d %d %d %f ", stu.name , &stu.kor, &stu.eng , &stu.mat , &stu.avg);
		if(result != 5)
			break;
		printf("%s, %3d, %3d, %3d, %7.2f \n", stu.name , stu.kor, stu.eng , stu.mat , stu.avg);
	}

	return 0;
}

void heading()
{
	printf("=================================\n");
	printf("์„ฑ๋ช…   ๊ตญ์–ด  ์˜์–ด  ์ˆ˜ํ•™  ํ‰๊ท  \n");
	printf("=================================\n");
}

profile
heejoojeon@daou.co.kr

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด