C语言教程 第2页

C语言 数组-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

C语言 数组

C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量,比如 number0、number1、…、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、…、numbers[99] 来代表一个个单独的变量。数组中的特定元素可以通过索引访问。 所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。 、 数组中的特定元素可以通过索引访问,第一个索引值为0。 声明数组 在 C 中要声明一个数组,需要指定元素的类型和元素的数量,如下所示: type arrayName [ arraySize ]; 这叫做一维数组。arraySize 必须是一个大于零的整数常量,type 可以是任意有效的 C 数据类型。例如,要声明一个类型为 double 的包含 10 个元素的数组 balance,声明语句如下: double balance[10]; 现在 balance 是一个可用的数组,可以容纳 10 个类型为 double 的数字。 初始化数组 在 C 中,您可以逐个初始化数组,也可以使用一个初始化语句,如下所示: double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0}; 大括号 { } 之间的值的数目不能大于我们在数组声明时在方括号 [ ] 中指定的元素数目。 如果您省略掉了数组的大小,数组的大小则为初始化时元素的个数。因此,如果: double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0}; 您将创建一个数组,它与前一个实例中所创建的数组是完全相同的。下面是一个为数组中某个元素赋值的实例: balance[4] = 50.0; 上述的语句把数组中第五个元素的值赋为 50.0。所有的数组都是以 0 作为它们第一个元素的索引,也被称为基索引,数组的最后一个索引是数组的总大小减去 1。以下是上面所讨论的数组的的图形表示: 下图是一个长度为 10 的数组,第一个元素的索引值为 0,第九个元素的索引值为8: 访问数组元素 数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内,跟在数组名称的后边。例如: double salary = balance[9]; 上面的语句将把数组中第 10 个元素的值赋给 salary 变量。下面的实例使用了上述的三个概念,即,声明数组、数组赋值、访问数组: #include <stdio.h> int main (){ int n[ 10 ]; /* n 是一个包含 10 个整数的数组 */ int i,j; /* 初始化数组元素 */  for ( i = 0; i < 10; i++ )...

C语言 作用域规则

任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问。C 语言中有三个地方可以声明变量: 在函数或块内部的局部变量 在所有函数外部的全局变量 在形式参数的函数参数定义中 让我们来看看什么是局部变量、全局变量和形式参数。 局部变量 在某个函数或块的内部声明的变量称为局部变量。它们只能被该函数或该代码块内部的语句使用。局部变量在函数外部是不可知的。下面是使用局部变量的实例。在这里,所有的变量 a、b 和 c 是 main() 函数的局部变量。 #include <stdio.h> int main (){ /* 局部变量声明 */ int a, b; int c; /* 实际初始化 */ a = 10; b = 20; c = a + b; printf ("value of a = %d, b = %d and c = %d\n", a, b, c); return 0; } 尝试一下 全局变量 全局变量是定义在函数外部,通常是在程序的顶部。全局变量在整个程序生命周期内都是有效的,在任意的函数内部能访问全局变量。 全局变量可以被任何函数访问。也就是说,全局变量在声明后整个程序中都是可用的。下面是使用全局变量和局部变量的实例: #include <stdio.h> /* 全局变量声明 */ int g; int main (){ /* 局部变量声明 */ int a, b; /* 实际初始化 */ a = 10; b = 20; g = a + b; printf ("value of a = %d, b = %d and g = %d\n", a, b, g); return 0; } 尝试一下 在程序中,局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。下面是一个实例: #include <stdio.h> /* 全局变量声明 */...

C语言 函数

函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。 函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。 C 标准库提供了大量的程序可以调用的内置函数。例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置。 函数还有很多叫法,比如方法、子例程或程序,等等。 定义函数 C 语言中的函数定义的一般形式如下: return_type function_name( parameter list ) { body of the function } 在 C 语言中,函数由一个函数头和一个函数主体组成。下面列出一个函数的所有组成部分: 返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。 函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。 参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。 函数主体:函数主体包含一组定义函数执行任务的语句。 实例 以下是 max() 函数的源代码。该函数有两个参数 num1 和 num2,会返回这两个数中较大的那个数: /* 函数返回两个数中较大的那个数 */ int max(int num1, int num2) { /* 局部变量声明 */ int result; if (num1 > num2) result = num1; else result = num2; return result; } 函数声明 函数声明会告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。 函数声明包括以下几个部分: return_type function_name( parameter list ); 针对上面定义的函数 max(),以下是函数声明: int max(int num1, int num2); 在函数声明中,参数的名称并不重要,只有参数的类型是必需的,因此下面也是有效的声明: int max(int, int); 当您在一个源文件中定义函数且在另一个文件中调用函数时,函数声明是必需的。在这种情况下,您应该在调用函数的文件顶部声明函数。 调用函数 创建 C 函数时,会定义函数做什么,然后通过调用函数来完成已定义的任务。 当程序调用函数时,程序控制权会转移给被调用的函数。被调用的函数执行已定义的任务,当函数的返回语句被执行时,或到达函数的结束括号时,会把程序控制权交还给主程序。 调用函数时,传递所需参数,如果函数返回一个值,则可以存储返回值。例如: #include <stdio.h> /* 函数声明 */ int max(int num1, int num2); int main (){ /* 局部变量定义 */ int a = 100; int...

C语言 基本语法

我们已经看过 C 程序的基本结构,这将有助于我们理解 C 语言的其他基本的构建块。 C 的标记(Tokens) C 程序由各种标记组成,标记可以是关键字、标识符、常量、字符串值,或者是一个符号。例如,下面的 C 语句包括五个标记: printf("Hello, W3Cschool! \n"); 这五个标记分别是: printf    // 标识符 (    // 符号 "Hello, W3Cschool! \n"    // 字符串值 )    // 符号 ;    // 分号是语句结束符 分号 ; 在 C 程序中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。 例如,下面是两个不同的语句: printf("Hello, W3Cschool! \n"); return 0; 注释 注释就像是 C 程序中的帮助文本,它们会被编译器忽略。它们以 ​/*​ 开始,以字符 ​*/​ 终止,如下所示: // 单行注释 /* 多行注释 多行注释 多行注释 */ ​//​也叫行级注释 因为只能注释一行 ​/* */ ​这个是多行注释 也叫块级注释 这种格式的注释可以单行或多行。 注意:不能在注释内嵌套注释,注释也不能出现在字符串或字符值中 错误演示: //我是单行注释//的错误演示 char a ='//A'; 标识符 C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。一个标识符以字母 ​A-Z​ 或​a-z​ 或下划线​_​ 开始,后跟零个或多个字母、下划线和数字(​0-9​)。 C 标识符内不允许出现标点字符,比如 ​@​、​$​ 和 ​%​。C 是区分大小写的编程语言。因此,在 C 中,​Manpower​ 和 ​manpower​ 是两个不同的标识符。下面列出几个有效的标识符: mohd zara abc move_name a_123 myname50 _temp j a23b9 retVal 关键字 下表列出了 C 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。 auto else long switch break enum register typedef case extern return union char float short unsigned const for signed void continue goto sizeof volatile...

C while 循环-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

C while 循环

C while 循环 C 循环 只要给定的条件为真,C 语言中的 while 循环语句会重复执行一个目标语句。 语法 C 语言中 while 循环的语法: while(condition) { statement(s); } 在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。condition 可以是任意的表达式,当为任意非零值时都为 true。当条件为 true 时执行循环。 当条件为 false 时,程序流将继续执行紧接着循环的下一条语句。 流程图 在这里,while 循环的关键点是循环可能一次都不会执行。当条件为 false 时,会跳过循环主体,直接执行紧接着 while 循环的下一条语句。 实例 #include <stdio.h> int main () { /* 局部变量定义 */ int a = 10; /* while 循环执行 */ while( a < 20 ) { printf("a 的值: %d\n", a); a++; } return 0; } 当上面的代码被编译和执行时,它会产生下列结果: a 的值: 10 a 的值: 11 a 的值: 12 a 的值: 13 a 的值: 14 a 的值: 15 a 的值: 16 a 的值: 17 a 的值: 18 a 的值: 19 C 循环

C 语言经典100例

C 语言练习实例1 C 语言练习实例2 C 语言练习实例3 C 语言练习实例4 C 语言练习实例5 C 语言练习实例6 C 语言练习实例7 C 语言练习实例8 C 语言练习实例9 C 语言练习实例10 C 语言练习实例11 C 语言练习实例12 C 语言练习实例13 C 语言练习实例14 C 语言练习实例15 C 语言练习实例16 C 语言练习实例17 C 语言练习实例18 C 语言练习实例19 C 语言练习实例20 C 语言练习实例21 C 语言练习实例22 C 语言练习实例23 C 语言练习实例24 C 语言练习实例25 C 语言练习实例26 C 语言练习实例27 C 语言练习实例28 C 语言练习实例29 C 语言练习实例30 C 语言练习实例31 C 语言练习实例32 C 语言练习实例33 C 语言练习实例34 C 语言练习实例35 C 语言练习实例36 C 语言练习实例37 C 语言练习实例38 C 语言练习实例39 C 语言练习实例40 C 语言练习实例41 C 语言练习实例42 C 语言练习实例43 C 语言练习实例44 C 语言练习实例45 C 语言练习实例46 C 语言练习实例47 C 语言练习实例48 C 语言练习实例49 C 语言练习实例50 C 语言练习实例51 C 语言练习实例52 C 语言练习实例53 C 语言练习实例54 C 语言练习实例55 C 语言练习实例56 C 语言练习实例57 C 语言练习实例58 C 语言练习实例59 C 语言练习实例60...

C语言 标准库 –

简介 C 标准库的 errno.h 头文件定义了整数变量 errno,它是通过系统调用设置的,在错误事件中的某些库函数表明了什么发生了错误。该宏扩展为类型为 int 的可更改的左值,因此它可以被一个程序读取和修改。 在程序启动时,errno 设置为零,C 标准库中的特定函数修改它的值为一些非零值以表示某些类型的错误。您也可以在适当的时候修改它的值或重置为零。 errno.h 头文件预定义了以一系列表示不同错误代码的宏,这些宏应扩展为类型为 int 的整数常量表达式。 库宏 下面列出了头文件 errno.h 中定义的宏: 序号 宏 & 描述 1 extern int errno这是通过系统调用设置的宏,在错误事件中的某些库函数表明了什么发生了错误。 2 EDOM Domain Error这个宏表示一个域错误,它在输入参数超出数学函数定义的域时发生,errno 被设置为 EDOM。 3 ERANGE Range Error这个宏表示一个范围错误,它在输入参数超出数学函数定义的范围时发生,errno 被设置为 ERANGE。

C语言 标准库 –

简介 C 标准库的 float.h 头文件包含了一组与浮点值相关的依赖于平台的常量。这些常量是由 ANSI C 提出的,这让程序更具有可移植性。在讲解这些常量之前,最好先弄清楚浮点数是由下面四个元素组成的: 组件 组件描述 S 符号 ( +/- ) b 指数表示的基数,2 表示二进制,10 表示十进制,16 表示十六进制,等等… e 指数,一个介于最小值 emin 和最大值 emax 之间的整数。 p 精度,基数 b 的有效位数 基于以上 4 个组成部分,一个浮点数的值如下: floating-point = ( S ) p x b<sup>e</sup> 或 floating-point = (+/-) precision x base<sup>exponent</sup> 库宏 下面的值是特定实现的,且是通过 #define 指令来定义的,这些值都不得低于下边所给出的值。请注意,所有的实例 FLT 是指类型 float,DBL 是指类型 double,LDBL 是指类型 long double。 宏 描述 FLT_ROUNDS 定义浮点加法的舍入模式,它可以是下列任何一个值: -1 – 无法确定 0 – 趋向于零 1 – 去最近的值 2 – 趋向于正无穷 3 – 趋向于负无穷 FLT_RADIX 2 这个宏定义了指数表示的基数。基数 2 表示二进制,基数 10 表示十进制,基数 16 表示十六进制。 FLT_MANT_DIG DBL_MANT_DIG LDBL_MANT_DIG 这些宏定义了 FLT_RADIX 基数中的位数。 FLT_DIG 6 DBL_DIG 10 LDBL_DIG 10 这些宏定义了舍入后不会改变表示的十进制数字的最大值(基数 10)。 FLT_MIN_EXP DBL_MIN_EXP LDBL_MIN_EXP 这些宏定义了基数为 FLT_RADIX 时的指数的最小负整数值。 FLT_MIN_10_EXP -37 DBL_MIN_10_EXP -37 LDBL_MIN_10_EXP -37 这些宏定义了基数为 10 时的指数的最小负整数值。 FLT_MAX_EXP DBL_MAX_EXP LDBL_MAX_EXP...

C语言 标准库 –

简介 limits.h 头文件决定了各种变量类型的各种属性。定义在该头文件中的宏限制了各种变量类型(比如 char、int 和 long)的值。 这些限制指定了变量不能存储任何超出这些限制的值,例如一个无符号可以存储的最大值是 255。 库宏 下面的值是特定实现的,且是通过 #define 指令来定义的,这些值都不得低于下边所给出的值。 宏 值 描述 CHAR_BIT 8 定义一个字节的比特数。 SCHAR_MIN -128 定义一个有符号字符的最小值。 SCHAR_MAX 127 定义一个有符号字符的最大值。 UCHAR_MAX 255 定义一个无符号字符的最大值。 CHAR_MIN 0 定义类型 char 的最小值,如果 char 表示负值,则它的值等于 SCHAR_MIN,否则等于 0。 CHAR_MAX 127 定义类型 char 的最大值,如果 char 表示负值,则它的值等于 SCHAR_MAX,否则等于 UCHAR_MAX。 MB_LEN_MAX 1 定义多字节字符中的最大字节数。 SHRT_MIN -32768 定义一个短整型的最小值。 SHRT_MAX +32767 定义一个短整型的最大值。 USHRT_MAX 65535 定义一个无符号短整型的最大值。 INT_MIN -32768 定义一个整型的最小值。 INT_MAX +32767 定义一个整型的最大值。 UINT_MAX 65535 定义一个无符号整型的最大值。 LONG_MIN -2147483648 定义一个长整型的最小值。 LONG_MAX +2147483647 定义一个长整型的最大值。 ULONG_MAX 4294967295 定义一个无符号长整型的最大值。 实例 下面的实例演示了 limit.h 文件中定义的一些常量的使用。 #include <stdio.h> #include <limits.h> int main() { printf("The number of bits in a byte %d\n", CHAR_BIT); printf("The minimum value of SIGNED CHAR = %d\n", SCHAR_MIN); printf("The maximum value of SIGNED CHAR = %d\n", SCHAR_MAX); printf("The maximum value of UNSIGNED CHAR =...

C语言 标准库 –

简介 locale.h 头文件定义了特定地域的设置,比如日期格式和货币符号。接下来我们将介绍一些宏,以及一个重要的结构 struct lconv 和两个重要的函数。 库宏 下面列出了头文件 locale.h 中定义的宏,这些宏将在下列的两个函数中使用: 序号 宏 & 描述 1 LC_ALL设置下面的所有选项。 2 LC_COLLATE影响 strcoll 和 strxfrm 函数。 3 LC_CTYPE影响所有字符函数。 4 LC_MONETARY影响 localeconv 函数提供的货币信息。 5 LC_NUMERIC影响 localeconv 函数提供的小数点格式化和信息。 6 LC_TIME影响 strftime 函数。 库函数 下面列出了头文件 locale.h 中定义的函数: 序号 函数 & 描述 1 char *setlocale(int category, const char *locale)设置或读取地域化信息。 2 struct lconv *localeconv(void)设置或读取地域化信息。 库结构 typedef struct { char *decimal_point; char *thousands_sep; char *grouping; char *int_curr_symbol; char *currency_symbol; char *mon_decimal_point; char *mon_thousands_sep; char *mon_grouping; char *positive_sign; char *negative_sign; char int_frac_digits; char frac_digits; char p_cs_precedes; char p_sep_by_space; char n_cs_precedes; char n_sep_by_space; char p_sign_posn; char n_sign_posn; } lconv 以下是各字段的描述: 序号 字段 & 描述 1 decimal_point用于非货币值的小数点字符。 2 thousands_sep用于非货币值的千位分隔符。 3 grouping一个表示非货币量中每组数字大小的字符串。每个字符代表一个整数值,每个整数指定当前组的位数。值为 0 意味着前一个值将应用于剩余的分组。 4 int_curr_symbol国际货币符号使用的字符串。前三个字符是由 ISO 4217:1987 指定的,第四个字符用于分隔货币符号和货币量。 5 currency_symbol用于货币的本地符号。 6 mon_decimal_point用于货币值的小数点字符。 7...