본문 바로가기
language/C

배열과 반복문

by abstract.jiin 2022. 9. 13.
  1. 배열과 반복문
    1. 배열 요소의 합 구하기 
    2. 배열에서 특정 범위의 데이터를 출력하고 개수 확인하기
    3. 배열에서 가장 큰 수 찾기
    4. 입력받은 숫자 만큼 배열 내 값 일괄 증가하기
    5. 배열 값을 거꾸로 나열한 새로운 배열 만들기 (2가지 방법)

 

1. 배열과 반복문


반복문을 이용한 배열의 전체 요소 접근 

 

	int ar8[3] ={10,20,30};
	int ar8cnt=sizeof(ar8)/sizeof(int);
	
	for(int i =0; i<ar8cnt; i++)
	printf("ar8[%d]:%d\n",i,ar8[i]);

/* 결과 */

ar8[0]:10
ar8[1]:20
ar8[2]:30


배열 요소의 합 구하기 


 1. ar 이름의 5칸 짜리 배열을 2,7,5,1,8 순으로 선언과 동시에 초기화   
 2. 5개 요소의 합을 구하여 출력 

 

int ar[5] ={2,7,5,1,8};
 		
int sum=0;
for(int a =0; a<5; a++)			
sum +=ar[a];
printf("sum:%d\n",&sum);
				
	// >> &sum 은 이상한 값이 나온다. 
	//배열이기 때문에 sum으로출력해야함  
	
puts("");
		
int arr[] ={2,7,5,1,8}, Sum=0;
int arrCnt = sizeof(arr) /sizeof(int);
			
for(int e =0; e<arrCnt; e++){
	Sum +=arr[e];
	printf("%d ", arr[e] );
		}	
puts("");
printf("ar 배열 내부 데이터들의 합:%d\n", Sum);

/* 결과 */

sum:6487404

2 7 5 1 8
ar 배열 내부 데이터들의 합:23

 

>>&sum 은 이상한 값(6487404)이 나온다. 
배열이기 때문에 &sum이 아니라 sum으로 출력해야함


배열에서 특정 범위의 데이터를 출력하고, 개수 확인하기 

 

ar10배열에서 3~8범위의 데이터 출력 + 데이터 개수 출력 

int ar10[] ={ 8,9,5,1,7,4,2 }; 
int ar10Cnt=sizeof(ar10)/sizeof(int), dataCnt=0;
 			
 			
for(int f=0; f<ar10Cnt;f++){
if(ar10[f] >= 3 && ar10[f] <= 8){
		printf("ar10[%d]: %d\n",f,ar10[f]);
		dataCnt++;
		 }
	 }
			
	printf("\n3~8 범위의 숫자 개수: %d개\n", dataCnt);

/* 결과 */

ar10[0]: 8
ar10[2]: 5
ar10[4]: 7
ar10[5]: 4

3~8 범위의 숫자 개수: 4개

 


배열에서 가장 큰 수 찾기

ar배열에서 가장 큰 수를 찾아서 출력

 

ar[0]이 가장 큰 수라고 가정하고, 
그 뒤 배열을 전부 비교해서 가장 큰수를 Max에 넣어 찾는다. 

 int ar[] = {3,7,2,11,9,5,10};
 int Max =ar[0];
 int cnt =sizeof(ar)/sizeof(int);
		 
			 
 printf("ar: ");
		 
 for(int i=0; i<cnt; i++)
 	printf("%d ",ar[i]);
	 puts("\n");
			 
	 //ar[0]이 가장 큰 수라고 가정하고, 
	 //그 뒤 배열을 전부 비교해서 가장 큰수를 Max에 넣어 찾는다. 
			 
 for(int i=0; i<cnt; i++){
 	if(Max <ar[i])
	Max =ar[i];			 	
 }	 
		 
 printf("가장 큰 수:%d\n",Max);

입력받은 숫자 만큼 배열 내 값 일괄 증가하기

 

숫자를 입력 받아 base 배열 내부의 값들을 숫자만큼 증가시켜서 
newAr 배열에 저장하여 출력하는 코드 작성

int base[] = {1,2,3,4,5};
int baseLen = sizeof(base) / sizeof(int);
			
			
int newAr[5], addVal;
printf("base : ");
for (int a = 0; a < baseLen; a++)
	printf("%d",base[a]);
	puts("");
			
printf("증가값 입력: "); scanf_s("%d",&addVal);
	
	printf("newAr : ");
	for(int a = 0; a < baseLen; a++) {
	newAr[a] =base[a] + addVal;
	printf("%d ",newAr[a]);
			}

배열 값을 거꾸로 나열한 새로운 배열 만들기

 

base 배열의 크기와 동일한 크기의 빈 배열을 선언하고 
새로운 배열에 base 배열 내부 데이터를 거꾸로 저장 후 출력

 

/* 내 답*/

	printf("newAr : ");
	for (int b= baseLen-1; b >= 0; b--){
	newAr[b]=base[b];			
	printf("%d ",base[b]);
}

 

/*선생님 답*/

int revAr[5], idx = baseLen-1;
		
	for (int c =0; c<baseLen; c++)
	revAr[idx - c]=base[c]; 
			
	printf("base\t: ");
	for (int c =0; c < baseLen; c++)
		printf("%d", base[c]);
	puts("");
	printf("revAr\t: ");
	for (int c =0; c<baseLen; c++)
	printf("%d ", revAr[c]);

'language > C' 카테고리의 다른 글

배열(array)  (0) 2022.09.13
_sleep(숫자) - 반복문 응용  (0) 2022.09.13
continue / break / 삼항연산자  (0) 2022.09.13
C언어 자판기 코드  (0) 2022.09.07
반복 제어문 while  (0) 2022.09.07