1、 /*主函数开始*/ /*主函数结束*/ 功能:空操作。说明:.必须有且仅有一个main()函数; .可由一个或多个函数组成; .程序都从调用main()开始执行; .花括号(大括号)中,写该函数所要做的事情,可称为函数体。C语言源程序的基本结构: 函数体 (2)一个简单的C程序程序:#include main() int a,b,c; a=1; b=2; c=a+b; /*预处理命令 作用:.告诉编译器,在编译时需要文件stdio.h; .stdio.h含有的库函数,称为包含文件。 说明:.C系统提供了大量包含文件; .写在程序头部,亦称为头文件; .以h为扩展名。 .一个源程序,可能需要多
2、个头文件。*/ main() /*变量说明语句.告诉编译器,程序用到三个整型数值的变量; .变量名分别为a、b、c。.变量须先说明(定义),后使用; .说明中包括变量名和它的类型; .int定义整型变量,int叫做关键字; .变量名由用户定。 注意: .变量名中字母的大小写是有区别的, 例:A和a是不同的变量。*/ a=1; /*赋值语句。将整数1赋给变量a*/ /*将整数2赋给变量b*/ /*计算a+b并将计算的结果赋给变量c*/ 计算两个整数a与b的和,其结果为c。. 每一语句以分号“;”结尾; . 运行时,将书写的顺序逐条语句执行;执行完最后一个语句,运行结束。 (3)有输出功能的程序。
3、要求:在显示器上的输出(显示)字符串“ Im 20 years old.”。程序:/* My first program */ int age; age = 20;printf(Im %d years old. n, age); /* My first program */ /*注释语句 对程序的一些说明; 格式:以/*开始,以*/结束;printf(/* 输出的库函数显示程序的输出信息; 内容:. . age*/ (4)有输入数据功能的程序。通过键盘给程序中变量a和b赋值,并求其和。 /* This is a C program */ scanf(%d%d,&a,&b);/*输入函数,由键盘
4、输入2个整数*/ (5)例:编写一程序,具体任务是将输入的英尺数转换为公尺数。/* Sample program -feet to meters */ float feet,meters;Enter the value of feet: %f, &feet); meters = feet*0.3048;%f feet is %f meters,feet, meters); /* Sample program -feet to meters */ /*feet和meters为浮点型变量*/ /*由键盘给 float赋值 */ /* 英尺转换为公尺*/.用关键字 float定义浮点数型(带小数)的
5、变量; .scanf()/printf()中的控制码“%f”,用于读入/输出一个浮点数。、1基本数据类型(1)种类(5种):字符型、整型、浮点型、长浮点型、无值型。(2)列表:类型 宽度(bit) 取 值 范 围内容char8-128 127ASCII字符int16-32768 32767整数float323.4E-38 3.4E+38(10-381038)含有小数的数double641.7E-308 至 1.7E+308很大/很小的实数void 无值 2标识符 (1)定义:变量、函数、标号和用户定义的其它用途的对象的名字的统称。 (2)格式:字母/下划线 字母/数字/下划线(长度任意)。 (
6、3)说明:.大小写字母意义不同;变量 count、COUNT、Count为三个不同的变量。 . 不能用系统的关键字、用户定义的函数名、语言库函数的名。 3. 整型数据 (1)整型变量 特点:关键字为int; 内存所占位数为16bit,即2个字节(byte); 取值范围为从-32768到32767(-215215-1)。 修饰符: asigned 带符号的数据; b. unsigned 无符号的数据; c. long 长型数据; d. short 短型数据。 整型变量的所占位数和取值范围示于表.类型所占位数(bit)数的范围int 16 -32768+32767signed intunsigne
7、d int 065535short intlong int 32 -21474836482147483647unsigned long int04294967925 说明:例1:写两个函数,分别求两个整数的最大公约数、最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。 .解:设两个整数为u、v, 最小公倍数=u*v/最大公约数。 .程序:#incloudv) t=u;u=v;v=t; a=u;b=v; while(r=b%a)!=0) b=a;a=r; return(a); lcd(u,v,h) int u,v,h; return(u*v/h); int u,v,h,l; s
8、canf(“%d,%d”,&u,&v); h=hcf(u,v); printf(“H.C.F=%dn”,h); l=lcd(u,v,h); printf(“L.C.D=%dn”l);.运行结果: 24,16 HCF=8 LCD=48 例2:求方程ax2+bx+c=0的根。用三个函数分别求当b2-4ac大于0、等于0和小于0时的根,并输出结果。 从主函数输入a、b、c的值。.程序:#includefloat x1,x2,disc,p,q;greater_than_zero(a,b) float a,b; x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*
9、a); equal_to_zero(a,b) x1=x2=(-b)/(2*a);small_than_zero(a,b) p=-b/(2*a); q=sqrt(disc)/(2*a); float a,b,c; printf(“n输入方程的系数a,b,c:n”); scanf(“%f,%f,%f”,&b,&c); printf(“n方程是: %5.2f*x*x+%5.2f*x+%5.2f=on”,a,b,c); disc=b*b-4*a*c; printf(“ 方程的解是: if(disc0) great_than_zero(a,b); printf(“X1=%5.2ftX2=%5.2fnn”
10、,x1,x2); else if(disc=0) equal_to_zero(a,b); else small_than_zero(a,b,c); printf(“X1=%5.2+%5.2fitX2=%5.2f-%5.2fin”,p,q,p,q); 例3:编写函数printd,其功能为:使用putchar打印数字。pintd(n) int n; int i; if(n0) putchar(-); n=-n; if(i=n/10)!=0) printd(i); putchar(n%10+0);当调用参数为-123时,执行过程为:参数为-123调用函数 printd(-123) 打印符号“-” 参
11、数为12递归调用 printd(12) 参数为1递归调用 printd(1) 打印字符2 打印字符3 例4:间接递归调用的例子。fn1执行中调用函数fn2; fn2执行中调用函数fn1; 设置外部变量n,以计算递归调用fn1的次数,初值为0; b为外部变量,由函数main、fn1共用,存放计算的值。int b int n=0; int a; scanf(“a=%d”,&a); fn2(a); printf(“n=%4d b=%4d”,n,b);fn1(y) int y; y=2*y+10; b=y/30; fn2(y);fn2(x) int x; if(x4 .设置一低4位全1,其余为全0的数
12、; (04) 0 0000000000 0 1111111111 04; c=(04); d=b&c; printf(“%on%on”,a,d); 331 331 15 .说明:a的二进制数为11011001; 结果为00001101,即八进制15。将a进行右循环移位。 将a中原来左面(16-n)位右移n位,原来右端n位移到最左面n位。.方法:.将a的右端n位放到b中的高n位中; b=an; .将c与b进行按位或运算。 c=c|b unsigned a,b,c; int n; scanf(“a=%o,n=%d”,&n);(16-n); c=c|b; printf(“%on%o”,a,c); a
13、=157653,n=3 157653 75765 (157653)8=(110111*1)2 循环右移3位后,(0111101111110101)2=(75765)8 6例:宏定义作成一个用户定义的包含文件my_include.h。 .文件名: my_include.h #define PROMPT Enter 2 integers: #define MAX(a,b) (a)(b)?(a):(b) .主程序文件修改如下: #include my_inlude.h int a, b, max; printf(PROMT);a, & max = MAX(a,b);The manximum = %d
14、n, max); Enter 2 integers: 5 10 The manximum = 10 例 将从键盘输入的一个字符串存入磁盘文件test中。 int i; char str80; FILE *fp; if(fp = fopen(test, w) = NULL) cannot open file . exit(1); gets(str); for(i=0;stri;i+) fputc(stri,fp); fclose(fp); .注意: 首先定义一个文件指针fp; 用写模式打开(建立)文件test并检查是否确实打开; 将从键盘读入的字符串用fputc()函数写入(输出)到文件test
15、; 关闭文件。将前例中建立的磁盘文件test读出并显示在屏幕上。 char ch;r ch = fgetc(fp); while(ch!=EOF) putchar(ch); 例3:将前例中建立的文件test复制(拷贝)到另一个文件test1.dat。 #include int ch ; FILE *fp1,*fp2; if(fp1=fopen(,)=NULL) Can not open file test.n exit(0); if(fp2=fopen(test1.datCan not open file test1.dat.n while(ch=fgetc(fp1)! fputc(ch,fp
16、2); fclose(fp1); fclose(fp2); return;2.函数 feof()、ferror()和rewind() 的应用 函数 feof()(定义在头文件stdio.h中) .功能:用于读二进制文件时判定文件的结束。 .原型:int feof(FILE *fp); .返回值:若文件结束,它返回一个真值;否则返回0。 .例: 将前例中的两个文件用二进制模式打开。 程序:rbwb ch=fgetc(fp1); while(feof(fp1)=0) 函数 ferror()(定义在头文件stdio.h中) .功能:用来确定文件操作是否出现了错误。int ferror(FILE *f
17、p);.返回值:如果在文件操作过程中发生了错误,它返回真值,否则返回假值。 函数 rewind()(定义在头文件stdio.h中) 用于将其参数所指示的文件指针,定位到文件的开头。.原型:viod rewind(FILE *fp);.例:应用函数ferror()的例子。 要求:复制任意类型的文件,即读入一个文件f1,然后将其写入另一个文件f2。 整个程序分为以下几个部分:打开文件f1(“rb”模式) 打开文件f2(“wb”模式); 读文件f1; 写文件f2; 关闭两个被打开的文件。 FILE *fin, *fout; if(fin=fopen(f1cannot open source file if(fout=fopen(f2cannot open destination file while(!feof(fin) ch = fgetc(fin); if(ferror(fin) error r
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2