🀳 [C]_23.03.16

‍전희주·2023λ…„ 3μ›” 16일
0

λ‹€μš°_C μž…λ¬Έ κ°•μ˜

λͺ©λ‘ 보기
6/7

9μž₯

  • 닀차원 λ°°μ—΄ μ „κΉŒμ§€ 쀑간고사
  • 1차원 λ¬Έμžλ°°μ—΄μ€ ν•˜λ‚˜μ˜ λ¬Έμžμ—΄μ„ λ‹΄λŠ”λ‹€.

Array4.c

// Array4.c

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

int main()
{
	char c1 = 'A', i; 
	char str[10] = "kingdom"; // 곡백은 nullκ³Ό 닀름
	// 1차원 λ¬Έμžλ°°μ—΄μ€ ν•˜λ‚˜μ˜ λ¬Έμžμ—΄μ„ λ‹΄λŠ”λ‹€. 

	printf("%d, %d, %d \n", sizeof(c1), sizeof(str[0]), sizeof(str)); 
	printf("%c, %c, %p, %p \n\n", c1, str[0], &str[0], str); // str=&str[0]: μ²¨μžκ°€ μ—†λŠ” λ°°μ—΄λ³€μˆ˜λŠ” λ°°μ—΄μ˜ 첫 번째 값을 의미  

	
	// scanf("%s", str); // campus [enter]  // &λ₯Ό μ•ˆμ¨λ„ λœλ‹€. str μžμ²΄κ°€ μ£Όμ†Œ
	// gets_s(str); // λ¬Έμžμ—΄μ„ 받아와 κ΄„ν˜Έμ•ˆμ˜ μ£Όμ†Œμ— 지정해쀀닀 // campus [enter]μ—μ„œ enter 값을 null byte(\0)둜 λ³€ν™˜ν•΄ μ‹œμž‘ μ£Όμ†Œμ— λŒ€μž…ν•¨ 
	char tmp[100]; 
	do{
		printf("input string ?");
		gets_s(tmp);
		} while (strlen(tmp)>= sizeof(str)); // tmp에 μ €μž₯ν•œ λ¬Έμžμ—΄ 크기가 μ €μž₯ν•˜λ €λŠ” λ°°μ—΄ 크기(str)보닀 ν¬κ±°λ‚˜ κ°™μœΌλ©΄ overflow λ°œμƒ -> κ°’ λ‹€μ‹œ λ°›μŒ
	strcpy(str, tmp); 

	printf("%p, %s \n", str, str); // str은 μ£Όμ†Œ,  %sλŠ” null κΉŒμ§€ λ¬Έμžμ—΄ 좜λ ₯ 

	printf("\n"); 
	for (i = 0; i < 10; i++)
		printf("%p: %c, %d \n", &str[i], str[i], str[i]); // %p:μ£Όμ†Œ 지정,  %s: 할당받은 μ£Όμ†Œλ‘œλΆ€ν„° null byte λ§Œλ‚  λ•Œ κΉŒμ§€ 문자λ₯Ό λ°˜ν™˜~ 

	return 0; 
}

string_function.c

//string_function.c

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

int main()
{
	int i, len;
	char s1[20] = "king", s2[20] = "";
	printf("s1:%s, s2: %s \n", s1, s2); 
	printf("size: %d, len: %d \n", sizeof(s1), strlen(s1)); 

	// s2 = s1; -> λ°°μ—΄λͺ…μœΌλ‘œ ν•œ λ²ˆμ— 배열을 볡사할 수 μ—†κ³ , μ›μ†Œ λŒ€ μ›μ†Œλ‘œ 볡사할 수 μžˆλ‹€
	
	// len = strlen(s1); // ν•¨μˆ˜λ₯Ό ν•œ 번만 ν˜ΈμΆœν•΄μ„œ ν™œμš©ν•˜κΈ° cf.  strlen(s1)을 for λ¬Έ λ‚΄ 쑰건으둜 기재 
	//for (int i = 0; s1[i]; i++) // ν•¨μˆ˜ 호좜, λ©”λͺ¨λ¦¬ ν• λ‹Ή ν•„μš” μ—†λŠ” λ°©λ²•μž„. 
	// s2[i] = s1[i];
	
	// λ¬Έμžμ—΄ 처리 ν•¨μˆ˜λŠ” λ¬Έμžμ—΄ νƒ€μž…λ§Œ μ‚¬μš© κ°€λŠ₯ 
	strcpy(s2, s1); //strcpy(to, from); / λ¬Έμžμ—΄λ§Œ λŒ€μž… κ°€λŠ₯(cf. μ›μ†Œ)
	printf("s1:%s, s2: %s \n", s1, s2);

	do {
		printf("input s1 ? ");
		gets(s1); //dom[enter] / s1 λ°°μ—΄μ˜ 문자 'dom'을 s2 λ°°μ—΄ λ‚΄ μž…λ ₯ν•˜κ³ μž 함 => strcat(to, from); : from의 λ¬Έμžμ—΄μ΄ to에 μΆ”κ°€ 
		          // aaaaaaaaaaaaaaaaa(18)  
	} while (strlen(s1)+strlen(s2)>=sizeof(s2));  // ('s1 배열에 μž…λ ₯된 λ¬Έμžμ—΄ λ©”λͺ¨λ¦¬ + s2 λ©”λͺ¨λ¦¬' κΈ°μ‘΄ s2 λ©”λͺ¨λ¦¬λ³΄λ‹€ ν¬κ±°λ‚˜ κ°™μœΌλ©΄(null κ³ λ €) μž…λ ₯κ°’ λ‹€μ‹œ λ°›μŒ)   

	strcat(s2, s1); //strcat은 overflow λ¬Έμ œκ°€ λ°œμƒν•  μš°λ €κ°€ 있음  
	printf("s1:%s, s2: %s \n", s1, s2);


	printf("%d \n", strcmp(s1, s2)); //-1 (s1: dom, s2: kingdom) 
	printf("%d \n", strcmp(s1, s2)); //-1 
	printf("%d \n", strcmp(s2, "kingdom")); //0
	printf("%d \n", strcmp("a", "Abcdefg")); //1
	printf("%d \n", strcmp("Apple", "Apple")); //0

	return 0; 

}


//if (s1 == s2) // μ£Όμ†ŒλΌλ¦¬ λΉ„κ΅ν•˜λŠ” 의미, 문자끼리 λΉ„κ΅ν•˜κΈ° μœ„ν•΄μ„œλŠ” ν•¨μˆ˜ μ‚¬μš© ν•„ (λ¬ΈμžλŠ” λ°°μ—΄ λ³€μˆ˜ λͺ…μœΌλ‘œ 비ꡐ ν•  수 μ—†κ³ , ν•¨μˆ˜λ₯Ό ν™œμš©ν•΄μ•Όν•¨) 
//else = > s1κ³Ό s2 λ°°μ—΄μ˜ 지정 μ£Όμ†Œκ°€ λ‹€λ₯΄λ―€λ‘œ else 절 μˆ˜ν–‰
//
//cf.strcmp  ν•¨μˆ˜ μ‚¬μš©μ„ ν†΅ν•œ 문자 비ꡐ(λ¬ΈμžλŠ” λ°°μ—΄ λ³€μˆ˜ λͺ…μœΌλ‘œ 비ꡐ ν•  수 μ—†κ³ , ν•¨μˆ˜λ₯Ό ν™œμš©ν•΄μ•Όν•¨)
//strcmp(s1, s2)
//return value{ μ–‘μˆ˜: 두 μš”μ†Œ 쀑 μ•žμ΄ 큼 ,
//					  0 : 두 μš”μ†Œκ°€ κ°™μŒ,
//					  음수 : 두 μš”μ†Œ 쀑 λ’€μ˜ 값이 큼 }
//
//	ex) λ©”λͺ¨λ¦¬ 크기 λΉ„κ΅ν•˜κΈ°  1 > 2
//	(λ¬Έμžμ—΄ 쀑 첫 번째 문자의 μ•„μŠ€ν‚€μ½”λ“œλ‘œ λ©”λͺ¨λ¦¬ 크기 ν• λ‹Ή, a 65) = > μ•„μŠ€ν‚€ 값을 κΈ°μ€€μœΌλ‘œ 1λ°”μ΄νŠΈμ”© 비ꡐ해 λ‚˜κ°„λ‹€..
//	a\0
//	abcdefg\0

Array5.c

//Array5.c

#include <stdio.h>

/*
*ν‚€λ³΄λ“œλ‘œλΆ€ν„° μ„±λͺ…, μ›”κΈ‰, νšŒμ‚¬μ£Όμ†Œλ₯Ό μž…λ ₯λ°›μ•„ 좜λ ₯ν•˜κ³ μž ν•œλ‹€. 
* μ΄λ•Œ μž…λ ₯λ˜λŠ” κ±΄μˆ˜λŠ” μ•Œμ§€ λͺ»ν•˜λ©°, μ„±λͺ…이 "end"이면 μž…λ ₯을 μ’…λ£Œν•˜κ³  
* μ›”κΈ‰ 평균을 좜λ ₯ ν›„ ν”„λ‘œκ·Έλž¨μ€ μ’…λ£Œν•œλ‹€. 
*/


// name λ°°μ—΄ μ„ μ–Έ, sal  λ°°μ—΄ μ„ μ–Έ, comAddr λ°°μ—΄ μ„ μ–Έ => κ°’ μž…λ ₯ 

int main()
{
	char name[20], comAddr[50];
	int salary;  
	int Cn = 0, sum = 0;

	while (1)
	{
		printf("μ„±λͺ… ?(μž…λ ₯ μ’…λ£Œ:end)  ");
		gets(name); // kim, lee, ... end 

		if (strcmp(name, "end") == 0)
			break;

			printf("μ›”κΈ‰? ");
			scanf("%d%*c", &salary); //1000, 2000 

			printf("νšŒμ‚¬μ£Όμ†Œ ?");
			gets(comAddr); //seoul,,,

			printf("\nμ„±λͺ…: %s, μ›”κΈ‰: %d, νšŒμ‚¬μ£Όμ†Œ: %s \n", name, salary, comAddr);

			sum += salary;
		Cn++;
	
	
	}
	printf("===============\n"); 
	printf("월급평균: %.2f \n", (float)sum / Cn);

	return 0; 
}






Array_EX2.c

// Array_EX2.c
#include <stdio.h>

//ν‚€λ³΄λ“œλ‘œλΆ€ν„° 0μ—μ„œ 9κΉŒμ§€μ˜ μ •μˆ˜ μ€‘μ—μ„œ 10개의 수λ₯Ό μž…λ ₯ λ°›μ•„,
//κ°€μž₯ 많이 μž…λ ₯ 받은 μˆ˜λŠ” 무엇이고, λͺ‡ λ²ˆμΈμ§€ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•œλ‹€.

//μ‹€ν–‰κ²°κ³Ό
//1. κ°’ μž…λ ₯ ? (0~9) 1
//2. κ°’ μž…λ ₯ ? (0~9) 2
//3. κ°’ μž…λ ₯ ? (0~9) 3
//4. κ°’ μž…λ ₯ ? (0~9) 4
//5. κ°’ μž…λ ₯ ? (0~9) 4
//6. κ°’ μž…λ ₯ ? (0~9) 5
//7. κ°’ μž…λ ₯ ? (0~9) 4
//8. κ°’ μž…λ ₯ ? (0~9) 7
//9. κ°’ μž…λ ₯ ? (0~9) 7
//10. κ°’ μž…λ ₯ ? (0~9) 6
//κ°€μž₯ 많이 μž…λ ₯ν•œ 수 : 4, 횟수 : 3

int main()
{
	int tmp[10] = { 0 }, i, num, index;
	int x[10], cn = 0, sw = 1;
	for (i = 0; i < 10; i++)
	{
		do {
			printf("%d κ°’ μž…λ ₯ ? (0~9) ", i + 1);
			scanf("%d%*c", &num); // 3,
		} while (num < 0 || num>9);

		tmp[num]++; // 첨자(인덱슀) 값이 증가 
	}

	//큰 κ°’ 비ꡐ
	index = 0;
	for (i = 1; i < 10; i++)
	{
		if (tmp[index] < tmp[i])
			index = i; // μ΅œλŒ“κ°’μ„ μ§€μ •ν•˜λŠ” 인덱슀 i λ₯Ό index λ³€μˆ˜μ— λŒ€μž…
	}
	//같은 κ°’ λΉ„κ΅ν•˜μ—¬ x 배열에 첨자 μ €μž₯
	for (i = index; i < 10; i++)
	{
		if (tmp[index] == tmp[i]) //μ΅œλŒ“κ°’κ³Ό λ˜‘κ°™μ„λ•Œ
		{
			x[cn++] = i; //xλ°°μ—΄μ˜ μ΅œμ‹ μ£Όμ†Œμ— iλ₯Ό μ €μž₯ // cn μœ„μΉ˜μ˜ 첨자(인덱슀)에 값을 λŒ€μž…ν•˜κ³  cn이 증가 
			sw = 0; // 쀑볡이 μžˆλ‹€λŠ” μ‹ ν˜Έ
		}
	}
	// 좜λ ₯λ¬Έ
	if (sw) // sw = 1 (쀑볡이 μ—†λ‹€λŠ” μ‹ ν˜Έ)
		printf("\nκ°€μž₯ 많이 μž…λ ₯ν•œ 수 : %d, 횟수 :%d \n",
			index, x[index]);
	else // sw = 0 (λ§Œμ•½μ— 쀑볡이 μžˆλ‹€λŠ” μ‹ ν˜Έλ₯Ό λ°›λŠ”λ‹€λ©΄)
	{
		for (i = 0; i < cn; i++)
			printf("\nκ°€μž₯ 많이 μž…λ ₯ν•œ 수 : %d, ", x[i]); // x배열에 μ €μž₯된 값을 좜λ ₯
		printf("\n횟수 : %d, ", tmp[index]); // νšŸμˆ˜λŠ” λͺ¨λ‘ κ°™κΈ°λ•Œλ¬Έμ— ν•œλ²ˆλ§Œ 좜λ ₯
	}
	return 0;
}
// Array_EX2.c
#include <stdio.h>

//ν‚€λ³΄λ“œλ‘œλΆ€ν„° 0μ—μ„œ 9κΉŒμ§€μ˜ μ •μˆ˜ μ€‘μ—μ„œ 10개의 수λ₯Ό μž…λ ₯ λ°›μ•„,
//κ°€μž₯ 많이 μž…λ ₯ 받은 μˆ˜λŠ” 무엇이고, λͺ‡ λ²ˆμΈμ§€ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•œλ‹€.

//μ‹€ν–‰κ²°κ³Ό
//1. κ°’ μž…λ ₯ ? (0~9) 1
//2. κ°’ μž…λ ₯ ? (0~9) 2
//3. κ°’ μž…λ ₯ ? (0~9) 3
//4. κ°’ μž…λ ₯ ? (0~9) 4
//5. κ°’ μž…λ ₯ ? (0~9) 4
//6. κ°’ μž…λ ₯ ? (0~9) 5
//7. κ°’ μž…λ ₯ ? (0~9) 4
//8. κ°’ μž…λ ₯ ? (0~9) 7
//9. κ°’ μž…λ ₯ ? (0~9) 7
//10. κ°’ μž…λ ₯ ? (0~9) 6
//κ°€μž₯ 많이 μž…λ ₯ν•œ 수 : 4, 횟수 : 3

int main()
{
	int tmp[10] = { 0 }, i, num, index;
	int x[10], cn = 0, sw = 1;
	for (i = 0; i < 10; i++)
	{
		do {
			printf("%d κ°’ μž…λ ₯ ? (0~9) ", i + 1);
			scanf("%d%*c", &num); // 3,
		} while (num < 0 || num>9);

		tmp[num]++; // 첨자(인덱슀) 값이 증가 
	}

	//큰 κ°’ 비ꡐ
	index = 0;
	for (i = 1; i < 10; i++)
	{
		if (tmp[index] < tmp[i])
			index = i; // μ΅œλŒ“κ°’μ„ μ§€μ •ν•˜λŠ” 인덱슀 i λ₯Ό index λ³€μˆ˜μ— λŒ€μž…
	}
	//같은 κ°’ λΉ„κ΅ν•˜μ—¬ x 배열에 첨자 μ €μž₯
	for (i = index; i < 10; i++)
	{
		if (tmp[index] == tmp[i]) //μ΅œλŒ“κ°’κ³Ό λ˜‘κ°™μ„λ•Œ
		{
			x[cn++] = i; //xλ°°μ—΄μ˜ μ΅œμ‹ μ£Όμ†Œμ— iλ₯Ό μ €μž₯ // cn μœ„μΉ˜μ˜ 첨자(인덱슀)에 값을 λŒ€μž…ν•˜κ³  cn이 증가 
			sw = 0; // 쀑볡이 μžˆλ‹€λŠ” μ‹ ν˜Έ
		}
	}
	// 좜λ ₯λ¬Έ
	if (sw) // sw = 1 (쀑볡이 μ—†λ‹€λŠ” μ‹ ν˜Έ)
		printf("\nκ°€μž₯ 많이 μž…λ ₯ν•œ 수 : %d, 횟수 :%d \n",
			index, x[index]);
	else // sw = 0 (λ§Œμ•½μ— 쀑볡이 μžˆλ‹€λŠ” μ‹ ν˜Έλ₯Ό λ°›λŠ”λ‹€λ©΄)
	{
		for (i = 0; i < cn; i++)
			printf("\nκ°€μž₯ 많이 μž…λ ₯ν•œ 수 : %d, ", x[i]); // x배열에 μ €μž₯된 값을 좜λ ₯
		printf("\n횟수 : %d, ", tmp[index]); // νšŸμˆ˜λŠ” λͺ¨λ‘ κ°™κΈ°λ•Œλ¬Έμ— ν•œλ²ˆλ§Œ 좜λ ₯
	}
	return 0;
}



// 
#include <stdio.h>

int main()
{
	int tmp[10] = { 0 }, i, num;
	int x[10] = { 0 }, cn = 0, max = 0;
	for (i = 0; i < 10; i++)
	{
		do {
			printf("%d κ°’ μž…λ ₯ ? (0~9) ", i + 1);
			scanf("%d%*c", &num); // 3,
		} while (num < 0 || num>9);
		tmp[num]++;
	}

	//큰 κ°’ 비ꡐ
	for (i = 1; i < 10; i++) // 1 2 2 3 
	{
		if (tmp[max] < tmp[i]) // ν˜„μž¬κ°’λ³΄λ‹€ 이후값이 크면
		{
			max = i; // λ§₯슀의 인덱슀λ₯Ό i둜 μ„€μ • 
			int x[10] = { 0 }; // 1 2 2 3 처럼 μƒˆλ‘œμš΄ μ΅œμ‹ κ°’μ΄ λ‚˜νƒ€λ‚¬μ„λ•Œ 였λ₯˜μ—†μ• κΈ°μœ„ν•΄ 전체 μ΄ˆκΈ°ν™” & μ–΄μ§œν”Ό 전체 μ΅œλŒ“κ°’μ„ λ„μΆœν•œ μ΄ν›„μ—λŠ” μ‹€ν–‰μ•ˆλ¨
			cn = 0;
			x[cn] = i;
		}
		if (tmp[max] == tmp[i])//μ΅œλŒ“κ°’κ³Ό λ˜‘κ°™μ„λ•Œ
		{
			x[cn] = i; //xλ°°μ—΄μ˜ μ΅œμ‹ μ£Όμ†Œμ— iλ₯Ό μ €μž₯
			cn++;
		}
	}

	// 좜λ ₯λ¬Έ
	for (i = 0; i < cn; i++)
		printf("\nκ°€μž₯ 많이 μž…λ ₯ν•œ 수 : %d, ", x[i]); // x배열에 μ €μž₯된 값을 좜λ ₯
	printf("\n횟수 : %d, ", tmp[i]); // νšŸμˆ˜λŠ” λͺ¨λ‘ κ°™κΈ°λ•Œλ¬Έμ— ν•œλ²ˆλ§Œ 좜λ ₯

	return 0;
}

Array6.c

//Array6.c

#include <stdio.h>

// 닀차원 λ°°μ—΄(2차원 μ΄μƒμ˜ λ°°μ—΄) 
int main()
{
	     // ν–‰,μ—΄ +) 배열은 연속적인 μ£Όμ†Œλ₯Ό 보μž₯λ°›μŒ 
	//int num[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };   //12개 μž…λ ₯ 
	int num[3][4] = {1,2,3,4,5,6}; //μž…λ ₯된 6개 μ›μ†Œκ°’ μ™Έ 0을 λŒ€μž…   
	int i, j; 

	for (i = 0; i < 3; ++i)
	{
		for (j = 0; j < 4; ++j)
		{
			// printf("%p:%3d \n, ", &num[i][j], num[i][j]); 
			printf("num[%d][%d] = %d, %p:%3d\n", i, j, num[i][j], &num[i][j], num[i][j]);
			//printf("%d, %d \n", sizeof(num[0][0]), sizeof(num)); // sizeof(num[0][0]): 0ν–‰ 0μ—΄μ˜ 크기 4byte 
			//printf("%p, %d, %p \n", &num[0][0], num[0][0], num);
		}
	}
	return 0; 
}

// 2차원 배열에 μ›μ†Œκ°’ λŒ€μž…: num[0][1] = 100; (행을 λ°˜λ“œμ‹œ μ •ν•΄μ€˜μ•Όν•¨ cf. num[1]=100;(x)  ) 


Array7.c

//Array7.c

#include <stdio.h>

int main()
{
	int score[5][4] = {
							{90, 57, 74, 80},
							{60, 57, 84, 80},
							{70, 57, 68, 80},
							{80, 57, 70, 80},
							{57, 57, 54, 80},
	}; 
	int i, j; 
	int sum = 0, avg; 
	
	// ν•©, 평균을 κ΅¬ν•˜κΈ° 
	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("%3d, ", score[i][j]); // 90 57 ...
			sum += score[i][j]; // μ›μ†Œ λˆ„μ ν•© 
		}
		avg = sum / 4;
		// printf(" => %4d, %4d\n", sum, avg); 
		sum = 0;

	}

	//데이터 좜λ ₯ 
	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < 4; j++)
			printf("%3d, ", score[i][j]);
			printf("\n"); 
		
	} 

	return 0; 
}
#include <stdio.h>

int main()
{
	int score[5][7] = {
		{90,57,34,75},
		{42,53,36,74},
		{63,45,86,35},
		{12,34,34,75},
		{42,53,75,79}
	};
	int i, j;
	int rank = 1;

	// sum, avg μž…λ ₯
	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < 4; j++)
		{
			score[i][4] += score[i][j];
		}
		score[i][5] = score[i][4] / 4;
	}

	// rank μž…λ ₯
	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < 5; j++)
		{
			if (score[i][5] < score[j][5])
				rank++;
		}
		score[i][6] = rank;
		rank = 1;
	}

	// κ²°κ³Ό 좜λ ₯
	heading(); 
	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < 7; j++)
		{
			printf("%3d,  ", score[i][j]);
		}
		// printf("sum : %d, avg : %d, rank : %d", score[i][4], score[i][5], score[i][6]);
		printf("\n");
	}

	return 0;
}

heading()
{
	printf("=======================================\n");
	printf("κ΅­μ–΄ μ˜μ–΄ μˆ˜ν•™ κ³Όν•™ 총점 평균 석차 \n"); 
	printf("=======================================\n");
}
profile
heejoojeon@daou.co.kr

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보