void search(int a[], int b) 함수는 a배열에서 b를 찾고 해당하는 위치를 출력하는 함수이다.
여기서 헷갈린 점이 a배열에서 3을 찾을 때 for문으로 a배열의 0번지, 1번지 등을 돌리고 그에 대한 문구가 출력이 되는 것이다. 3을 찾으니 출력값으로 아래와 같이 나왔다.
3는 없다
3는 없다
3는 2에 있다
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void search(int a[], int b) {
for (int i = 0; i < sizeof(a); i++) {
if (b == a[i])
{
printf("%d는 %d에 있다\n", b, i);
break;
}
else{
printf("%d는 없다\n", b);
}
}
}
int main(void) {
int a[5] = { 1, 2, 3, 4, 5 };
int b;
printf("찾고자 하는 값은?");
scanf("%d", &b);
search(a,b);
}
그래서 무엇이 문제인지 1시간동안 고민해보았고 해결책을 찾았다. search()함수에 c가 1이다라고 선언해주고 if문인 a배열에서 b값이 있다면 c를 0으로 바꿔준다. 그래서 for문에서 빠져나온 후 c값이 1일 때는 b값이 없다고 출력된다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void search(int a[], int b) {
int c = 1;
for (int i = 0; i < sizeof(a); i++) {
if (b == a[i])
{
c = 0;
printf("%d는 %d에 있다\n", b, i);
break;
}
}
if (c == 1)
printf("%d는 없다.", b);
}
int main(void) {
int a[5] = { 1, 2, 3, 4, 5 };
int b;
printf("찾고자 하는 값은?");
scanf("%d", &b);
search(a,b);
}