while(p2)=> ๋ฌดํ ๋ฃจํ, ์ฃผ์๋ ๋์์ด ํผ์ณ์ ธ์์ด์ ๋ฌดํ ๋ฐ๋ณตํ๋ค๋ ๋ป์.
while(*
p2)=> *
p2ํ๋ฉด ๋ฌธ์์ด ๋ง์ง๋ง ๊ณต๋ฐฑ์์ ๊ฑธ๋ฆผ.
*
cp = ์ฃผ์์์ ๊ฐ์ ์ฐพ์๊ฐ๋ผ
&cp = ์ฃผ์๊ฐ
int*
ptr;
int = ์๋ฃํ
*
= ํฌ์ธํฐ์ ์ธ
ptr = ๋ณ์๋ช
int*
== ์ธํธํ์ผ๋ก๋ ์ฃผ์
int*
ptr == ptr์ด๋ผ๋ ์ด๋ฆ์ ์ฃผ์๋ณ์
ptr = &num ptr์ด๋ผ๋ ์ฃผ์๋ณ์์ num์ฃผ์ ์ ๋ ฅ
ptr ptr์ฃผ์์์ ๊ฐ ๋ถ๋ฌ์ค๊ธฐ
int *
b = &a; => ํฌ์ธํฐ ๋ณ์ ๋ด ์ฃผ์ ์ ์ธ ์)
cf. int b = &a; (x)
*๋ ๊ฐ์ด๋ค.
&๋ ์ฃผ์๊ฐ์ด๋ค.
๐ฝ & (ampersand) ์ดํด
&๊ฐ ๋ถ์ผ๋ฉด ๋ฌด์กฐ๊ฑด ์ฃผ์๊ฐ์ด ๋๋ค. ํฌ์ธํฐ ๋ณ์๋ ๋ฌด์กฐ๊ฑด ์ฃผ์๊ฐ์ ๋ด์์ผ ํ๋ค. ๋ฐ๋ผ์ ํน์ํ ๊ธฐํธ &๋ฅผ ๋ถ์ฌ์ค์ผ ํ๋ค. ์ด์ ์๋ ๊ทธ๋ฆผ์ ์ดํดํ๋ฉด ๋๋ค.
์ ์ธํ ํฌ์ธํฐ ํ์ (type)๊ณผ ๊ฐ๋ฆฌํค๊ณ ์๋ ์ฃผ์์ ํ์ (type)์ด ๋ฐ๋์ ์ผ์นํด์ผ ํ๋ค.
ํฌ์ธํฐ ๋ณ์์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ ์ธ๋๋ ์๋ฃํ๊ณผ๋ ๋ฌด๊ดํ๋ฉฐ 32๋นํธ ์ด์์ฒด์ ์์๋ 4๋ฐ์ดํธ, 64๋นํธ ์ด์์ฒด์ ์ธ ๊ฒฝ์ฐ์๋ 8๋ฐ์ดํธ๋ฅผ ํ ๋นํ๋ค.
๐ฝ ํฌ์ธํฐ ์ดํด
#include <stdio.h>
int main()
{
int number = 5; // 1. ์ฒ์์ number ๋ณ์์ 5๋ก ์ด๊ธฐํํ๊ตฌ์.
printf("%p\n",&number); // 2. number์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ์ ํธ์ถ
printf("%d\n",number); // 3. number์ ๋ณ์๊ฐ 5๋ฅผ ํธ์ถ
int *pointer = &number; // 4. ํฌ์ธํฐ๋ณ์ *pointer๋ฅผ ์ ์ธํ ๋ค number์
// ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ์ผ๋ก ์ด๊ธฐํ
*pointer = 3; // 5. ํฌ์ธํฐ๋ณ์ ๊ฐ์ 3์ผ๋ก ์ด๊ธฐํ
printf("%p\n",pointer); // 6. pointer๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ number์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋์ผ
printf("%d",*pointer); // 7. 4๋ฒ์ด ์คํ๋์์ผ๋ ํฌ์ธํฐ๋ณ์๋ฅผ ํตํด ๊ธฐ์กด์ ๊ฐ 5์์ 3์ผ๋ก
// ๋ณ๊ฒฝํ ๊ฒ์ด ์ถ๋ ฅ๋จ.
return 0;
}
// pointer1.c
#include <stdio.h>
// ํฌ์ธํฐ(Pointer) : ์คํ ์ค์ธ ํ๋ก์ธ์ค(๋ฉ๋ชจ๋ฆฌ)์ ์์์ ์ฃผ์
int main()
{
double dnum; // ๋ณ์(๊ฐ)
double *dp; //ํฌ์ธํฐ๋ณ์(๋ฉ๋ชจ๋ฆฌ์ฃผ์) // * : ํฌ์ธํฐ ์ฐ์ฐ์
char *ptr;
dnum = 1.6; //cf. ์ผ๋ฐ ๋ณ์์ ๋ฌ๋ฆฌ ์ฃผ์๋ ํฌ์ธํฐ๋ณ์์ ๊ฐ์ ๋์
ํ๋ ๋ฐฉ์์ผ๋ก ์์ฑํ ์ ์์
printf("%lf, %p \n", dnum, &dnum);
dp = &dnum;
//์คํ๋ฌธ * : ํฌ์ธํฐ ์ฐ์ฐ์
// ํฌ์ธํฐ์ ์ ์ฅ๋ ์ฃผ์๋ฅผ ์ฐธ์กฐํ์ฌ ํฌ์ธํฐ์๋ฃํ์ ํฌ๊ธฐ๋งํผ ๊ฐ๋ฆฌํจ๋ค
printf("%lf, %p \n", *dp, dp);
// ptr = &dnum; //์ ์ธํ ํฌ์ธํฐ ํ์
(type)๊ณผ ๊ฐ๋ฆฌํค๊ณ ์๋ ์ฃผ์์ ํ์
(type)์ด ๋ฐ๋์ ์ผ์นํด์ผ ํ๋ค.
// printf("%p \n", ptr);
// printf("%lf \n", ptr);
printf("%d, %d, %d \n", sizeof(dnum), sizeof(dp), sizeof(ptr));
return 0;
}
//pointer2.c
#include <stdio.h>
int main()
{
char ch='A', * cp;
int num = 100, * ip;
float fnum=1.1, * fp;
double dnum=5.2, * dp;
printf("%c, %d, %f, %lf \n", ch, num, fnum, dnum);
// ํฌ์ธํฐ ๋ณ์์ ์ฃผ์๋ฅผ ํ ๋นํ์ฌ
cp = &ch; //๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ์ผ๋ก ์ด๊ธฐํ
ip = #
fp = &fnum;
dp = &dnum;
// ์ฃผ์๊ฐ ์ฐธ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ์์ค.
printf("%c, %d, %f, %lf \n", *cp, *ip, *fp, *dp);
*ip = 37; //ํฌ์ธํฐ๋ณ์ ๊ฐ์ 37์ผ๋ก ์ด๊ธฐํ
printf("num: %d \n", num); //ํฌ์ธํฐ๋ณ์๋ฅผ ํตํด ๊ธฐ์กด์ ๊ฐ 5์์ 3์ผ๋ก ๋ณ๊ฒฝํ ๊ฒ์ด ์ถ๋ ฅ๋จ.
return 0;
}
์ฌ๊ธฐ์๋ numPtrA๊ฐ 4๋ฐ์ดํธ ํฌ๊ธฐ์ intํ์ ๋๋ค.
๋ฐ๋ผ์ numPtrA + 1์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์์ 4๋ฐ์ดํธ๋งํผ 1๋ฒ ์๋ฐฉํฅ์ผ๋ก ์ด๋ํ๋ค๋ ๋ป(ํฌ์ธํฐ ์ ์ง, forward)์ด๊ณ , numPtrA + 2๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์์ 4๋ฐ์ดํธ๋งํผ 2๋ฒ ์๋ฐฉํฅ์ผ๋ก ์ด๋ํ๋ค๋ ๋ป์ ๋๋ค.
์ฆ, ๊ณ์ฐ์์ "sizeof(์๋ฃํ) * ๋ํ๊ฑฐ๋ ๋นผ๋ ๊ฐ"
์ด ๋ฉ๋๋ค.
๋ฐฐ์ด์ ๋ชจ๋ ํฌ์ธํฐ์ ํด๋น
+) ๋ฐฐ์ด ์์ ๊ฐ์ = sizeof(๋ฐฐ์ด๋ช
) / sizeof(์๋ฃํ);
count+1 = &count[1] = ptr+1 (๊ฐ์ ์ฃผ์ ์ง๋)
*
(count+1) = count[1] = *(ptr+1) (๊ฐ์ ๊ฐ์ ์ง๋)
//pointer3.c
#include <stdio.h>
int main()
{
int num[5] = { 100, 200, 300, 400, 500 }, i;
int* ptr; // ๋ฐฐ์ด์ ์ฃผ์๊ฐ ๊ฐ๊ณ ์๋ ๊ฐ์ ์๋ ค์ค
printf("%d, %d \n", sizeof(num), sizeof(ptr));
ptr = num;//์ฒจ์์๋ ๋ฐฐ์ด ๋ณ์๋ช
: ๋ฐฐ์ด์ ์์ ์ฃผ์๋ฅผ ๋๊ฒจ ๋ฐ์ , num๋ ๋ฐฐ์ด์ ์ฃผ์์ด๋ฏ๋ก ํฌ์ธํฐ์ ํด๋น=> ํฌ์ธํฐ ์ฐ์ฐ ๊ฐ๋ฅ *(num+i)
for (i = 0; i < 5; i++)
printf("%p: %d, %d, %d \n",num+i, *(ptr + i), *(num+i), ptr[i]) ; // ptr+2 (์๋ฃํ์ด ์ ์ํ์ด๋ฏ๋ก ์ฃผ์ + 4byte*2) , ๊ดํธ ์ฌ์ฉ ํ
//cf.) printf("%p: %d, %d \n", &num[i], num[i], *ptr + i); // ํฌ์ธํฐ ์ฐ์ฐ์ด ์๋ ๊ฐ์ ์ฐ์ฐ ์ฐ์ ์ํ 101, 102,,
printf("\n");
char str[20] = "kingdom", * p2;
p2 = str;
printf("%c, %c, %c, %c \n", str[0], *(str + 0), *str, *p2); // %c๋ ๋จ์ผ ๋ฌธ์ // ์ฃผ์*1byte(char type) ํ ๋น๋ ๋ฐ์ดํฐ ์ถ๋ ฅ ('k')
printf("%p: %s, %s \n", str, str, p2); // %p, s๋ ์ฃผ์๊ฐ
// ๋ฐ๋ณต๋ฌธ์ ํตํ ๋ฐฐ์ด ์ถ๋ ฅ (k,i,n,g,d,o,m)
while (*p2) // while(k) => ๊ดํธ ์์ด 0์ด ์๋๋ฏ๋ก ์ฐธ
// ์ฃผ์๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฐ์ดํฐ๊ฐ ์ฐธ์ธ์ง ์์์ผ ํ๋ฏ๋ก *p2
{
printf("%c, ", *p2++);// 6000์ฃผ์์ ํ ๋น๋ ๊ฐ, 6001์ฃผ์์ ํ ๋น๋ ๊ฐ,,,
//p2++;
}
printf("\n");
/*for (i = 0; str[i]; i++)
{
printf("%c\n", str[i]);
}
*/
return 0;
}
๐ฝ [pointer3.c] p2
์๋ฆฌ์ str
๋์
์ ์ค๋ฅ ๋ฐ์
int x[10] = {1,2,,,}
int y[10] = {,,}
y = x;
ref. https://blockdmask.tistory.com/348
// <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;
}
// 10์ฅ ์ฐ์ต๋ฌธ์ 10-5
#include <stdio.h>
#define LENGTH 12 // ์ต๋ 12์๊น์ง๋ง ์
๋ ฅ ๋ฐ๋๋ค
int main()
{
int i, len = 0;
int cn = 0;
char str[LENGTH];
printf("input string :");
// %[^\n]s => scanf_s ํจ์์์ ๊ณต๋ฐฑ์ ํฌํจํด ์
๋ ฅ ๋ฐ์ (๋์ด์ฐ๊ธฐ๋ฅผ ์์ฐ)
// %s๋ผ๊ณ ๋ง ์ ์ผ๋ฉด ๊ณต๋ฐฑ์ ๊ตฌ๋ถ์๋ก ๋ด์ ์
๋ ฅ์ ๊ณต๋ฐฑ๊น์ง๋ง ๋ฐ์ (C๋ง ์ถ๋ ฅ)
// ์๋์ ๊ฐ์ด 'ํ์ ์ง์ ์'๋ฅผ ์ฌ์ฉํด์ผ ๊ณต๋ฐฑ ํฌํจ ์
๋ ฅ ๋ฐ์
scanf_s("%[^\n]s", str, LENGTH - 1);
// NULL ๋ฌธ์๋ฅผ ๋ง๋ ๋๊น์ง ์ด๋ , ์ฌ์ฉ์๊ฐ ์
๋ ฅํ str ๋ฐฐ์ด์ ์
๋ ฅ๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ค.
while (str[len] != 0)
len++;
// str ๋ฐฐ์ด์ ์ ์ฅ๋ ๋ฌธ์์ด์ ๊ฑฐ๊พธ๋ก ์ถ๋ ฅ
// len -1 ์์ ์์ํด์ 1์ฉ ๊ฐ์
// i ๊ฐ์ด 0๋ณด๋ค ์์์ง๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ข
๋ฃ
printf("์ถ๋ ฅ : \n");
for (i = len - 1; i >= 0; --i)
{
printf("%c", str[i]); // ๋ฌธ์ ๋จ์๋ก ์ถ๋ ฅ
cn++;
}
// ์ค๋ฐ๊ฟ
printf("\n");
printf("๋ฌธ์์ด์ ํฌ๊ธฐ: %d", cn);
return 0;
}
// <10 - 7>
#include <stdio.h>
int main(void)
{
char str[50] = "Multi Campus.";
char* ptr;
printf("before : %s\n", str);
for (ptr = str; *ptr; ++ptr)
{
if ('a' <= *ptr && *ptr <= 'z')
*ptr -= 32;
else if ('A' <= *ptr && *ptr <= 'Z')
*ptr += 32;
}
printf("after : %s\n", str);
return 0;
}
// 10์ฅ ์ํฌ๋ถ 2-1 ํ์ด
#include <stdio.h>
int main()
{
char msg[100] = "Hello World !!!";
char* ptr = msg;
printf("msg : %s \n", msg);
while (*ptr)
{
printf("%c, ", *ptr);
ptr++;
}
printf("\n");
return 0;
}
// 10์ฅ ์ํฌ๋ถ 3-1 ํ์ด
#include <stdio.h>
int main()
{
char str[50] = "Multi Campus.", tmp[50]; // ๋ฌธ์์ด ๋ฐฐ์ด ์์ฑ
char *from, *to; // str ๋ฐฐ์ด์ tmp๋ก ๋ณต์ฌํ๊ธฐ ์ํ ํฌ์ธํฐ ์์ฑ
from = str; // ํฌ์ธํฐ์ ๋ฌธ์์ด ์ฐ๊ฒฐ (๊ฐ ํฌ์ธํฐ๋ค์ ๋ฐฐ์ด์ ์ฐ๊ฒฐ) // str ์ฃผ์ ์ ์ฅ
to = tmp; // tmp ์ฃผ์ ์ ์ฅ
while (*from != '\0')//๋ฐ๋ณตํ ์กฐ๊ฑด // *from๊ณผ '\0' ๊ฐ ๋ค๋ฅด๋ฉด ์ฐธ, ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฑฐ์ง, ์ฆ null ๊น์ง ๊ฐ๋ฉด while๋ฌธ ์ข
๋ฃ
{
*to++ = *from++;
}
*to = '\0'; // null ๋ฌธ์ ์ถ๊ฐ ('\0'์ ์ฐ๋ ๊ธฐ๊ฐ null์ ์๋ฏธ)
printf("str: %s, tmp: %s \n", str, tmp);
return 0;
}
10-1
*
10-2
char *b = &a;
ํ์10-3
10-4
10์ฅ ์ฐ์ต๋ฌธ์ 10-5
// 10์ฅ ์ฐ์ต๋ฌธ์ 10-5
#include <stdio.h>
#define LENGTH 12 // ์ต๋ 12์๊น์ง๋ง ์
๋ ฅ ๋ฐ๋๋ค
int main()
{
int i, len = 0;
int cn = 0;
char str[LENGTH];
printf("input string :");
// %[^\n]s => scanf_s ํจ์์์ ๊ณต๋ฐฑ์ ํฌํจํด ์
๋ ฅ ๋ฐ์ (๋์ด์ฐ๊ธฐ๋ฅผ ์์ฐ)
// %s๋ผ๊ณ ๋ง ์ ์ผ๋ฉด ๊ณต๋ฐฑ์ ๊ตฌ๋ถ์๋ก ๋ด์ ์
๋ ฅ์ ๊ณต๋ฐฑ๊น์ง๋ง ๋ฐ์ (C๋ง ์ถ๋ ฅ)
// ์๋์ ๊ฐ์ด 'ํ์ ์ง์ ์'๋ฅผ ์ฌ์ฉํด์ผ ๊ณต๋ฐฑ ํฌํจ ์
๋ ฅ ๋ฐ์
scanf_s("%[^\n]s", str, LENGTH - 1);
// NULL ๋ฌธ์๋ฅผ ๋ง๋ ๋๊น์ง ์ด๋ , ์ฌ์ฉ์๊ฐ ์
๋ ฅํ str ๋ฐฐ์ด์ ์
๋ ฅ๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ค.
while (str[len] != 0)
len++;
// str ๋ฐฐ์ด์ ์ ์ฅ๋ ๋ฌธ์์ด์ ๊ฑฐ๊พธ๋ก ์ถ๋ ฅ
// len -1 ์์ ์์ํด์ 1์ฉ ๊ฐ์
// i ๊ฐ์ด 0๋ณด๋ค ์์์ง๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ข
๋ฃ
printf("์ถ๋ ฅ : \n");
for (i = len - 1; i >= 0; --i)
{
printf("%c", str[i]); // ๋ฌธ์ ๋จ์๋ก ์ถ๋ ฅ
cn++;
}
// ์ค๋ฐ๊ฟ
printf("\n");
printf("๋ฌธ์์ด์ ํฌ๊ธฐ: %d", cn);
return 0;
}
// <10 - 7>
#include <stdio.h>
int main(void)
{
char str[50] = "Multi Campus.";
char* ptr;
printf("before : %s\n", str);
for (ptr = str; *ptr; ++ptr)
{
if ('a' <= *ptr && *ptr <= 'z')
*ptr -= 32;
else if ('A' <= *ptr && *ptr <= 'Z')
*ptr += 32;
}
printf("after : %s\n", str);
return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
char names[5][20] = { "kim","lee","han","park","uk" };//๋ฌธ์๋ฐฐ์ด์ ์ธ
char tmp[100] = "";
int i;
for (i = 0; i < 5; i++)
{
strcat(tmp, names[i]); //tmp๋ค์ names[i]๋ถ์ด๊ธฐ
strcat(tmp, ","); //tmp๋ค์ ,๋ถ์ด๊ธฐ
}
printf("tmp : %s \n", tmp); //๋ฌธ์ ์ถ๋ ฅ
return 0;
}
๐ฝ
// Level1_2.c
#include<stdio.h>
int main()
{
int score[4][5] = { {78, 90,34, 46,80},{98, 74,84, 76,72},{76, 48,34, 72,89},{61, 91,67, 88,83} }; //๋ฐฐ์ด ์ด๊ธฐํ, 4์นธ์์ 5๊ฐ์ฉ ์ ์ฅ(4ํ 5์ด)
int i, j, sum = 0, row, col; //๋ณ์ ์ ์ธ ๋ฐ ์ด๊ธฐํ
row = sizeof(score) / sizeof(score[0]);//ํ ๊ฐ์ ๊ตฌํ๊ธฐ sizeof(score) / sizeof(score[0])ํฌ๊ธฐ
// 80(4ํx5์ดx4byte)/20(5์ดx4byte) = 4
col = sizeof(score[0]) / sizeof(score[0][0]);//์ด ๊ฐ์ ๊ตฌํ๊ธฐ sizeof(score[0]) / sizeof(score[0][0])ํฌ๊ธฐ
// 20(5์ดx4byte)/4(1x4byte) = 5
for (i = 0; i < row; i++)//0๋ถํฐ row๊น์ง 1์ฉ ์ฆ๊ฐ
{
for (j = 0; j < col; j++) //0๋ถํฐ col๊น์ง 1์ฉ ์ฆ๊ฐ
{
//๋ฐ์ดํฐ ์ถ๋ ฅ๊ณผ ๋์
printf("%d, ", score[i][j]);
sum += score[i][j]; //sum=sum+score[i][j]//sum์๋ค๊ฐ ๊ฐ ์์๋ฅผ ํ๋์ฉ ๋์ ํฉ์ ํด์ค
}
//ํ๊ท ์ ์ ๊ณ์ฐ ๋ฐ ์ถ๋ ฅ
printf("=>%.2f\n", (double)sum / col); //์์์ 2์งธ์๋ฆฌ๊น์ง ์ถ๋ ฅ//sum / col์ floatํ ๋ณํ
sum = 0;//0์ผ๋ก ์ด๊ธฐํ
}
return 0;
}
๐ฝ
#include<stdio.h>
#include<string.h>
int main()
{
char names[10][20]; //2์ฐจ์ ๋ฐฐ์ด ์ ์ธ
int i, Cn; //intํ i, Cn ๋ณ์ ์ ์ธ
for (i = 0; i < 10; i++)//0์์ 9๊น์ง 1์ฉ ์ฆ๊ฐ
{
printf("%d, ์ฑ๋ช
? (์
๋ ฅ์ข
๋ฃ:end) ", i + 1);//์์์ i๋ 0์ด๊ณ ์ฌ๊ธฐ์ 1์ ๋ํด์ 1์ด ์ถ๋ ฅ๋จ
scanf("%s", names[i]);//์
๋ ฅ
if (!strcmp(names[i], "end"))//์ข
๋ฃ์กฐ๊ฑด //strcmp๋ฅผ ํ์ฉํด์ end์ ๊ฐ๋ค๋ฉด ์ข
๋ฃ
break;
}
Cn = i;//์
๋ ฅ๋ ์ธ์์ ์ ์ฅ
printf("\n์
๋ ฅ๋ ์ฑ๋ช
=> \n");
for (i = 0; i < Cn; i++)//์ถ๋ ฅํ ๋ฐ๋ณต๋ฌธ
printf("%-10s,", names[i]);//%-nd๊ผด int ๊ฐ์ n์นธ ๋งํผ ๊ณต๊ฐ์ ๋ฐฐ์ ํ๊ณ ์ผ์ชฝ ์ ๋ ฌ, -๋นผ๋ฉด ์ค๋ฅธ์ชฝ ์ ๋ ฌ
printf("\n");
return 0;
}
๐ฝ
#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;
}
๐ฝ
#include<stdio.h>
#define STUDENT 4
#define SUBJECT 5
void heading();
int main()
{
char names[STUDENT + 1][20] = { "ํ๊ธธ๋","์ฑ์ถํฅ","์ง๋ฌ๋","๊ฐ๋๋ฆฌ","ํ์ก์ด" };//์ด๋ฆ ๋ฐฐ์ด๊ณผ ์ ์ธ์ ๋์์ ํจ
int score[STUDENT][SUBJECT + 2] = { {78, 90,34, 46,80},
{98, 74,84, 76,72},
{76, 48,34, 72,89},
{61, 91,67, 88,83} };//2์ฐจ์ ์ ์๋ฐฐ์ด ์ ์ธ
int i, j, sum = 0, row, col;//๋ณ์์ ์ธ
row = STUDENT;//ํ์์ ํ์ ์ ์ฅ
col = SUBJECT + 2;//๊ณผ๋ชฉ+2๋ฅผ ์ด์ ์ ์ฅ
for (i = 0; i < row; i++)//0๋ถํฐ 3๊น์ง 1์ฉ ์ฆ๊ฐ
{
for (j = 0; j < col - 2; j++)//0๋ถํฐ ์ด-2๊น์ง
{
score[i][SUBJECT] += score[i][j]; //๊ณผ๋ชฉ์ ์๋ ๊ณผ๋ชฉ์ ์ +์ ์
}
score[i][SUBJECT + 1] = score[i][SUBJECT] / SUBJECT;
}
heading();
for (i = 0; i < row; i++)
{
printf("%5s, ", names[i]);
for (j = 0; j < col; j++)
{
printf("%3d, ", score[i][j]);
}
printf("\n");
}
return 0;
}
void heading()
{
printf("========================================\n");
printf("์ฑ๋ช
๊ตญ์ด ์์ด ์ํ ๊ณผํ ์ฌํ ์ด์ ํ๊ท \n");
printf("========================================\n");
}
๐ฝ
#include<stdio.h>
int main()
{
int mat1[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; //๋ฐฐ์ด์ ์ธ
int mat2[4][3] = { 13,14,15,16,17,18,19,20,21,22,23,24 };
int matrix[3][3] = { 0 };
int i, j, sum1 = 0, sum2 = 0, sum3 = 0;
for (i = 0; i < 3; i++) //0๋ถํฐ 2๊น์ง
{
for (j = 0; j < 4; j++) //0๋ถํฐ 3๊น์ง i๊ฐ 0์ผ๋ j๋ 0~3๊น์ง i๊ฐ 1์ผ๋ j๋ 0~3๊น์ง
{
//ํ๋ ฌ ๊ณ์ฐ
sum1 += mat1[i][j] * mat2[j][0]; //sum1=sum1(mat1[i][j] * mat2[j][0])
sum2 += mat1[i][j] * mat2[j][1]; //sum2=sum1(mat1[i][j] * mat2[j][1])
sum3 += mat1[i][j] * mat2[j][2]; //sum3=sum1(mat1[i][j] * mat2[j][2])
}
//matrix ๋ฐฐ์ด์ ํฉ ๋์
matrix[i][0] = sum1; //sum1์ matrix[i][0]์ ์ ์ฅ
matrix[i][1] = sum2; //sum2์ matrix[i][1]์ ์ ์ฅ
matrix[i][2] = sum3; //sum3์ matrix[i][2]์ ์ ์ฅ
sum1 = sum2 = sum3 = 0;
printf("sum : %d, %d, %d \n", sum1, sum2, sum3);
sum1 = 0, sum2 = 0, sum3 = 0;
}
printf("3*4 mat1 ํ๋ ฌ \n");
for (i = 0; i < 3; i++) //i๋ 0~2๊น์ง
{
for (j = 0; j < 4; j++) //j๋ 0์์ 3๊น์ง //i๊ฐ 0์ผ๋ j๋ 0~3, i๊ฐ 1์ผ๋ j๋ 0~3...
{
printf("%3d, ", mat1[i][j]); //์ ์๋ฅผ 3์นธ์ ๋ง๊ฒ ์ถ๋ ฅ
}
printf("\n"); //์ถ๋ ฅ //4ํ3์ด์ด ์์ฑ๋จ 0๋ถํฐ 12๊น์ง
}
printf("\n4*3 mat2 ํ๋ ฌ \n");
for (i = 0; i < 4; i++) //i๋ 0~3๊น์ง
{
for (j = 0; j < 3; j++) //j๋ 0~2๊น์ง
{
printf("%3d, ", mat2[i][j]); //์ ์๋ฅผ 3์นธ์ ๋ง๊ฒ ์ถ๋ ฅ
}
printf("\n"); //ํ๋ฉด 3ํ 4์ด์ด ์์ฑ๋จ 13๋ถํฐ 24๊น์ง
}
printf("\nmat1*mat2์ ๊ณฑํ์ฌ 3*3์ ๊ตฌํ matrix ํ๋ ฌ \n"); //ํ๋ ฌ๊ณฑ์
for (i = 0; i < 3; i++) //0~2๊น์ง
{
for (j = 0; j < 3; j++)//0์์ 2๊น์ง
{
printf("%3d, ", matrix[i][j]);
}
printf("\n"); //1ํ1์ด์ 13+32+57+88ํ๋ฉด 190 1ํ2์ด์ 14+34+60+92ํ๋ฉด 200์ด๋ฐ์์ผ๋ก 3*3ํ๋ ฌ ์์ฑ
}
return 0;
}
๐ฝ
//์
๋ ฅ๋ ๋ ์ง์ ์์ผ ๊ตฌํ๊ธฐ
#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;
//๋
,์ ์ ๊น์ง์ ํฉ๊ณผ ํ์ฌ๋ฌ์ ์ผ์ ๋ํ์ฌ ๋ฐํ
๐ฝ
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, index, num;
int tmp[10]={0}; //์
๋ ฅํ ์์ ํ์๋ฅผ ์ ์ฅํ ๋ฐฐ์ด
for(i=0; i<10; i++)
{
do{
printf("%d, ๊ฐ ์
๋ ฅ ? (0~ 9) ", i+1);
scanf("%d", &num); // ์ ์ 0~9๋ฅผ ์
๋ ฅ
}while(num<0 || num>9);
++tmp[num];
}
index=0;
for(i=0; i<10; i++)
{
if(tmp[index]< tmp[i])
index=i;
}
printf("\n๊ฐ์ฅ ๋ง์ด ์
๋ ฅํ ์ : %d, ํ์ :%d \n",
index, tmp[index]);
return 0;
}
#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");
}
}
#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 ;
}
// <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;
}
// 10์ฅ ์ํฌ๋ถ 3-1 ํ์ด
#include <stdio.h>
int main()
{
char str[50] = "Multi Campus.", tmp[50]; // ๋ฌธ์์ด ๋ฐฐ์ด ์์ฑ
char *from, *to; // str ๋ฐฐ์ด์ tmp๋ก ๋ณต์ฌํ๊ธฐ ์ํ ํฌ์ธํฐ ์์ฑ
from = str; // ํฌ์ธํฐ์ ๋ฌธ์์ด ์ฐ๊ฒฐ (๊ฐ ํฌ์ธํฐ๋ค์ ๋ฐฐ์ด์ ์ฐ๊ฒฐ) // str ์ฃผ์ ์ ์ฅ
to = tmp; // tmp ์ฃผ์ ์ ์ฅ
while (*from != '\0')//๋ฐ๋ณตํ ์กฐ๊ฑด // *from๊ณผ '\0' ๊ฐ ๋ค๋ฅด๋ฉด ์ฐธ, ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฑฐ์ง, ์ฆ null ๊น์ง ๊ฐ๋ฉด while๋ฌธ ์ข
๋ฃ
{
*to++ = *from++;
}
*to = '\0'; // null ๋ฌธ์ ์ถ๊ฐ ('\0'์ ์ฐ๋ ๊ธฐ๊ฐ null์ ์๋ฏธ)
printf("str: %s, tmp: %s \n", str, tmp);
return 0;
}
// 10์ฅ ์ํฌ๋ถ 2-1 ํ์ด
#include <stdio.h>
int main()
{
char msg[100] = "Hello World !!!";
char* ptr = msg;
printf("msg : %s \n", msg);
while (*ptr)
{
printf("%c, ", *ptr);
ptr++;
}
printf("\n");
return 0;
}
int, float, double ๊ฐ์ ์๋ฃํ์ ์๋ฃํ ํฌ๊ธฐ๊ฐ ์ผ์ ํ๊ธฐ ๋๋ฌธ์ ์๋ฃํ์ ์ ๋ ฅ๋ฐ๋๋ฐ ๋ฌธ์ ๊ฐ ์์ง๋ง,
char, char[]ํํ์ธ ๋ฌธ์, ๋ฌธ์์ด์์๋ ์ ๋ ฅ๋ฐ์ ํฌ๊ธฐ๋ฅผ ๋ฐ๋์ ๋ค์ ์ ๋ ฅํด์ฃผ์ด์ผ ํฉ๋๋ค.
scanf_s("%s", ๋ฌธ์์ด๋ณ์๋ช , sizeof(๋ฌธ์์ด๋ณ์๋ช ));
์ ์จ์ฃผ์๋ฉด ์ ๋ ฅ๋ฐ์์ ์์ต๋๋ค.
// 10์ฅ ์ฐ์ต๋ฌธ์ 10-5
#include <stdio.h>
#define LENGTH 12 // ์ต๋ 12์๊น์ง๋ง ์
๋ ฅ ๋ฐ๋๋ค
int main()
{
int i, len = 0;
int cn = 0;
char str[LENGTH];
printf("input string :");
// %[^\n]s => scanf_s ํจ์์์ ๊ณต๋ฐฑ์ ํฌํจํด ์
๋ ฅ ๋ฐ์ (๋์ด์ฐ๊ธฐ๋ฅผ ์์ฐ)
// %s๋ผ๊ณ ๋ง ์ ์ผ๋ฉด ๊ณต๋ฐฑ์ ๊ตฌ๋ถ์๋ก ๋ด์ ์
๋ ฅ์ ๊ณต๋ฐฑ๊น์ง๋ง ๋ฐ์ (C๋ง ์ถ๋ ฅ)
// ์๋์ ๊ฐ์ด 'ํ์ ์ง์ ์'๋ฅผ ์ฌ์ฉํด์ผ ๊ณต๋ฐฑ ํฌํจ ์
๋ ฅ ๋ฐ์
scanf_s("%[^\n]s", str, LENGTH - 1);
// NULL ๋ฌธ์๋ฅผ ๋ง๋ ๋๊น์ง ์ด๋ , ์ฌ์ฉ์๊ฐ ์
๋ ฅํ str ๋ฐฐ์ด์ ์
๋ ฅ๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ค.
while (str[len] != 0)
len++;
// str ๋ฐฐ์ด์ ์ ์ฅ๋ ๋ฌธ์์ด์ ๊ฑฐ๊พธ๋ก ์ถ๋ ฅ
// len -1 ์์ ์์ํด์ 1์ฉ ๊ฐ์
// i ๊ฐ์ด 0๋ณด๋ค ์์์ง๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ข
๋ฃ
printf("์ถ๋ ฅ : \n");
for (i = len - 1; i >= 0; --i)
{
printf("%c", str[i]); // ๋ฌธ์ ๋จ์๋ก ์ถ๋ ฅ
cn++;
}
// ์ค๋ฐ๊ฟ
printf("\n");
printf("๋ฌธ์์ด์ ํฌ๊ธฐ: %d", cn);
return 0;
}
// <10 - 7>
#include <stdio.h>
int main(void)
{
char str[50] = "Multi Campus.";
char* ptr;
printf("before : %s\n", str);
for (ptr = str; *ptr; ++ptr)
{
if ('a' <= *ptr && *ptr <= 'z')
*ptr -= 32;
else if ('A' <= *ptr && *ptr <= 'Z')
*ptr += 32;
}
printf("after : %s\n", str);
return 0;
}
10์ฅ workbook 2-1
// 10์ฅ ์ํฌ๋ถ 2-1 ํ์ด
#include <stdio.h>
int main()
{
char msg[100] = "Hello World !!!";
char* ptr = msg;
printf("msg : %s \n", msg);
while (*ptr)
{
printf("%c, ", *ptr);
ptr++;
}
printf("\n");
return 0;
}