다시 한번

클릭 하여 링크 열기
http://blog.csdn.net/snow_5288/article/details/50911609
1. 두 개의 성형 변수의 값 을 정 하고 두 개의 값 의 내용 을 교환 합 니 다.
2. 임시 변 수 를 만 들 수 없고 두 수의 내용 을 교환 할 수 없습니다 (추가 문제)
#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
void swap(int *x,int *y)
{
    int tmp=*x;
	*x=*y;
	*y=tmp;
}
int main()
{
   int a=10;
   int b=20;
   swap(&a,&b);
   printf("a=%d b=%d
",a,b); system("pause"); return 0; } void swap(int *x,int *y) { *x=*x+*y; *y=*x-*y; *x=*x-*y; } int main() { int a=10; int b=20; swap(&a,&b); printf("a=%d b=%d
",a,b); system("pause"); return 0; } void swap(int *x,int *y) { *x=*x * *y; *y=*x / *y; *x=*x / *y; } int main() { int a=10; int b=20; swap(&a,&b); printf("a=%d b=%d
",a,b); system("pause"); return 0; } void swap(int *x,int *y) { *x=*x^*y;//01010^10100=11110 *y=*x^*y;//11110^10100=01010 *x=*x^*y;//11110^01010=10100 } int main() { int a=10; int b=20; swap(&a,&b); printf("a=%d b=%d
",a,b); system("pause"); return 0; }

3. 정수 10 개 중 최대 치 를 구한다.
int MAX(int arr[],int sz)//       
{
   int i=0;
   int max=arr[0];
   for(i=1; imax)
	  {
	     int tmp=arr[i];
		 arr[i]=max;
		 max=tmp;
	  }
   }
   return max;
}
int main()
{
	int arr[10]={2,3,4,1,5,8,6,7,9,0};
	int sz=sizeof(arr)/sizeof(sizeof(arr[0]));
	int ret=MAX(arr,sz);
	printf("     :%d
",ret); system("pause"); return 0; } int MAX(int arr[],int sz) { int i=0; int max=arr[0]; for(i=1; imax) { max=arr[i]; } } return max; } int main() { int arr[10]={2,3,4,1,5,8,6,7,9,0}; int sz=sizeof(arr)/sizeof(sizeof(arr[0])); int ret=MAX(arr,sz); printf(" :%d
",ret); system("pause"); return 0; }

4. 함수 하 나 를 써 서 인자 바 이 너 리 중 1 의 개 수 를 되 돌려 줍 니 다.
예컨대      0000 1111       4 개 1
프로그램 프로 토 타 입:
int  count_one_bits(unsigned int value)
{
       // 한 자릿수 로 되돌아가다
}
int count_one_bits(unsigned int value)
{
    int count=0;
	int tmp=0;
	while(value>0)
	{
	   tmp=value%2;
	   if(tmp!=0)
	   {
	      count++;
	   }
	   value/=2;
	}
	return count;
}
int main()
{
   unsigned int value=0;
   int count=0;
   printf("         :");
   scanf("%d",&value);
   count=count_one_bits(value);
   printf("          :%d
",count); system("pause"); return 0; }

위의 코드 를 통 해 우 리 는 그것 이 양수 에 만 사용 되 고 음 수 를 입력 하면 결과 가 잘못 되 는 것 을 발견 했다.
개선 코드:
#include
#include
int count_one_bits(int value)
{
   int i=0;
   int count=0;
   for(i=0; i<32; i++)
   {
       if(((value>>i) && 1) == 1)
	   {
		   count++;
	   }
   }
   return count;
}
int main()
{
   int value=0;
   int count=0;
   printf("         :");
   scanf("%d",&value);
   count=count_one_bits(value);
   printf("          :%d
",count); system("pause"); return 0; }
#include
#include
int count_one_bits(int value)
{
   int count=0;
   while(value)
   {
      count++;
	  value=value&(value-1);
   }
   return count;
}
int main()
{
   int value=0;
   int count=0;
   printf("         :");
   scanf("%d",&value);
   count=count_one_bits(value);
   printf("          :%d
",count); system("pause"); return 0; }

좋은 웹페이지 즐겨찾기