当前位置:首页 » 编程语言 » 标准c语言

标准c语言

发布时间: 2022-02-04 05:10:17

A. c语言中,标准main函数的书写规范是什么

在最新的 C99 标准中,只有以下两种定义方式是正确的:
int main( void ) /* 无参数形式 */
{
...
return 0;
}
int main( int argc, char *argv[] ) /* 带参数形式 */
{
...
return 0;
}
int指明了main()函数的返回类型,函数名后面的圆括号一般包含传递给函数的信息。void表示没有给函数传递参数。关于带参数的形式,我们等会讨论。
浏览老版本的C代码,将会发现程序常常以。
main()
这种形式开始。C90标准允许这种形式,但是C99标准不允许。因此即使你当前的编译器允许,也不要这么写。
你还可能看到过另一种形式。
void main()
有些编译器允许这种形式,但是还没有任何标准考虑接受它。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地表示:void main( ) 的定义从来就不存在于 C++ 或者 C 。所以,编译器不必接受这种形式,并且很多编译器也不允许这么写。

B. 标准C语言编程

int sort(int a[],int n)// a[]为你要排序的数组,n为数组的长度
{
int i,j,k;

for (i=0;i<n;++i)
{
k=i;
for (j=i+1;j<n;++j)
if (a[j]<a[k]) k=j;
if (k!=i)
{
a[i]+=a[k];
a[k]=a[i]-a[k];
a[i]=a[i]-a[k];
}
}

getchar();
return 0;
}

int sum(int x,int y) //x、y为你要求和的上限和下线
{
int i,sum;

for(i=(x%2==0)? x : x+1; i<y;i=i+2)
{
sum=sum+i;
}
return sum;
}

C. ANSI C语言标准

由ANSI标准定义的C语言关键字共32个 :
auto double int struct break else long switch
case enum register typedef char extern return union
const float short unsigned continue for signed void
default goto sizeof volatile do if while static
根据关键字的作用,可以将关键字分为数据类型关键字和流程控制关键字两大类。
1 数据类型关键字
A基本数据类型(5个)
void :声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果
char :字符型类型数据,属于整型数据的一种
int :整型数据,通常为编译器指定的机器字长
float :单精度浮点型数据,属于浮点数据的一种
double :双精度浮点型数据,属于浮点数据的一种
B 类型修饰关键字(4个)
short :修饰int,短整型数据,可省略被修饰的int。
long :修饰int,长整形数据,可省略被修饰的int。
signed :修饰整型数据,有符号数据类型
unsigned :修饰整型数据,无符号数据类型
C 复杂类型关键字(5个)
struct :结构体声明
union :共用体声明
enum :枚举声明
typedef :声明类型别名
sizeof :得到特定类型或特定类型变量的大小
D 存储级别关键字(6个)
auto :指定为自动变量,由编译器自动分配及释放。通常在栈上分配
static :指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部
register :指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数
extern :指定对应变量为外部变量,即在另外的目标文件中定义,可以认为是约定由另外文件声明的韵蟮囊桓觥耙�谩?
const :与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)
volatile :与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值
2 流程控制关键字
A 跳转结构(4个)
return :用在函数体中,返回特定值(或者是void值,即不返回值)
continue :结束当前循环,开始下一轮循环
break :跳出当前循环或switch结构
goto :无条件跳转语句
B 分支结构(5个)
if :条件语句
else :条件语句否定分支(与if连用)
switch :开关语句(多重分支语句)
case :开关语句中的分支标记
default :开关语句中的“其他”分治,可选。
C 循环结构(3个)
for :for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件
do :do循环结构,do 1 while(2); 的执行顺序是 1->2->1...循环,2为循环条件
while :while循环结构,while(1) 2; 的执行顺序是1->2->1...循环,1为循环条件
以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。
参考资料: http://www.cnblogs.com/atticstudio/archive/2010/02/06/1665153.html

D. 现在的c语言标准是c99吗

C99是标准ISO/IEC 9899:1999的简称。
2011年12月8号,ISO 发布了新的 C 语言的新标准——C11,之前被称为C1X,官方名称 ISO/IEC 9899:2011。
C11是目前最新的C语言标准。

E. 标准C语言中π怎么打

标准的C语言中没有π这个符号及常量,一般在开发过程中是通过开发人员自己定义这个常量的,最常见的方式是使用宏定义:

#definePI3.141592

也可以直接普通变量定义,如:

doublepi=3.141592;

F. C语言在世界上有几个标准

C语言的标准很多,这个问题没有标准答案,但是通常所说的C语言标准一般指如下几个:

  1. K&R C:这是Brian Kernighan 和 Dennis Ritchie 1987年合着的《C语言程序设计》中的C语言参考,也称为"经典C"。

  2. ANSI C:这是1989年美国国家标准协会ANSI公布的标准

  3. ISO C:1990年国际标准化组织ISO采用ANSI C作为ISO标准。这个版本也称为 C89或C90。因此ANSI C、ISO C、ANSI/ISO C、C89、C90实际上是一套东西。

  4. C99:ISO 1994年开始修订新的标准,并最终发布了C99.

  5. C11:ISO 2007年开始修订,并于2011年发布了新的标准,称之为C11.

G. C语言标准包括哪些

有很多的标准,但基本上对应用不会有太大的干扰。比较重要的标准是C89/C90和C99。而且没必要去深入研究标准,相比之下,研究编译器是如何实现标准以及作了哪些扩充,似乎更有意义。

H. 各种C语言标准与区别

GNU C 允许零长度数组
GNU C 允许定义长度为0的数组,可能很多人会问长度为0的数组有什么用啊。其实我们可以定义一个长度为0的数组,那么这个数组是不占用内存空间的,但是 我们可以通过这个数组来访问数组后面的数据,比如一个结构体:
struct data_pra
{
char name;
char num[0];
char year;
charr month;
...
};
struct data_pra data;
就可以通过调用data.num[0]获得year数据,data.num[1]来获得month的数据。如果他们的类型相同,并且取值范围相同,我们要对他们进行范围检查,这是我们就可以通过for循环来实现,而不需要获取每个数据的值,再进行取值范围判断了。
GNU支持case 取值范围用法
GNU C 支持case x…y 语法,区间[x,y]的数都会满足这个case的条件,我们在不考虑if判断的情况下,如整数a的取值范围为0-5,当0<3时执行fun1函数,大于等于3时执行fun2();则GNU C可以通过以下代码实现:
switch(a)
{
case 0..: 2:fun1();
break;
case 3…5: fun2();
break;
}
而不是
switch(a)
{
case 0
case 1;
case 2:
fun1();
break;
case 3:
case 4;
case 5:
fun2();
break;
}
如果条件越多,这种实现方案就越简单方便。也便于其他人员阅读代码。
语句表达式
GNU C把包含在括号里的复合语句看做是一个表达式,称为语句表达式,它可以出现在任何允许表达式的地方。可以在语句表达式中使用原本只能在复合语句中使用的循环变量、局部变量等,例如:
#define min_t(type,x,y) ({type __x=(x); type __y=(y);__x<__y?__x:__y})
int ia,ib,mini;
mini=min_t(int,ia,ib);
这样,因为重新定义了__x和__y这两个局部变量,所以上述方法定义的宏将不会有副作用。在标准C中,对应的宏通常会有副作用
typeof关键字
typeof(x) 可以获得x的类型,因此,可以借助typeof重新定义上一条提到的min_t这个宏
#define min(x,y) /
({ /
const typeof(x) _x=(x);/
const typeof(y) _y=(y);/
(void) (&_x==&_y);/
_x<_y ? _x: _y ; })
不需要像上一条时那样传一个type进去,因为通过typeof(x)可以得到type。
代码 (void) (&_x==&_y);的作用是检查_x和_y的类型是否一致。
可变参数的宏
标准C只支持可变参数的函数,意味着函数的参数可以是不固定的
例如printf()函数的原型是
int printf(const char *format [,argument]…)
而在GNU C中,宏也可以接受可变数目的参数,例如
#define pr_debug(fmt,arg…) printk(fmt,##arg)
这里arg表示其余的参数可以是零个或多个,这些参数以及参数之间的逗号构成arg的值,
在宏扩展时替换arg ,例如
pr_debug(“%s:%d”,filename,line);
被扩展为
printk(“%s:%d”,filename,line);
使用##的原因是为了处理arg不代表任何参数的情况,这时候,前面的逗号就变得多余了。
使用##之后,GNU C预处理器会丢弃前面的逗号
pr_debug(“success!/n”) 会被正确扩展为 printk(“success!/n”)
而不是 printk(“success!/n”,);

I. C语言中的标准函数有哪些

C语言编译系统提供了众多的预定义库函数和宏。用户在编写程序时,可以直接调用这些库函数和宏。这里选择了初学者常用的一些库函数,简单介绍了各函数的用法和所在的头文件。

1.测试函数

Isalnum
原型:int isalnum(int c)
功能:测试参数c是否为字母或数字:是则返回非零;否则返回零
头文件:ctype.h
Isapha
原型:int isapha(int c)
功能:测试参数c是否为字母:是则返回非零;否则返回零
头文件:ctype.h
Isascii
原型:int isascii(int c)
功能:测试参数c是否为ASCII码(0x00~0x7F):是则返回非零;否则返回零
头文件:ctype.h
Iscntrl
原型:int iscntrl(int c)
功能:测试参数c是否为控制字符(0x00~0x1F、0x7F):是则返回非零;否则返回零
头文件:ctype.h
Isdigit
原型:int isdigit(int c)
功能:测试参数c是否为数字:是则返回非零;否则返回零。
头文件:ctype.h
Isgraph
原型:int isgraph(int c)
功能:测试参数c是否为可打印字符(0x21~0x7E):是则返回非零;否则返回零
头文件:ctype.h
Islower
原型:int islower(int c)
功能:测试参数c是否为小写字母:是则返回非零;否则返回零
头文件:ctype.h
Isprint
原型:int isprint(int c)
功能:测试参数c是否为可打印字符(含空格符0x20~0x7E):是则返回非零;否则返回零
头文件:ctype.h
Ispunct
原型:int ispunct(int c)
功能:测试参数c是否为标点符号:是则返回非零;否则返回零
头文件:ctype.h
Isupper
原型:int isupper(inr c)
功能:测试参数c是否为大写字母:是则返回非零;否则返回零
Isxdigit
原型:int isxdigit(int c)
功能:测试参数c是否为十六进制数:是则返回非零;否则返回零

2.数学函数

abs
原型:int abs(int i)
功能:返回整数型参数i的绝对值
头文件:stdlib.h,math.h
acos
原型:double acos(double x)
功能:返回双精度参数x的反余弦三角函数值
头文件:math.h
asin
原型:double asin(double x)
功能:返回双精度参数x的反正弦三角函数值
头文件:math.h
atan
原型:double atan(double x)
功能:返回双精度参数的反正切三角函数值
头文件:math.h
atan2
原型:double atan2(double y,double x)
功能:返回双精度参数y和x由式y/x所计算的反正切三角函数值
头文件:math.h
cabs
原型:double cabs(struct complex znum)
功能:返回一个双精度数,为计算出复数znum的绝对值。Complex的结构模式在math.h中给出定义,其定义如下:
struct complex {
double a,y
};
头文件:stdlib.h,math.h
ceil
原型:double ceil(double x)
功能:返回不小于参数x的最小整数
头文件:math.h
_clear87
原型:unsigned int _clear87(void)
功能:清除浮点运算器状态字
头文件:float.h
_control87
原型:unsigned int _control87(unsigned int newvals,unsigned int mask)
功能:取得或改变浮点运算器控制字
头文件:float.h
cos
原型:double cos(double x)
功能:返回参数x的余弦函数值
头文件:math.h
cosh
原型:double cosh(double x)
功能:返回参数的双曲线余弦函数值
头文件:math.h
ecvt
原型:char*ecvt(double value,int ndigit,int*decpt,int*sign)
功能:把双精度数value转换为ndigit位数字的以空格字符结束的字符串,decpt指向小数点位置,sign为符号标志。函数返回值为指向转换后的字符串的指针
头文件:stdlib.h
exp
原型:double exp(double x)
功能:返回参数x的指数函数值
头文件:math.h
fabs
原型:double fabs(double x)
功能:返回参数x的绝对值
头文件:math.h
floor
原型:double floor(double x)
功能:返回不大于参数x的最大整数
头文件:math.h
fmod
原型:double fmod(double x,double y)
功能:计算x/y的余数。返回值为所求的余数值
头文件:math.h
_fprest
原型:void _fprest(void)
功能:重新初始化浮点型数数学包
头文件:float.h
frexp
原型:double frexp(double value,int*eptr)
功能:把双精度函数value分解成尾数和指数。函数返回尾数值,指数值存放在eptr所指的单元中
头文件:math.h
hypot
原型:double frexp(double x,double y)
功能:返回由参数x和y所计算的直角三角形的斜边长
头文件:math.h
labs
原型:long labs(long n)
功能:返回长整数型参数n的绝对值
头文件:stdlib.h
ldexp
原型:double ldexp(double value,int exp)
功能:返回value*2exp的值
头文件:math.h
log
原型:double log(double x)
功能:返回参数x的自然对数(ln x)的值
头文件:math.h
log10
原型:double log10(double x)
功能:返回参数x以10为底的自然对数(lg x)的值
头文件:math.h
modf
原型:double modf(double value,double*iptr)
功能:把双精度数value分为整数部分和小数部分。整数部分保存在iptr中,小数部分作为函数的返回值
头文件:math.h
poly
原型 :double poly(double x,int n,double c[ ])
功能:根据参数产生x的一个n次多项式,其系数为 c[0],c[1],…c[n]。函数返回值为给定x的多项式的值
头文件:math.h
pow
原型:double pow(double x,double y)
功能:返回计算xy的值
头文件:math.h
pow10
原型:double pow10(int p)
功能:返回计算10p的值
头文件:math.h
rand
原型:int rand(void)
功能:随机函数,返回一个范围在0~215-1的随机整数
头文件:stdlib.h
sin
原型:double sin(double x)
功能:返回参数x的正弦函数值
头文件:math.h
sinh
原型double sinh(double x)
功能:返回参数x的双曲正弦函数值
头文件:math.h
sqrt
原型:double sqrt
功能:返回参数x的平方根值
头文件:math.h
srand
原型:void srand(unsigned seed)
功能:初始化随机函数发生器
头文件:stdlib.h
_status87
原型:unsigned int_status87()
功能:取浮点状态
头文件:float.h
tan
原型:dounle tan(double x)
功能:返回参数x的正切函数值
头文件:math.h
tanh
原型:double tan(double x)
功能:返回参数x的双曲正切函数值
头文件:math.h

热点内容
c语言程序试题 发布:2025-01-10 04:05:17 浏览:791
ibatis生成sql 发布:2025-01-10 03:56:10 浏览:517
我的表姐迪克电脑密码多少 发布:2025-01-10 03:27:40 浏览:766
主机访问P 发布:2025-01-10 03:17:09 浏览:755
滴滴出行脚本 发布:2025-01-10 03:17:03 浏览:743
安卓扁口有线耳机哪个好 发布:2025-01-10 03:12:06 浏览:643
cubemx中的时钟如何配置 发布:2025-01-10 03:09:51 浏览:726
电脑页面怎么设置密码 发布:2025-01-10 03:05:41 浏览:878
mp4加密提取 发布:2025-01-10 03:05:39 浏览:838
我的世界服务器地址后缀 发布:2025-01-10 02:55:40 浏览:522