donchanee

포인터에 대한 4문제 본문

프로그래밍/C언어

포인터에 대한 4문제

donchanee 2018. 10. 2. 16:37
728x90



#include <stdio.h>


void maxmin(int *ar) { // maxmin 함수를 선언한다.

    

    int max=0, min=*ar, *p;

    

    for(p=ar;*p!=0;p++) { // 0이 아닐때까지 실행한다.

        if(*p>max)

            max = *p; // 최대값을 저장하는 부분.

        if(*p<min)

            min = *p; // 최소값을 저장하는 부분.

    }

    *ar = max;

    *(ar+1) = min; // 최대값 최소값을 배열의 첫번째, 두번째 부분에 저장한다.

    

}


int main() {

    

    int ar[100]={0}, i=0, *p;

    

    scanf("%d", ar); // 첫 정수를 입력받는다.

    

    while(*(ar+i)!=0) { // 0이 아닐때 까지 입력받는다.

        i++; // i의 값을 1씩 늘려간다.

        scanf("%d", ar+i);

    }

    

    maxmin ( ar ); // 선언한 함수를 사용.

    

    for(p=ar; p<ar+2; p++){

        printf("%d ", *p); // 배열의 첫번째 두번째 부분 출력하는 부분

    }

    return 0;

}




#include <stdio.h>


int main() {

    

    char ar[100]={'0'}, *p;

    int i=0; // 필요한 변수들을 선언.

    

    scanf("%c", ar);

    

    while(*(ar+i)!='*') { // * 가 아닐때까지 입력받는다.

        i++; // i값을 1개씩 늘려가면서 주소를 바꾼다.

        scanf("%c", ar+i);

    }

    

    for(p=(ar+i-1);p>=ar;p--){ // 거꾸로 출력하기위해 뒤에서부터 실행.

        printf("%c", *p);

        if(*p=='a' || *p=='e' || *p =='i' || *p =='o' || *p=='u') // 모음일경우 1개 더 출력하기위한 부분.

            printf("%c", *p);

    }

    printf("*"); // 마지막에 *를 출력해준다.

    

    return 0;

}



#include <stdio.h>


void input(char *p, int N) { // input 함수 선언.

    

    char *ar;

    

    for(ar=p;ar<=p+N;ar++) {

        scanf("%c", ar); // 문자형 포인터로 주소를 이동시키며 입력받는 부분이다.

    }

    

}


void upper(char *p, int N) { // upper 함수 선언.

    

    char *ar;

    

    for(ar=p;ar<=p+N;ar++) {

        if(*ar >= 'A' && *ar <= 'Z') // 대문자에 속하면 출력한다.

            printf("%c", *ar);

    }

    printf("\n"); // 개행

}


void lower(char *p, int N) { // lower 함수 선언.

    

    char *ar;

    

    for(ar=p;ar<=p+N;ar++) {

        if(*ar >= 'a' && *ar <= 'z') // 소문자에 속하면 출력한다.

            printf("%c", *ar);

    }

    printf("\n"); // 개행

}


int DOUBLE (char *p, int N) { // DOUBLE 함수 선언.

    int tmp = 0;

    char *ar; // 정수로 연결시켜 만들어줄 tmp변수가 필요하여 선언하였다.

    

    for(ar=p;ar<=p+N;ar++) {

        if(*ar >= '0' && *ar <= '9') { // 숫자에 해당하면

            tmp = *ar -'0' + tmp*10; // tmp값에 10씩 곱하여 한개의 정수로 만듬.

        }

    }

    return tmp*2; // 문제의 조건에 맞게 2배하여서 반환한다.

}


int main() {

    

    int N;

    char ar[20];

    

    scanf("%d", &N);

    

    input (ar, N);

    upper (ar, N);

    lower (ar, N); // 함수 사용.

    printf("%d", DOUBLE(ar, N)); // 출력은 메인함수에서 한다는 조건에 맞춤.

    

    return 0;

}



#include <stdio.h>

#include <string.h>

#include <stdlib.h>


int main() {

    

    int n=0, m=0, a[10], b[10];

    int *p, *q, tmp;

    

    scanf("%d", a);

    while(*(a+n)) {

        n++;

        scanf("%d", a+n);

    }

    scanf("%d", b);

    while(*(b+m)) {

        m++;

        scanf("%d", b+m);

    }

    

    for(p=a;p<a+n;p++) {

        for(q=b;q<b+m;q++) {

            if(*p < *q) {

                tmp = *p;

                *p = *q;

                *q = tmp;

            }

        }

    }

    

    for(p=a;p<a+n-1;p++) {

        for(q=p+1;q<a+n;q++) {

            if(*p < *q) {

                tmp = *p;

                *p = *q;

                *q = tmp;

            }

        }

    }

    

    for(p=b;p<b+m-1;p++) {

        for(q=p+1;q<b+m;q++) {

            if(*p > *q) {

                tmp = *p;

                *p = *q;

                *q = tmp;

            }

        }

    }

    

    for (p=a; p<a+n; p++) {

        printf("%d ", *p);

    }

    printf("\n");

    for (p=b; p<b+m; p++) {

        printf("%d ", *p);

    }

    

    return 0;

}



'프로그래밍 > C언어' 카테고리의 다른 글

구조체에 대한 5문제  (0) 2018.12.07
문자열에 대한 3문제  (0) 2018.12.07
배열 문제 #7.  (0) 2018.05.22
배열 문제 #6.  (0) 2018.05.20
배열 문제 #5.  (0) 2018.05.19