⑴ 求C语言编写的一般格式
1,C语言程序的结构特点
一个C语言程序通常由一个预处理语句开始,如#include〉stdio.h〉,它表示,在编译语言程序前,用指明的文件取代改预处理语句,通常文件名是带有后缀为.h的磁盘文件.编译时,它将从磁盘中读出并插入到原来的预处理程序语句中.即预处理语句被指明的包含文件(头文件)代替.
头文件通常是在程序中被调用函数的说明语句和该函数用到的一些符号常量的宏定义.如在程序中经常调用一些标准库函数时,系统提供了相应的头文件,他们其中的一些内容是对该函数的说明及该函数用到的符号常量的宏定义等,如对fgets()的说明放在头文件stdio.h中,再盖头文件包含了对fgets()函数的说明:
char *fgets(char *s,int n,FILE *stream)
对符号常量的定义:
#define NULL 0
当然还包含了一些其他的标准I/O函数的说明和宏定义等.用户也可以建立自己的头文件,在程序开头用include进行包含就行了:
#include"文件名"
注意此时用" "符号来包括,它与 #include〉文件名〉的区别是查找的路径不同.前者表示现在当前目录中查找该文件,如果找不到,再到系统指定的目录中查找.而后者只在系统的制定目录中查找(一般是include\目录),若找不到,便报错.所以用#include"文件名"的形式常用于用户自己写的包含文件,他们通常放在和用户程序同一个目录下.当然在这种形式中,文件名也可用文件路径代替,这时,编译器就去用户指定的目录去查找包含文件.文件包含也可以用在程序行中,如:
main()
{
...
#include "myc.c"
...
}
其中myc.c时用户的c文件,编译时,它将从磁盘中取出,插入到该位置处.
一些在程序中常用到的常量也用编译预处理命令#define来定义,如在真假判断时,常用符号常量TURE和FALSE表示真和假,这时可以用一下定义:
#define TURE 1
#define FALSE 0
将以上代码写在程序的开头,编译时在程序中出现TURE的地方都用1代替,出现FALSE的地方用0代替.
一个完整的C程序,总是由main()函数开始,它像一个大型乐曲的引子,由此引出许多乐章(执行不同的功能的函数);main()函数又像一个大型建筑的框架,它显示了要完成这个建筑的轮廓,这些轮廓就是由一个个函数调用勾画出来的.因此可以说一个C程序是由一个个的模块堆砌起来的,这些模块的最小元素是函数.当然,模块也可以是一个源程序,它又有许多的函数组成.所以c程序的设计是一种模块化的设计,是许多的函数的堆砌.因此在应用程序的设计中,应将一个个的功能用一个个的函数来实现.下面就谈谈函数的使用.
turbo C的函数的使用
Turbo C2.0提供了400多个标准的库函数,每个函数都完成一定的功能.当程序执行这些功能时,只要调用这些函数即可,用户不必再自己写这些函数了.这些库函数包括输入输出函数,数学函数,字符串处理函数,内存函数,与BIOS和Dos有关的接口函数,屏幕函数和图形函数,过程控制函数和目录函数等.这些函数在我的主页上都能查到,欢迎来查询.
当标准库函数中没有用户要用的函数时,就必须自己设计了,设计函数的原则是:
1,函数不应处理太多的功能,要保持函数的小型化,功能单一化.
2,一个函数要保持自己的独立性,如同一个黑匣子一样,有进有出.
3,在函数中多使用复合语句,使函数也具有结构化,并且可以提高执行效率和节省存储空间.
4,在主函数前,要罗列出所有使用自定义函数的原型说明,这有利于在大型程序设计中追踪要调用的函数设置是 否正确.
5,在程序适当的地方加入注释(用/*...*/包含的语句)这便于程序的阅读和调试.
6,采用层次的书写程序格式,按程序的不同功能分层次.
这样一个函数编译后,其内部定义的程序代码与数据与另一个函数的程序代码和数据不会相互影响,因此在函数中要使用局部变量,即它的生存期指维持在调用该函数并执行时,也就是说函数被激活时.要尽量少用或不用全局变量,它将破坏函数的独立性.函数的这种设计方法类似于面向对象设计方法中的封装性.
C大型软件程序的设计步骤
C语言作为结构化的程序设计语言,易采用自顶向下的设计方法,即开始咱不涉及问题的实质和具体的解决步骤,而只是从问题的全局出发,给出一个概括性的抽象描述.例如编写一个信号处理程序,它要求对信号数据经过数字处理后进行图形显示并存盘.因而程序大轮廓应该是:
1,信号数据的输入
2,信号预处理
3,信号进行数字处理
4,进行显示
5,进行存盘
接着对各项功能进行细分,例如对于信号的输入,又可分为:
1.通过com1或com2由RS-232接口进行输入
2.由磁盘数据文件输入
对信号预处理又可分为:
1.对信号进行反序排列
2.用窗函数预处理
对数字处理又可分为:
1.求快速傅立叶变换
2.求功率谱
对用窗函数处理又可分为:
1.海明窗处理函数
2.汉宁窗处理
3.布拉格曼窗处理
其他功能依此类推.
在此细化的基础上再进行细化,以至于成为一个个单独的功能,便于用一个个函数来实现.
下面就是设计一个个函数的实质性阶段.要定义变量,要选区标准函数,要确定算法,这是构造程序的基本单元.当一个个函数都设计完了以后,便可将这些函数在主函数中堆砌起来,并用主函数做总控程序,完成对他们的参数传递,控制选择对这些函数的调用,形成一个完整的实用的信号处理程序.
大程序的设计风格
当一个程序较大时,可将一个程序分成几个部分,每一个部分可单独编成一个源文件,这些源文件可进行单独编译成.obj文件,然后将这些文件组合成一个较大的程序.通常可采用如下方法:
1.include方法
例如,一个程序分成两个源文件,既由a1.c和a2.c两个源程序组成,这时候可将a1.c写成:
#include〉stdio.h〉
#include"a2.c"
main()
{
...
strcpy(s1,s2);
a2();
...
}
而a2.c可写成:
#include〉string.h〉
void a2()
{
....
}
然后在制作一个project文件,内容为:a1.c a2.c
设这个工程文件名为:a1.prj,其中文件中各文件名的后缀可省略,先后顺序也无关,它只影响编译时的顺序.者可在Turbo c的编辑状态下写成,并存盘为a2.prj文件.然后用Alt+p选择Project菜单中的Project_name项,填写生成的a1.prj文件名.然后按F9,即可生成a1.exe可执行文件.
当用汇编语言与C语言混合编程时,则要将汇编语言子程序单独编译生成.obj文件,然后制作工程文件,再进行对C程序的编译和连接.关于这方面的介绍可参考Turbo c2.0的命令行编译.
若程序还需要一些其他的被编译的程序或库文件,这些文件时C语言的标准库不能提供的,则也可将它们的名字放在Project文件中.如:
mymain
myfunc
secial.obj
other.lib
当用F9进行编译连接时,对后缀为.obj的文件只进行连接,对后缀为.lib的库文件不会进行编译,只是进行连接,这样当进行外部调用时,就只会对库进行检索.
当多个源文件制作成project 文件时,一个.c的源文件依赖于其他的.c源文件,若它们之间用一个头文件来进行接口,这时应用括号将这些头文件扩起来(头文件之间可用逗号,空格或分号间隔),这样一旦头文件改变时,它们将被重新编译,例如:有一个主程序名为mymian.c,它包含头文件为:myfuncs.h,而另一个文件是myfuncs.c
这样当project文件的内容写成如下形势时:
mymain.c(myfuncs.h)
myfuncs.c(myfuncs.h)
若一旦myfuncs.h被修改,则对该project文件进行编译时,mymain.c及myfuncs.h将被重新编译
⑵ C语言书写格式标准是什么
你的错误是没加头文件,因为使用printf需要调用库函数 stdio.h。
符号名包括模块名、常量名、标号名、子程序名等。这些名字应该能反映它所代表的实际东西,具有一定的意义,使其能够见名知义,有助于对程序功能的理解。命名采用匈牙利命名法。具体规则如下:
(1)所有宏定义、枚举常数和const变量,用大写字母命名。在复合词里用下划线隔开每个词。
(2)复合词中每个单词的第一个字母大写。除了规则5.1.1.1以外,避免使用下划线。
(3)类、类型定义和枚举型名的第一个字母大写。
(4)函数名是复合词的,第一个词采用全部小写,随后每个单词采用第一个字母大写,其它字母小写方式;如果是单个词的,采用全部小写方式。
(5)循环变量可采用i, j, k等,不受上述规则限制。
(6) 类的成员变量应采用m_开头。
(7) 全局变量词头为g_ 。
(8) 临时变量词头为tmp_ 。
(9) 对结构体内的变量命名, 遵循变量的具体含义命名原则
(10)用小写字母的前缀表示变量的类型,前缀的下一个字母用大写。
——文件之中不得存在无规则的空行,比如说连续十个空行。
一般来讲函数与函数之间的空行为2-3行;
在函数体内部,在逻辑上独立的两个函数块可适当空行,一般为1-2行。
——程序编写首先应考虑清晰性,不要刻意追求技巧性而使得程序难以理解。
——每行长度尽量避免超过屏幕宽度,应不超过80个字符。
——除非对效率有特殊要求,编写程序要作到清晰第一,效率第二。
——尽可能使用函数库。
——尽量用公共过程或子程序去代替重复的功能代码段。要注意,这个代码应具有一个独立的功能,不要只因代码形式一样便将其抽出组成一个公共过程或子程序。
——使用括号清晰地表达算术表达式和逻辑表达式的运算顺序。如将 x=a*b/c*d 写成 x=(a*b/c)*d可避免阅读者误解为x=(a*b)/(c*d)。
——避免不必要的转移。
——避免采用过于复杂的条件测试。
——避免过多的循环嵌套和条件嵌套。
——建议不要使?*=,^=, /=等运算符。
——一个函数不要超过200行。一个文件应避免超过2000行。
——尽量避免使用go to语句。
——避免采用多赋值语句,如x = y = z ;
——不鼓励采用?:操作符,如z = (a>b)?a:b;
——不要使用空的if else 语句。
⑶ C语言里有几种文件格式有“.c”文件格式吗
主要是两种文件类型:1)文本文件,2)二进制文件。
一般来说,人类可读的文件都作为文本文件,例如一片文章。其余都作为二进制文件,例如一个程序。
在C语言中,文件的操作是通过FILE结构体进行了,利用fopen返回一个指向FILE结构体的指针,在使用fopen函数过程中,使用mode控制符对是否打开哪类文件进行控制:
FILE *fopen( const char *filename, const char *mode );
filename:文件名,mode:打开的模式,规定了是可读、可写、追加之类的属性。
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
如果调用失败,返回一个空指针。
⑷ 用C语言编程中,一般的格式是怎样的
用C语言编程中,一般的格式是怎样的。
你的问题问得不是很清晰,你具体是在说什么格式呢?C语言的文件格式其实就是.C啊,如果是编译过后的,一般就是.obj 或者.exe 或者 .dll 等等。
C语言还有个文件格式是.h。这个是头文件。
⑸ C语言的基本格式是什么
如:
1.#include<stido >
“
引入头文件(主要引入函数库,如stdio.h;数学函数”)
2. int main(void ) {
“
主函数必须是小写的(程序唯一入口,前面的int、void等都可省略,但“括号”不能。大括号内包含的内容为程序主体”
Int num = 10
3.printf(“会好的”);
Printf(“我今年%d岁了\n”,num);
“\n:表示换行;%d表示在这里带入定义的函数num =
10,所以后面必须跟‘num’这个标识符”
}
首先,在程序中注意一些小问题。
1.程序要在英文输入法的界面输入,不然程序会报警。
2.程序的格式要有一定的层次关系。
⑹ C语言中条件编译有哪几种形式
预处理程序提供了条件编译的功能。 可以按不同的条件去编译
不同的程序部分,因而产生不同的目标代码文件。 这对于程序的移
植和调试是很有用的。
条件编译有三种形式,下面分别介绍:
1. 第一种形式:
#ifdef 标识符
程序段1
#else
程序段2
#endif
它的功能是,如果标识符已被 #define命令定义过则对程序段1
进行编译;否则对程序段2进行编译。
如果没有程序段2(它为空),本格式中的#else可以没有, 即可
以写为:
#ifdef 标识符
程序段
#endif
#define NUM ok
main(){
struct stu
{
int num;
char *name;
char sex;
float score;
} *ps;
ps=(struct stu*)malloc(sizeof(struct stu));
ps->num=102;
ps->name="Zhang ping";
ps->sex='M';
ps->score=62.5;
#ifdef NUM
printf("Number=%d\nScore=%f\n",ps->num,ps->score);
#else
printf("Name=%s\nSex=%c\n",ps->name,ps->sex);
#endif
free(ps);
}
由于在程序的第16行插入了条件编译预处理命令, 因此要根据
NUM是否被定义过来决定编译那一个printf语句。而在程序的第一行
已对NUM作过宏定义,因此应对第一个printf语句作编译故运行结果
是输出了学号和成绩。
在程序的第一行宏定义中,定义NUM表示字符串OK,其实也可以
为任何字符串,甚至不给出任何字符串,写为:
#define NUM
也具有同样的意义。 只有取消程序的第一行才会去编译第二个
printf语句。读者可上机试作。
2. 第二种形式:
#ifndef 标识符
程序段1
#else
程序段2
#endif
与第一种形式的区别是将“ifdef”改为“ifndef”。它的功能
是,如果标识符未被#define命令定义过则对程序段1进行编译, 否
则对程序段2进行编译。这与第一种形式的功能正相反。
3. 第三种形式:
#if 常量表达式
程序段1
#else
程序段2
#endif
它的功能是,如常量表达式的值为真(非0),则对程序段1 进行
编译,否则对程序段2进行编译。因此可以使程序在不同条件下,完
成不同的功能。
#define R 1
main(){
float c,r,s;
printf ("input a number: ");
scanf("%f",&c);
#if R
r=3.14159*c*c;
printf("area of round is: %f\n",r);
#else
s=c*c;
printf("area of square is: %f\n",s);
#endif
}
本例中采用了第三种形式的条件编译。在程序第一行宏定义中,
定义R为1,因此在条件编译时,常量表达式的值为真, 故计算并输
出圆面积。
上面介绍的条件编译当然也可以用条件语句来实现。 但是用条
件语句将会对整个源程序进行编译,生成的目标代码程序很长, 而
采用条件编译,则根据条件只编译其中的程序段1或程序段2, 生成
的目标程序较短。如果条件选择的程序段很长, 采用条件编译的方
法是十分必要的。
☆本章小结☆
1. 预处理功能是C语言特有的功能,它是在对源程序正式编译前由
预处理程序完成的。程序员在程序中用预处理命令来调用这些功
能。
2. 宏定义是用一个标识符来表示一个字符串,这个字符串可以是常
量、变量或表达式。在宏调用中将用该字符串代换宏名。
3. 宏定义可以带有参数,宏调用时是以实参代换形参。而不是“值
传送”。
4. 为了避免宏代换时发生错误,宏定义中的字符串应加括号,字符
串中出现的形式参数两边也应加括号。
5. 文件包含是预处理的一个重要功能,它可用来把多个源文件连接
成一个源文件进行编译,结果将生成一个目标文件。
6. 条件编译允许只编译源程序中满足条件的程序段,使生成的目标
程序较短,从而减少了内存的开销并提高了程序的效率。
7. 使用预处理功能便于程序的修改、阅读、移植和调试,也便于实
现模块化程序设计。
⑺ C语言 四种基本数据类型
1、基本类型
short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。
2、派生数据类型
派生数据类型是具有相同数据类型,并且按照一定顺序排列的一组变量的集合。
3、指针类型
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。
4、空类型
空类型表示一种未知的类型,不能表示一个真实的变量。
(7)c语言编译时基本格式扩展阅读:
C语言中整型数据的取值范围:
1、短整型:类型说明符为short int或short'C110F1。所占字节和取值范围会因不同的编译系统而有差异。对于16字机,short int 占2个字节,在大多数的32位机中,short int 占4个字节。
2、长整型:类型说明符为long int或long ,在内存中占4个字节,其取值为长整常数。在任何的编译系统中,长整型都是占4个字节。在一般情况下,其所占的字节数和取值范围与基本型相同。
3、无符号型:类型说明符为unsigned。在编译系统中,系统会区分有符号数和无符号数,区分的根据是如何解释字节中的最高位,如果最高位被解释为数据位,则整型数据则表示为无符号数。
⑻ c语言程序的基本结构是什么
c语言程序的基本结构:
#include<stdio.h>
void main (void)//这个就是主函数,第一个void 就是返回类型:有void,int ,float等可以选择,
//第二个是main就是函数名,这里是主函数,它名字固定的,其他的函数可以随
//意定义,第三个是void,是就是参数类型,一样可以由void,int,float等等选择。
{ //中括号内就是函数体了,是函数的具体内容了
int a,b;
a=b=0;
}
⑼ c语言代码用Dev编译的时候保存什么格式了
保存成文本格式了
文件名一般用.c结尾。
⑽ C语言的基本格式是什么
c语言最基本的格式,可以参考最基本的hello
world程序。hello
world程序虽然小,但是几乎包含和计算机软件技术相关的各种基础知识。
#include
int main()
{
printf("hello world\n");
return 0;
}1、#include
预处理操作,谈到预处理操作,就需要了解c语言编译器生成二进制可执行文件的过程,一般为预处理阶断、编译阶断、汇编阶断、链接阶断。
预处理阶断:进行预处理操作,有预处理器来完成。
编译阶断:有c语言编译器完成,它负责将c语言源码转换成汇编指令。要深入下去就是编译原理知识。
汇编阶断:有汇编器完成,它负责将汇编指令转换成二进制机器码。要深入下去就是汇编语言以及反汇编、调试技术的内容
链接阶断:有链接器完成,它负责将二进制机器码装载成一个可执行文件,如果要深入的探索下去,就是windows或者linux平台上的库编程以及相可执行文件格式的学习,比如windows平台的pe文件格式,如果把pe格式搞明白,自己可以直接用二进制编写一个程序,这没有不可思议,实际上是网上有这方面的帖子。
2、int
main()
每个c语言程序有且只有一个main函数,一般的教科书上只有一句:“有系统调用main函数”,
那么到底
是系统中的谁调用了此函数,如此深入下去,可以加深对应用程序执行的理解,实际上在linux平台上有,_start()函数调用main函数,在windows平台上有启动函数maincrtstartup函数来调用main函数。
3、printf("hello
world\n")
这是c语言的成功之处之一,c语言将输入、输出操作设置为一个标准,这大大方便了应用程序开发,也提高了应用程序的可称植性。自己有兴趣可以深入的去探索。
4、return
0
return
0,返回值的0表示程序执行成功了。