2.Swap함수 작성
#include <stdio.h>
void Swap(int *a, int *b);
int main()
{
int a=4;
int b=9;
printf("변경 전 : a = %d, b = %d\n",a,b);
Swap(&a,&b);
printf("변경 후 : a = %d, b = %d\n",a,b);
return 0;
}
void Swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
3.3,4,6,7,9,3,2를 입력으로 넣은 후 2,3,9,7,6,4,3순서로 출력하는 프로그램을 작성해보세요.(스택)
#include <stdio.h>
int main()
{
int arr[7];
int sp=0;
while(1)
{
if(sp==7)
{
break;
}
scanf("%d",&arr[sp++]);
}
while(1)
{
if(sp==0)
break;
printf("%d ",arr[--sp]);
}
return 0;
}
4.
BinarySearch가 무엇인지 찾아보고, 가능하면 한번 구현해보도록 합시다.(가능하면!)
이진 탐색.
- 정렬된 데이터 집합에서 사용할 수 있는 고속 탐색 알고리즘 입니다.
- 이진 탐색이라는 이름은 알고리즘의 핵심이 탐색 범위를 1/2씩 줄여나가는 방식에 있기 때문에 붙여진 것입니다.
수행 과정.
- 1. 데이터 집합의 중앙에 있는 요소를 고릅니다.
- 2. 중앙 요소의 값과 찾고자 하는 목표 값을 비교합니다.
- 3. 목표 값이 중앙 요소의 값보다 작다면 중앙을 기준으로 데이터 집합의 왼편에 대해 새 로 검색을 수행하고 크다면 오른편에 대해 이진 탐색을 새로이 수행합니다.
- 4. 탐색의 완료 될 때까지 1 ~ 3번 과정을 반복합니다.
#include <stdio.h>
int binary (int arr[], int low, int high, int key);
int main()
{
int arr[10]={1,3,13,15,16,17,22,26,32,50};
int key;
int search;
scanf("%d",&key);
search=binary(arr,0,9,key);
if(search==1)
printf("Find");
else
printf("Not Find");
return 0;
}
int binary(int arr[], int low, int high, int key)
{
int mid;
while(low<=high)
{
mid=(low+high)/2;
if(arr[mid]==key)
return 1;
else if(arr[mid]>key)
high=mid-1;
else
low=mid+1;
}
return 0;
}
5.아래와 같은 출력이 나오는 프로그램을 어떻게하면 짤 수 있는지 생각해서 써보도록 합시다. 그 방법이 확실하다고 생각되면 짜보아도 좋아요
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
3.문자열이 대칭인경우 Palindrome, 아닌경우 Not Palindrome을 출력하는 프로그램을 작성해봅시다.
level, racecar, deed는 palindrome, sadfds는 not Palindrome
#include <stdio.h>
#include <string.h> // strlen() 함수 사용하기 위해
int main()
{
char arr[100];
int i=0;
int len;
scanf("%s",arr);
len=strlen(arr); ///문자열의 길이 알려 줌
for(i=0;i<len;i++)
{
if(arr[i]!=arr[len-i-1])
{
printf("Not Palindrome\n");
return 0;;
}
}
printf("Palindrome\n");
return 0;
}