//bingary.c--以二进制形式打印整数
#include<stdio.h>
void to_binary(unsigned long n);
int main(void)
{
unsigned long number;
printf("enter an integer (q to quit):\n");
while (scanf("%1u", &number) == 1)
{
printf("binary equivalent:");
to_binary(number);
putchar('\n');
printf("enter an integer (a to quit):\n ");
}
printf("done.\n");
return 0;
}
void to_binary(unsigned long n) //递归函数
{
int r;
r = n % 2;
if (n >= 2)
to_binary(n / 2);
putchar(r == 0 ? '0' : '1');
return;
}
在该程序中,如果r的值是0,to_binary函数就是显示字符‘0’:如果r的值是1,to_binary()函数则显示字符‘1’。条件表达式r==0? '0':'1'用于把数值转换成字符。
所有的C函数皆平等
程序中每个C函数与其他函数都是平等的。每个函数都可以调用其他函数,或是被其他函数调用。这点与Pascal和Modula-2中的过程不同,虽然过程都可以嵌套在另一个过程中,但是嵌套在不同的过程中的过程之间不能相互调用。
main()函数与其他函数有点不同,当main()与程序中的其他函数放在一起是,最开始执行的是main()函数中的第1条语句,但是这也是局限之处。main()也可以被自己或其他函数递归调用’
编译多源代码文件的程序
UNIX
假定在UNIX 系统中安装了UNIX C编译器cc(最初的cc已经停用,但是许多UNIX系统都给cc命令起了一个别名用作其他编译器命令,典型的是gcc或clang).假设file1.c和file2.c是两个含C函数文件,线面将编译两个文件并生成一个a,out的课执行文件:
cc file1.c file2.c
另外还生成了两个名为file1.o和file2.o的目标文件。如果后来改动了file1.c ,而file2.c不变,可以使用以下命令编译第一个文件,并与第二个文件目标代码合并:
cc file.o file2.o
Linux
嘉定LINUX系统安装了GUN C编译器GCC。假设file1.c 和file2.c是两个内涵C函数的文件,下面的命令可以将编一两个文件并生成名为a.out的可执行文件。
DOS命令编译器
Windows和苹果IDE 编译器