- 设计一个程序,实现交换两个数。
方法一:加减法
#include <stdio.h>
int main ( )
{
int a=6,b=8;
printf ("a=6 b=8\n");
a=a+b;
b=a-b;
a=a-b;
printf ("a=%d b=%d",a,b);
return 0;
}
方法二:异或法( 按位异或法)
按位异或指的是按照二进制序列异或,相同为0,相异为1。
#include <stdio.h>
int main ( )
{
int a=6,b=8;
printf("a=6 b=8\n");
a=a^b;
b=a^b;
a=a^b;
printf ("a=%d b=%d",a,b);
return 0;
}
注:写代码时,头文件<stdio.h>中,不能够有空格键。
- 求两个数的最大公约数。
#include <stdio.h>
int main ( )
{
int a=0,b=0;
int c=0;
printf ("请输入两个整数:\n");
scanf ("%d%d",&a,&b);
while (a%b)
{
c=a%b;
a=b;
b=c;
}
printf ("%d",b);
return 0;
}
注:while (a%b) 相当于 while (a%b!=0)
最大公倍数=两个数的乘积除以这两个数的最大公约数。
-
define 定义的常量:数字,整型,字符串,代码等。
#define Loop for ( ; ; ) { printf (“hehe\n”); }
相当于
#include Loop for ( ; ; )
{
printf (“hehe\n”);
} -
define 定义的宏。
函数定义的两个数相加:
int ADD ( int x, int y )
{
return x+y ;
}
用宏定义,实现两个数相加:
#define ADD ( x,y ) x+y
int sum = ADD ( a, b )
注:当实参传给形参时,形参是实参的一份临时拷贝,对形参的修改不会改变实参。
用宏定义实现两个数相乘:
#define MUL (x,y) x*y
printf ("%d\n",MUL(1+2,1+2));
该代码的结果为5.
-
sizeof (int */ char */ double *)的结果为4.
在32位的平台上,这几种类型的大小全为4. -
printf ("%p\n",&num);
&mun 中取的是第一个字节的地址. -
getchar 的返回值为 int.
-
在switch语句,case决定入口,break决定分支,在switch语句的后面,一定要为整型表达式;在case语句之后,一定要为整型常量表达式。
-
for (x=0,y=0;x<2,y<5;++x,y++)
在逗号表达式中,要按照顺序从左向右以依次计算,但是其中采取自右向左的结合性,
因此,该代码块的结果为5. -
在for (i=0,k=0;k=0;i++,k++)中,程序不执行。
原因:k=0不是一个判断,而是赋值,k=0为假,不循环。