알고리즘 - C 언어 로 구현

1. 두 변수의 값 을 교환 하고 세 번 째 변 수 를 사용 하지 않 습 니 다. 즉, a = 3, b = 5, 교환 후 b = 3, a = 5.    unsigned char a = 3, b = 5;     a = a + b;      b = a - b;      a = a - b;  혹은      a = a ^ b;      b = a ^ b;      a = a ^ b;
함수 로 쓰 면:
void swap(int* a, int *b)
{ 
    *a = *a ^ *b; 
    *b = *b ^ *a; 
    *a = *a ^ *b; 
    printf("In %s:a=%d,b=%d
",__FUNCTION__,*a,*b);  }

2. 하나의 숫자 가 unsigned 인지 어떻게 판별 합 니까? \ #define issignal (x) (x > = 0 & & ~ x > = 0)? 1: 0) / / 1 은 기호 가 없 는 0 기호 비고 입 니 다. 직접 기억 할 수 있 습 니 다.    sign 의 가장 높 은 위 치 는 표시 (sign) 만 하고 정수 의 양 과 음 을 표시 하 며 0 은 정, 1 은 음 을 표시 합 니 다.    unsigned 는 모두 양수 이 고 signed 는 양수 가 있 고 마이너스 가 있 습 니 다.
3. 프로세서 가 Big 이면 C 함 수 를 쓰 십시오.endian 의 경우 0 으로 돌아 갑 니 다.Littleendian
int checkCPU()
{
    union w
    {
        int a;
        char b;
    } c;
    c.a = 1;

    return (c.b == 1);
}

4. 함 수 를 써 서 1 + 2 + 3 +... + n 의 값 을 되 돌려 줍 니 다 (가정 결 과 는 긴 정형 변수의 범 위 를 초과 하지 않 습 니 다)
int Sum(int n)
{
    return ((long)1 + n) * n / 2;//return (1l + n) * n / 2;
}

5. x 가 2 인지 아 닌 지 에 대한 몇 차례 의 판단 을 실현 한다.
!(X) & (X - 1) / / 0, 아니, 그렇지 않 으 면
또는:
int i = 512; printf("%s"(i & (i - 1)) ? false : true);
6. 정수 역순 을 한 배열 에 넣 기 (재 귀적 실현 요구)
void convert(int *result, int n) 
{
    if(n>=10)
        convert(result+1, n/10);
    *result = n%10; 
}

int main(int argc, char* argv[]) {
    int n = 123456789, result[20]={};
    convert(result, n);
    printf("%d:", n);
    for(int i=0; i<9; i++)
        printf("%d", result[i]);

    return 0;
}

7.

좋은 웹페이지 즐겨찾기