实例:用宏定义实现值互换
试定义一个带参数的宏swap(a,b)以实现两个整数之间的交换,并利用它将一维数组a和b的值互换。
(注:宏定义不能换行)
代码:
#include<stdio.h>
#define swap(a,b){int c;c = a;a = b;b =c;}
int main()
{
int i,j,a[10],b[10];
printf("数组a:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("数组b:");
for(i=0;i<10;i++)
scanf("%d",&b[i]);
for(i=0;i<10;i++)
swap(a[i],b[i]);
printf("交换后\n数组a:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n数组b:");
for(i=0;i<10;i++)
printf("%d ",b[i]);
return 0;
}
实例:普通的位运算
当a=2、b=4、c=6、d=8时编程求a&c、b|d、a^d、~a的值。
代码:
#include<stdio.h>
int main()
{
int a,b,c,d;
a=2,b=4,c=6,d=8;
result = ~a;
printf("%u %u %u %u",a&c,b|d,a^d,~a);
return 0;
}
实例:循环移位
试定义一个带参数的宏swap(a,b)以实现两个整数之间的交换,并利用它将一维数组a和b的值互换。
(注:宏定义不能换行)
代码:
#include<stdio.h>
#define swap(a,b){int c;c = a;a = b;b =c;}
int main()
{
int i,j,a[10],b[10];
printf("数组a:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("数组b:");
for(i=0;i<10;i++)
scanf("%d",&b[i]);
for(i=0;i<10;i++)
swap(a[i],b[i]);
printf("交换后\n数组a:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n数组b:");
for(i=0;i<10;i++)
printf("%d ",b[i]);
return 0;
}
实例:普通的位运算
当a=2、b=4、c=6、d=8时编程求a&c、b|d、a^d、~a的值。
代码:
#include<stdio.h>
int main()
{
int a,b,c,d;
a=2,b=4,c=6,d=8;
result = ~a;
printf("%u %u %u %u",a&c,b|d,a^d,~a);
return 0;
}
实例:循环移位
编程实现循环移位,具体要求如下:首先从键盘中输入一个八进制数,其次再输入要移位的位数(当为正数时表示向右循环移位,否则表示向左循环移位,最后将结果显示在屏幕上。
代码:
#include<stdio.h>
int main()
{
unsigned right(unsigned value,int n);
unsigned left(unsigned value,int n);
unsigned a;
int n;
scanf("%o",&a);
scanf("%d",&n);
if(n>0)
{
printf("%o",right(a,n));
}
else
{
n = -n;
printf("%o",right(a,n));
}
return 0;
}
unsigned right(unsigned value,int n)
{
unsigned z;
z = (value>>n)|(value<<(16-n));
return z;
}
unsigned left(unsigned value,int n)
{
unsigned z;
z = (value<<n)|(value>>(16-n));
return 0;
}