알고리즘 - C 언어 로 구현
1680 단어 c 언어 자체 함수 시리즈
함수 로 쓰 면:
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.