ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

大一上C语言复习1.判断题

2021-12-26 11:32:42  阅读:1227  来源: 互联网

标签:语句 变量 函数 定义 C语言 大一上 数组 判断题 指针


目录

初识C

实参与形参

函数

变量

递归

一维数组

二维数组

字符串

指针

结构体

结构体指针

文件


初识C

(1)在C语言中,一个语句可以书写在不同行上。

(2)自定义标识符以字母或下划线打头

(3)执行以下程序段,输入10,输出10.00。错误

double x; 
scanf("%d", &x);  
printf("%.2f", x);  

虽然整型可以赋给浮点型然后转换为浮点型,但读取格式应为浮点型,且无格式符限制

同理

double x;   
scanf("%f", &x);  
printf("%.2f", x);   双浮点型应该用%lf输入和输出

否则输出结果都为0.00

(4)执行以下程序段,输入30,输出30.00。错误

double x;   
scanf("x=%lf", &x);  
printf("%.2f", x);   

格式化输入,得输入x=……

(5)测试调试样例:

奇数与偶数;

大于小于和等于(即使只有一条if语句,且一个判断条件)(一个临界值)(以此类推多个)

(如:小于0的数、0、大于0且小于15的数、15和大于15的数);

最小值最大值中间值

(6)降序:值逐渐减小;升序:值逐渐增大

(7)同一字母的小写大写字母相差32,且大写字母ascill码值小于小写字母

(8)设变量已正确定义,执行以下程序段,顺序输入三个字符'Q',则输出Q。错误

ch = getchar(); 
putchar(ch); 

输入的不是三个Q,而是’   Q  和 ’ ,所以应该输出  ‘ 

(9)关于switch语句中,case后只能是一个常量(包括数字和字符)或常量表达式

(10)若变量已正确定义,执行以下while语句将陷入死循环。

i = 1;
while (i <= 10) ;
    i++;

注意分号,while语句后有分号,语句语句不执行结束i的值不会增加一直为1,所以一直循环

(11)如果for的循环体语句中没有使用continue语句,则以下for语句和while语句等价。

(12)do - while语句的一般形式如下,第一次进入循环时,首先执行循环体语句,然后再检查循环控制条件,即计算表达式,若值为“真”,继续循环,直到表达式的值为“假”,循环结束,执行do - while的下一条语句。其循环体至少执行一次。

(13)在嵌套循环(多层循环)中, 每一层循环中都不应该改变其他层使用的循环变量的值,以免互相干扰。

实参与形参

(14)函数的实参和形参都可以是变量、常量和表达式。错误

实参可以是常量、变量、表达式、函数等,无论实参是何种类型的数据,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参,所以应该提前用赋值、输入等办法使实参获得确定值。

形参是变量,形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。

(15)函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值反向地传递给实参;换句话说,一旦完成数据的传递,实参和形参就再也没有瓜葛了,所以,在函数调用过程中,形参的值发生改变并不会影响实参。

(16)实参与形参命名可以相同,事实上相同会提高代码的可读性

函数

(17)必须先声明后定义(习惯是把函数定义在梦函数后,所以需要在梦函数前声明才能调用)

(18)如果无需返回值可以省略return语句

变量

(19)全局变量可以定义在函数外任何位置,但习惯性定义在最前面

(20)全局变量与局部变量作用域不同,前者从程序开始到程序结束,后者从函数执行开始到结束

(21)全局变量与局部变量可以同名

比如:全局变量有个变量i,你的子程序中也用变量i当成循环变量,则在子程序中使用的i不是全局变量,是你定义的局部变量,全局变量i不受影响也不会被使用。
在编译器看来,虽然这两个变量名相同,但会被两个不同的标识符标识,不会混淆,局部变量i的变量名最终与全局变量i的名是不同的

(22)为了便于计算机存储管理,C语言把保存所有变量的数据区,分成动态存储区和静态存储区(),静态局部变量被存放在动态存储区。错误

为了便于计算机存储管理,C语言把保存所有变量的数据区分成动态存储区静态存储区。它们的管理方式不同,动态存储区是使用堆栈来管理的,适合函数动态分配与回收存储单元。而静态存储区相对固定,管理较简单,它用于存放全局变量和静态变量

C语言博客作业03--函数 - R° - 博客园  大佬总结

(23)是否会自动赋值为0,取决于变量的类型。
1>全局变量,包括静态全局变量,和非静态全局变量,在没有初始化值时,其值自动为0.
即定义在所有函数外,不归属于任何一个函数的,在没有初始化值时,自动为0。
2>静态局部变量。
当定义在函数内的局部变量,有static标记时,默认初始化为0值。
3>非静态局部变量,无默认初始值,C标准规定初始化值为随机值,但具体实现由编译器决定

(51)当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区。

错误
存储类型 有auto和static两种.
凡是不加static的 都是auto类型.

分配在静态区的是全局变量和静态变量

所以应该分配在动态区

递归

(24)递归的执行速度并不快,但代码比较紧凑,并且比相应的非递归代码更易于编写与理解。

(25)递归不节省存储器的开销,因为递归调用过程中必须在某个地方维护一个存储处理值的栈。

一维数组

(26)下标的合理取值范围是[0,数组长度-1],下标不能越界。

(27)在定义数组之后,根据数组中元素的类型及个数,在内存中分配一段连续存储单元用于存放数组中的各个元素。

(28)数组名表示该数组所分配连续内存空间中第一个单元的地址,即首地址。

(29)数组定义后,数组名的值是一个地址,这个地址是由系统分配的,是不可以修改的

(30)数组定义后,只能引用单个的数组元素,而不能一次引用整个数组。

二维数组

(31)二维数组定义的一般形式如下:

                类型名 数组名[行长度][列长度];

           二维数组元素引用的一般形式如下:

                数组名[行下标][列下标]

                在引用数组元素时,行下标的合理取值范围是[0,行长度-1],列下标的合理取值范围是[0,列长度-1]。行下标和列下标都不能越界。

(32)二维数组的元素在内存中按行/列方式存放,即先存放第0行的元素,再存放第1行的元素……其中每一行的元素再按照列的顺序存放。

(33)将二维数组的行下标和列下标分别作为循环变量,通过二重循环,就可以遍历二维数组,即访问二维数组的所有元素。由于二维数组的元素在内存中按行优先方式存放,将行下标作为外循环的循环变量,列下标作为内循环的循环变量,可以提高程序的执行效率。

字符串

(34)字符串常量就是用一对双引号括起来的字符序列,它有一个结束标志 '\0'

(41)字符串常量实质上是一个指向该字符串首字符的指针常量。

(42)调用printf函数,%s的格式输出字符串时,字符数组名、字符指针和字符串常量(双引号括起来)都可以作为输出参数。

(43)strcmp函数比较字符串大小,是逐个字符比较ascill码值,比较后返回ascill码差值

指针

(35)语句int *p, q, r; 定义了3个指针变量。错误

带 * 才为指针变量

(36)执行语句int *p; 后,指针变量p只能指向int类型的变量。即不同类型的指针变量是不可以直接相互赋值的。

(37)要通过函数调用来改变主调函数中某个变量的值,可以把指针作为函数的参数。

(38)数组的基地址是在内存中存储数组的起始位置,数组名本身就是一个地址即指针值。

(39)对于定义int a[10],*p=a; 语句p=a+1;a=a+1;都是合法的。错误

        数组名不能做自增自减

        数组名不是变量 不能做左值

        指针你可以把它看做一个整型(但不是)数据类型,它是一个变量,存储的是一个地址。比如你可以把一个地址赋值给它,这时指针变量就存储这个地址,再把另一个地址赋值给它, 这时指针变量就存另一个地址,它是可以变的,所以可以作为左值。

        数组,你声明一个数组,系统就分配了一个内存单元 ,这时数组名表示得是这个数组首元素得地址,这个地址是不能变得,可以把它看做(但不是)常量,所以不能作为左值 。

(40)同类型指针变量才可比较大小(指针是存放地址的长整型)

结构体

(44)结构是变量的集合,可以按照对同类型变量的操作方法单独使用其成员变量。

(45)在定义结构类型时,关键字struct和它后面的结构名共同组成一个新的数据类型名。

(46)在定义嵌套的结构类型时,必须先定义成员的结构类型,再定义主结构类型。

(47)只有相同类型的结构体变量可以直接赋值。

(48)在对结构变量操作时,.被称为成员或者分量运算符。

(49)结构数组是结构与数组的结合体,与普通数组的不同之处在于每个数组元素都是一个结构类型的数据,包括多个成员项。

(50)对于结构数组s,既可以引用数组的元素s[i],也可以引用s[i]中的结构成员。

(52)结构体类型本身不占用内存空间,结构体变量占用内存空间。

结构体指针

(54)结构指针就是指向结构类型变量的指针。

(55)假设结构指针p已定义并正确赋值,其指向的结构变量有一个成员是int型的num,则语句 *p.num = 100; 是错误的

p->num或stu.num

文件

(53)当fopen函数打开文件失败时,返回给文件指针的值是NULL。

(56)从文件的逻辑结构上看,c语言把文件看作数据流,并将数据按顺序以一维方式组织存储。

(57)对于缓冲文件系统,在进行文件操作时,系统自动为每一个文件分配一块文件内存缓冲区(内存单元)。

标签:语句,变量,函数,定义,C语言,大一上,数组,判断题,指针
来源: https://blog.csdn.net/nonemeek/article/details/122151938

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有