C语言程序设计入门 ============= 1、问:C程序编辑如下: main() printf("Hello World \n"); } 在VC中为何不能显示运行结果? 答:程序中用到了printf函数,这是c语言中标准的输出函数,要使用它,必须引用系统 标准库函数。即在程序头部加上#include 2、问:在VC6.0和Turbo C2.0中怎样新建一个C程序?或是打开一个编辑好的C程序? 答:在VC6.0中新建及打开一个C程序步骤如下: (1)选择[文件]-[新建]选项,打开新建对话框,选择文件选项卡 (2)在列表框选中C+Source File,在文件文本框输入文件名,按“确定"按钮,新文件建 立,后缀名为:cpp (3)选择[文件]-[打开]选项,在弹出的对话框中,选择要打开的文件即可 在Turbo C2.0中新建及打开一个c程序步骤如下: (1)新建文件:按快捷键+F,在弹出的菜单中选择“New”选项即可;程序录入后 要按快捷键tf,在弹出的菜单中选择"Save”选项保存程序。 (2)打开文件:按快捷键+F,在弹出的菜单中选择Load”选项即可; 3、为何在TurboC程序运行之后,看不到结果界面? 答:程序运行之后,要想看到运行结果,需按下+F5,即可看到结果界面。 4、C语言语法应注意什么? 书写标识符时,应注意大小写字母的区别。例: main() {int a=3;printf ("%d",A);} 在C语言中认为大写字母和小写字母是两个不同的字符,如上例中被认为a和A是两个不 同的变量名,且并不一定显示出错信息,但往往得出错误的结果。习惯上,用预处理定义 的符号常量名应大写,如:defineA10,以增加可读性
C 语言程序设计入门 ================ 1、问:C 程序编辑如下: main( ) { printf("Hello World!\n"); } 在 VC 中为何不能显示运行结果? 答:程序中用到了 printf 函数,这是 C 语言中标准的输出函数,要使用它,必须引用系统 标准库函数。即在程序头部加上#include ================ 2、问:在 VC6.0 和 Turbo C2.0 中怎样新建一个 C 程序?或是打开一个编辑好的 C 程序? 答:在 VC6.0 中新建及打开一个 C 程序步骤如下: (1)选择[文件]--[新建] 选项,打开新建对话框,选择文件选项卡 (2)在列表框选中 C++ Source File,在文件文本框输入文件名,按“确定”按钮,新文件建 立,后缀名为:cpp (3)选择[文件]--[打开] 选项,在弹出的对话框中,选择要打开的文件即可 在 Turbo C2.0 中新建及打开一个 C 程序步骤如下: (1)新建文件:按快捷键+F,在弹出的菜单中选择“New”选项即可;程序录入后, 要按快捷键+F,在弹出的菜单中选择“Save”选项保存程序。 (2)打开文件:按快捷键+F,在弹出的菜单中选择“Load”选项即可; ================ 3、为何在 Turbo C 程序运行之后,看不到结果界面? 答:程序运行之后,要想看到运行结果,需按下+F5,即可看到结果界面。 4、C 语言语法应注意什么? 书写标识符时,应注意大小写字母的区别。例: main( ) {int a=3; printf ( "%d ", A);} 在 C 语言中认为大写字母和小写字母是两个不同的字符,如上例中被认为 a 和 A 是两个不 同的变量名,且并不一定显示出错信息,但往往得出错误的结果。习惯上,用预处理定义 的符号常量名应大写,如:#define A 10,以增加可读性
数据类型、运算符和表达式 1、问:定义C语言的标识符有什么规定? 答:(1)标识符的第一个字符必须是字符或是下划线; (2)标识符的第一个字符后的字符序列应该是字母、下划线或数字组成的序列; 2、问:定义C语言的标识符应该注意什么问题? 答:(1)标识符命名时应有意义,尽量做到见名知义。如longth用来表示长度,time用 来表示时间,P1用来表示圆周率。 (2)标识符严格区分大、小写。如ABC、aBC、abc分别代表3种不同的标识符。 (3)标识符不能与C语言的保留字、系统标准库函数同名。 === 二二 3、问:编辑程序如下: main() { int i,j; i=30000; j=40000; printf("i=%d,j=%d",i,j);) 运行时为何会发生错误? 答:不同的变量类型有不同的取值范围,这里j被定义成整型变量,取值范围在32768~ 32767之间,j等于40000超过了这个范围,出现了溢出错误。 == 4、0和0.0有何区别?1/2和1.0/2有区别吗? 答:0是整型数的书写形式,0.0是实型数的书写形式,它们分别表示不同类型的数。 1/2结果是0,1.0/2结果是0.5 5、为什么一个字符可以用一个整数来表示? 答:字符变量的存储特点是: 将一个字符常量存放在一个字符变量中,实际上是将该字符常量的ASCI代码值放在存储 单元中,其存储形式与整数的存储形式相同。字符数据与整型数据可相互赋值,直接运 算。 6、对于某些数学运算,需要调用标准库函数,这时应该注意什么? 答:在文件头部加上预编译命令tinclude,调用有关数学运算的标准库函数;其 中函数名有由系统提供,不同C的编译系统,提供的函数名不同,使用时需查阅相关手
数据类型、运算符和表达式 ================ 1、问:定义 C 语言的标识符有什么规定? 答:(1)标识符的第一个字符必须是字符或是下划线_ ; (2)标识符的第一个字符后的字符序列应该是字母、下划线或数字组成的序列; ================ 2、问:定义 C 语言的标识符应该注意什么问题? 答:(1)标识符命名时应有意义,尽量做到见名知义。如 longth 用来表示长度,time 用 来表示时间,PI 用来表示圆周率。 (2)标识符严格区分大、小写。如 ABC、aBC、abc 分别代表 3 种不同的标识符。 (3)标识符不能与 C 语言的保留字、系统标准库函数同名。 ================ 3、问:编辑程序如下: main( ) { int i,j; i=30000; j=40000; printf(“i=%d,j=%d”,i,j);} 运行时为何会发生错误? 答:不同的变量类型有不同的取值范围,这里 i,j 被定义成整型变量,取值范围在-32768~ 32767 之间,j 等于 40000 超过了这个范围,出现了溢出错误。 ================ 4、0 和 0.0 有何区别?1/2 和 1.0/2 有区别吗? 答:0 是整型数的书写形式,0.0 是实型数的书写形式,它们分别表示不同类型的数。 1/2 结果是 0,1.0/2 结果是 0.5 ================ 5、为什么一个字符可以用一个整数来表示? 答:字符变量的存储特点是: 将一个字符常量存放在一个字符变量中,实际上是将该字符常量的 ASCII 代码值放在存储 单元中,其存储形式与整数的存储形式相同。字符数据与整型数据可相互赋值,直接运 算。 ================ 6、对于某些数学运算,需要调用标准库函数,这时应该注意什么? 答:在文件头部加上预编译命令#include ,调用有关数学运算的标准库函数;其 中函数名有由系统提供,不同 C 的编译系统,提供的函数名不同,使用时需查阅相关手
册;调用函数时,参数的类型必须与系统规定一致。 ===== 7、在C语言中,数据类型可以自动转化,转换的规则是什么? 答:(Char,short)—>int一>unsigned.>long—>double float->double =============== 8、i++和++i有何区别? 答:i+先使用i的值,再执行+1;+i先将1的值加1,然后再使用i的值
册;调用函数时,参数的类型必须与系统规定一致。 ================ 7、在 C 语言中,数据类型可以自动转化,转换的规则是什么? 答:(Char,short)——>int——>unsigned——>long——>double float——>double ================ 8、i++和++i 有何区别? 答:i++先使用 i 的值,再执行 i+1;++i 先将 i 的值加 1,然后再使用 i 的值
顺序结构和常用语句 ==2 1、问:在C程序中,无符号数可以用哪些格式输出? 答:无符号数可用%d、%0、%x格式输入。 == 2、问:在什么情况下可以认为数据输入结束? 答:(1)遇空格、回车、跳格键(Tab)时; (2)遇宽度结束; (3)非法输入。 == 3、问:getchar和scanf有何区别? 答:只能接收一个字符,该字符可赋给字符变量、整型变量或作为表达式的一部分。 scanf可以输入多个字符和多种不同类型变量的值,但是它不能输入空格、回车和跳格键 (Tab),getchar可以。 == 4、C语言中常用的转义字符有哪些? 答:\n回车换行符,光标移到下一行行首 回车不换行,光标移动到本行行首 1t横向跳格(8位为一格,光标跳到下一格起始位置,如第9或17位等) 1b退一格,光标往左移动一格 \f走纸换页 川用于输出反斜杠字符叫" '用于输出单引号字符” 1”用于输出双引号字符 n \ddd三位八进制数ddd对应的ASCIl码字符 \hh两位十六进制数hh对应的ASCII码字符 === 5、在℃语言中输入字符时需注意什么? ?输入字符是不要输入多余的字符,否则会把这些字符读进去,真正需要的字符可能就读 不进去了。比如不要把输入的字符再就上",直接输入就行了
顺序结构和常用语句 === 1、问:在 C 程序中,无符号数可以用哪些格式输出? 答:无符号数可用%d、%o、%x 格式输入。 === 2、问:在什么情况下可以认为数据输入结束? 答:(1)遇空格、回车、跳格键(Tab)时; (2)遇宽度结束; (3)非法输入。 ==== 3、问:getchar 和 scanf 有何区别? 答:只能接收一个字符,该字符可赋给字符变量、整型变量或作为表达式的一部分。 scanf 可以输入多个字符和多种不同类型变量的值,但是它不能输入空格、回车和跳格键 (Tab),getchar 可以。 ==== 4、C 语言中常用的转义字符有哪些? 答:\n 回车换行符,光标移到下一行行首 \r 回车不换行,光标移动到本行行首 \t 横向跳格(8 位为一格,光标跳到下一格起始位置,如第 9 或 17 位等) \b 退一格,光标往左移动一格 \f 走纸换页 \\ 用于输出反斜杠字符“\” \’ 用于输出单引号字符“’” \” 用于输出双引号字符“”” \ddd 三位八进制数 ddd 对应的 ASCII 码字符 \xhh 两位十六进制数 hh 对应的 ASCII 码字符 ==== 5、在 C 语言中输入字符时需注意什么? ?? 输入字符是不要输入多余的字符,否则会把这些字符读进去,真正需要的字符可能就读 不进去了。比如不要把输入的字符再就上'',直接输入就行了
选择结构程序设计 1、问:在C程序中,关系表达式、逻辑表达式和某个量的真假如何表示? 答:关系表达式和逻辑表达式表达式一样,用数值0'表示假,用数值1表示真。 在判断某个量的真假时,以数值0来表示假,以非0'来表示真。 ===== 2、问:在逻辑表达式的求解中,是否所有的逻辑运算都会被执行? 答:不是。 对于与运算,只有当与运算符(&&)左边的表达式都为真的时候,才会对右边的表达式 进行运算。 对于或运算,只有当或运算符()左边的表达式都为假的时候,才会对右边的表达式进 行运算。 3、问:关系表达式、逻辑表达式和算术运算符混合运算时,是什么运算顺序? 答:非(最高)一>算术运算符一>关系运算符一>逻辑运算符一一>赋值运算符 (最低) === 4、使用多重分支的f语句时,应该注意什么问题? 答:1)else子句是if语句的一部分,它不能作为语句单独使用,必须与if配对使用。 2)嵌套结构不允许交叉。 3)else与f必须成对出现,且else总是与最近的一个未配对的f配对。 5、在什么地方可以使用break语句,它的作用是什么? 答:只能用在switch语句和循环体中使用break语句。 它的作用是强迫终止程序的执行,即提前退出程序的执行。 6、在使用switch语句时,需要注意什么问题? 答:1)表达式及常数表达式(由常数、符号常量组成的表达式)必须为整型,故它们也 可用字符表达式。 2)case后的常数表达式的值不允许相同。 7、逗号表达式可以代替f语句吗? 答:不能
选择结构程序设计 ==================== 1、问:在 C 程序中,关系表达式、逻辑表达式和某个量的真假如何表示? 答:关系表达式和逻辑表达式表达式一样,用数值‘0’表示假,用数值‘1’表示真。 在判断某个量的真假时,以数值‘0 来表示假,以非‘0’来表示真。 ==================== 2、问:在逻辑表达式的求解中,是否所有的逻辑运算都会被执行? 答:不是。 对于与运算,只有当与运算符(&&)左边的表达式都为真的时候,才会对右边的表达式 进行运算。 对于或运算,只有当或运算符(||)左边的表达式都为假的时候,才会对右边的表达式进 行运算。 ==================== 3、问:关系表达式、逻辑表达式和算术运算符混合运算时,是什么运算顺序? 答:非(最高)——>算术运算符——>关系运算符——>逻辑运算符——> 赋值运算符 (最低) ==================== 4、使用多重分支的 if 语句时,应该注意什么问题? 答:1)else 子句是 if 语句的一部分,它不能作为语句单独使用,必须与 if 配对使用。 2)嵌套结构不允许交叉。 3)else 与 if 必须成对出现,且 else 总是与最近的一个未配对的 if 配对。 ==================== 5、在什么地方可以使用 break 语句,它的作用是什么? 答:只能用在 switch 语句和循环体中使用 break 语句。 它的作用是强迫终止程序的执行,即提前退出程序的执行。 ==================== 6、在使用 switch 语句时,需要注意什么问题? 答:1)表达式及常数表达式(由常数、符号常量组成的表达式)必须为整型,故它们也 可用字符表达式。 2)case 后的常数表达式的值不允许相同。 ==================== 7、逗号表达式可以代替 if 语句吗? 答:不能
循环结构程序设计 ==== 1、问:在C程序中,当循环(while语句)和直到循环(do-while语句)有何区别? 答:do-while语句至少执行循环体一次,但while语句当条件为假时不执行循环体语句。 === 2、问:编写循环语句时,应该注意哪些问题? 答:1)如果循环体中包含一个以上的语句,应该用花括弧括起来,以复合语句的形式出 现。如果不加花括弧,则while语句的范围只到while后的第一个分号处。 2)在循环体中应该有使循环趋向结束的语句,否则会导致死循环。 == 3、问:for语句中哪几个部分可以省略? 答:1)for语句的一般形式中的“表达式1”可以省略。此时应该在for语句之前给循环 变量赋初值。 2)表达式2省略可以省略,即不判断循环条件(认为表达式始终为真),循环会无终止的 运行下去。此时可以在循环体中用break语句结束循环。 3)表达式3省略可以省略,此时应另外设置条件保证循环能正常结束。如在循环体内修 改循环变量。 === 4、continue语句可以在什么地方使用,它的作用是什么? 答:continue语句只用于循环结构的内部,常与f语句联合起来使用,以便在满足条件时 提前结束本次循环。它的作用是:结束本次循环,使程序回行到循环条件,判断是否提前 进入下一次循环。 === 5、break语句可以结束多重循环吗? 答:不能。 break只能跳出一层循环(或者一层switch语句结构)。 == 6、在嵌套循环结构中,嵌套的原则是什么? 答:不允许交叉。循环与分支可以相互嵌套但不允许交叉。 === 7、在多重循环中,可以用goto语句实现程序转移吗? 答:可以。 goto语句为无条件转向语句。goto语句可以从循环体内跳出循环,尤其在多层循环中 使用goto语句可以跳到任意一层循环体内
循环结构程序设计 ==== 1、问:在 C 程序中,当循环(while 语句)和直到循环(do-while 语句)有何区别? 答:do-while 语句至少执行循环体一次,但 while 语句当条件为假时不执行循环体语句。 ==== 2、问:编写循环语句时,应该注意哪些问题? 答:1)如果循环体中包含一个以上的语句,应该用花括弧括起来,以复合语句的形式出 现。如果不加花括弧,则 while 语句的范围只到 while 后的第一个分号处。 2)在循环体中应该有使循环趋向结束的语句,否则会导致死循环。 ==== 3、问:for 语句中哪几个部分可以省略? 答:1)for 语句的一般形式中的“表达式 1”可以省略。此时应该在 for 语句之前给循环 变量赋初值。 2)表达式 2 省略可以省略,即不判断循环条件(认为表达式始终为真),循环会无终止的 运行下去。此时可以在循环体中用 break 语句结束循环。 3)表达式 3 省略可以省略,此时应另外设置条件保证循环能正常结束。如在循环体内修 改循环变量。 ==== 4、continue 语句可以在什么地方使用,它的作用是什么? 答:continue 语句只用于循环结构的内部,常与 if 语句联合起来使用,以便在满足条件时 提前结束本次循环。它的作用是:结束本次循环,使程序回行到循环条件,判断是否提前 进入下一次循环。 ==== 5、break 语句可以结束多重循环吗? 答:不能。 break 只能跳出一层循环(或者一层 switch 语句结构)。 ==== 6、在嵌套循环结构中,嵌套的原则是什么? 答:不允许交叉。循环与分支可以相互嵌套但不允许交叉。 ==== 7、在多重循环中,可以用 goto 语句实现程序转移吗? 答:可以。 goto 语句为无条件转向语句。goto 语句可以从循环体内跳出循环,尤其在多层循环中, 使用 goto 语句可以跳到任意一层循环体内
但是,g0to语句不符合结构化程序设计原则,一般不主张使用
但是,goto 语句不符合结构化程序设计原则,一般不主张使用
数组 ==== 1、问:在C程序中,数组在内存中是怎样存储的? 答:在内存中数组占有一段连续的存储空间。 ==== 2、问:数组可以用来表示多个类型不同的变量吗? 答:不能。数组元素的类型必须一致。 === 3、问:数组元素的个数可以动态的改变吗? 答:不能。数组元素的个数必须是确定的,在数组定义时,数组元素的个数就确定了。 ==== 4、如何引用数组元素?可以一次引用整个数组吗? 答:通过数组的下标来引用数组元素。 不能一次引用整个数组,数组元素只能逐个被引用。 对数组中所有元素逐个引用时,通常可使用循环结构。 ==== 5、在数组的定义和初值化同时进行时,可以不指定数组的长度(即数组元素的个数) 么? 答:可以。 给全部元素赋初值时可以不指定数组的长度。 === 6、二维数组在计算机中是如何存放的? 答:在计算机中二维数组的元素按行的顺序存放。 如数组a[m[n,存放顺序为:a[0[o,a[o[1],,a0][n-1],a[1][o,a[1[n-1,, a[m-1][0],…,a[m-1][n-1]。 === 7、对于数组[常量表达式1[常量表达式2],下标合法的引用范围是什么? 答:0≤下标1≤常量表达式1-1; 0≤下标2≤常量表达式2-1。 ==== 8、在字符数组中,10代表什么? 答:C语言中,规定了一个“字符串结束标记”,以字符0代表。 10'代表ASCII码为0的字符,是一个空操作符,表示什么也不干。 字符串在实际存储时,系统会自动的在其尾部添加一个结束标志'0°
数组 ==== 1、问:在 C 程序中,数组在内存中是怎样存储的? 答:在内存中数组占有一段连续的存储空间。 ==== 2、问:数组可以用来表示多个类型不同的变量吗? 答:不能。数组元素的类型必须一致。 ==== 3、问:数组元素的个数可以动态的改变吗? 答:不能。数组元素的个数必须是确定的,在数组定义时,数组元素的个数就确定了。 ==== 4、如何引用数组元素?可以一次引用整个数组吗? 答:通过数组的下标来引用数组元素。 不能一次引用整个数组,数组元素只能逐个被引用。 对数组中所有元素逐个引用时,通常可使用循环结构。 ==== 5、在数组的定义和初值化同时进行时,可以不指定数组的长度(即数组元素的个数) 么? 答:可以。 给全部元素赋初值时可以不指定数组的长度。 ==== 6、二维数组在计算机中是如何存放的? 答:在计算机中二维数组的元素按行的顺序存放。 如数组 a[m][n],存放顺序为:a[0][0],a[0][1],…,a[0][n-1],a[1][0],a[1][n-1],…, a[m-1][0],…,a[m-1][n-1]。 ==== 7、对于数组 a[常量表达式 1][常量表达式 2],下标合法的引用范围是什么? 答:0≤下标 1≤常量表达式 1-1; 0≤下标 2≤常量表达式 2-1。 ==== 8、在字符数组中,‘\0’代表什么? 答:C 语言中,规定了一个“字符串结束标记”,以字符’\0’代表。 ‘\0’代表 ASCII 码为 0 的字符,是一个空操作符,表示什么也不干。 字符串在实际存储时,系统会自动的在其尾部添加一个结束标志’\0’
=== 9、在使用字符串函数对应的头文件是什么? 答:c语言提供了很多字符串操作函数,其对应的头文件为#include == 10、为什么说结构体类型比数组类型更灵活? 答:结构体类型的数据由数目固定,类型不同的若干成员构成,在内存中占有一段连续的 存储空间。不同的结构体类型其成员不同。而数组元素的类型是相同的
==== 9、在使用字符串函数对应的头文件是什么? 答:C 语言提供了很多字符串操作函数,其对应的头文件为#include ==== 10、为什么说结构体类型比数组类型更灵活? 答:结构体类型的数据由数目固定,类型不同的若干成员构成,在内存中占有一段连续的 存储空间。不同的结构体类型其成员不同。而数组元素的类型是相同的
函数 = 1、问:在函数中,形参和实参有何区别? 答:实参是函数调用时调用函数传送给被调用函数参数的实际值。实参可以是常量、变量 和表达式,实参必须有确定的值。形参是函数定义时,参数表中的参数。形式参数只能是 变量。在函数定义时,参数表中的形参并没有具体的值,系统也不为其分配存储单元。 == 2、问:当函数没有返回值时,函数应该如何定义? 答:对于不需要提供返回值的函数可以直接用vod作为函数类型定义,以表明此函数返回 值为”无类型”或”空类型”。 == 3、问:函数原型声明的作用是什么? 答:将函数名、函数类型及形参个数、类型、顺序等通知编译系统,当函数被调用时,可 对实参、形参的类型、个数匹配情况进行检查。 4、数组元素作为函数的参数与数组名作为函数的参数有何区别? 答:数组元素做函数实参,遵循”值传送”特性,此时形参为变量。 数组名可做实参和形参,传送的是整个数组。 在用数组名做函数参数时,实参和形参都应该用数组(或指针变量)。 =2 5、递归调用和嵌套调用有何区别? 答:嵌套调用:在一个函数调用过程中又调用另一个函数。 递归调用:在调用一个函数的过程中又出现直接或间接地调用该函数本身。这样的调用称 为递归调用。 递归调用必须可以满足一定条件时结束递归调用,否则无限地递归调用将导致程序无法结 束。 = 6、局部变量和全局变量有何区别? 答:局部变量:在一个函数内部定义的变量。局部变量的作用范围仅限于本函数,即只有在 本函数内才能使用它们,其他函数不能使用它们。 全局变量:在函数外定义的变量,也称外部变量。作用范围从其定义的地方开始直至源程 序文件的结束。全局变量通常放在源程序的开始处。 == 7、自动变量、静态变量和外部变量有何区别? 答:用关键字auto作存储类型说明的局部变量(包括形参)称为自动变量。 自动变量存放在动态存储区,都是动态分配存储空间的。 所有全局变量和用关键字static作存储类型说明的局部变量称为静态变量。静态变量存放
函数 == 1、问:在函数中,形参和实参有何区别? 答:实参是函数调用时调用函数传送给被调用函数参数的实际值。实参可以是常量、变量 和表达式,实参必须有确定的值。形参是函数定义时,参数表中的参数。形式参数只能是 变量。在函数定义时,参数表中的形参并没有具体的值,系统也不为其分配存储单元。 == 2、问:当函数没有返回值时,函数应该如何定义? 答:对于不需要提供返回值的函数可以直接用 void 作为函数类型定义,以表明此函数返回 值为”无类型”或”空类型”。 == 3、问:函数原型声明的作用是什么? 答:将函数名、函数类型及形参个数、类型、顺序等通知编译系统,当函数被调用时,可 对实参、形参的类型、个数匹配情况进行检查。 == 4、数组元素作为函数的参数与数组名作为函数的参数有何区别? 答:数组元素做函数实参,遵循”值传送”特性,此时形参为变量。 数组名可做实参和形参,传送的是整个数组。 在用数组名做函数参数时,实参和形参都应该用数组(或指针变量)。 == 5、递归调用和嵌套调用有何区别? 答:嵌套调用:在一个函数调用过程中又调用另一个函数。 递归调用:在调用一个函数的过程中又出现直接或间接地调用该函数本身。这样的调用称 为递归调用。 递归调用必须可以满足一定条件时结束递归调用,否则无限地递归调用将导致程序无法结 束。 == 6、局部变量和全局变量有何区别? 答:局部变量:在一个函数内部定义的变量。局部变量的作用范围仅限于本函数,即只有在 本函数内才能使用它们,其他函数不能使用它们。 全局变量:在函数外定义的变量,也称外部变量。作用范围从其定义的地方开始直至源程 序文件的结束。全局变量通常放在源程序的开始处。 == 7、自动变量、静态变量和外部变量有何区别? 答:用关键字 auto 作存储类型说明的局部变量(包括形参)称为自动变量。 自动变量存放在动态存储区,都是动态分配存储空间的。 所有全局变量和用关键字 static 作存储类型说明的局部变量称为静态变量。静态变量存放