C语言选择题及知识点1

一些易错选择/判断题:

1.

若int a = b;(b为浮点型)则a为b取整,且不是四舍五入

%.3f这种是四舍五入保留小数而不是直接取整

2.

若scanf("%3d%2d, &a, &b);

输入123456则a=123b=45

3.

如果从键盘上输入abc<回车>,则程序的运行结果是a。

char ch;

scanf("%3c",&ch);
printf("%c",ch);            因为即使缓冲区读入了三个字符,但ch里只能存储第一个

4.

可能输出是“noyes”这种 即里面输出完之后循环外面再次输出

5.

看好i的起始或终止值

6.

看好是=还是==

7.

内外层循环的循环变量不能相同

8.

看好变量前的名字有没有static

9.

000000000读入到int型里就是0(因为读的不是字符串)

10.

执行下面程序中的输出语句后,输出结果是(20)

int a;
printf("%d\n", (a = 3*5, a*4, a+5));

11.

编译预处理命令#include <stdio.h>的作用是将标准输入输出库代码包含到当前源文件里来

错误,因为只是包含了输入输出等函数的原型声明,库代码是在编译后的“连接”环节接入的

12.

执行下列程序段,将进入无限循环。(错)

int i = 1;
while(i) i++;

 因为加到超出int型之后会从0开始再循环,此时可退出

13.

数组定义后,数组名的值是一个地址,可以被修改。错误

14.

负号无效的意思:与负号的位置有关,可能负号处于后面就无效

15.

不可以用关系运算符对字符数组中的字符串进行比较

16.

给二维数组元素赋初值时,可省略行数,但不能省略列数

17.

选项(ABCD)与以下字符数组定义等价。

static char s[6] = {'H', 'a', 'p', 'p', 'y', '\0'};

A.

static char s[6] = {'H', 'a', 'p', 'p', 'y'};

B.

static char s[6] ="Happy";

C.

static char s[6] ={"Happy"};

D.

static char s[6] = {'H', 'a', 'p', 'p', 'y', 0};

18.

在C语言中,可以将主调函数放在被调函数的后面,省略函数的声明。正确

19.

自动变量如果没有赋值,其值被自动赋为0  错误

20.

在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为int。正确

21.

实参与其对应的形参各占用独立的存储单元 正确

22.

宏名无类型,宏替换不占用运行时间,宏替换只是字符替换  均正确

23.

对于以下结构定义,++p->str中的++加在(A)。

struct {
   int len; 
   char *str; 
} *p;

A.指针str

B.指针p

C.str指向的内容上

D.语法错误

24.

以下正确的叙述是(A)。

A.宏替换不占用运行时间,只占用编译时间

B.在程序的一行中可以出现多个有效的预处理命令行

C.使用带参数宏定义时,参数的类型应与宏定义时一致

D.宏定义不能出现在函数内部

25.

下面说法中正确的是(A)。

A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度

B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度

C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑变量生命周期问题

D.静态全局变量使用过多,可那会导致动态存储区(堆栈)溢出

26.

文件指针指向文件缓冲区中文件数据的存取位置。错

缓冲文件系统的文件缓冲区位于内存数据区  对

C语言中,在成功打开一个文件后,可以使用文件指针来获取文件缓冲区的FILE结构信息。 对

如果函数的返回类型是指针,则可以返回0  对

27.

如果二进制文件a.dat已经存在,现在要求写入全新数据,应以(B)方式打开。

A."w"

B."wb"

C."w+"

D."wb+"

一些干货:

递归调用算法与相同功能的非递归算法相比,主要问题在于重复计算太多,而且调用本身需要分配额外的空间、传递数据和控制,所以时间和空间开销通常都比较大。递归的执行速度并不快,但递归代码比较紧凑,并且比相应的非递归代码更易于编写与理解。递归并不节省存储器的开销,因为递归调用过程中必须在某个地方维护一个存储处理值的栈。

函数的定义不可以嵌套,但函数的调用可以嵌套

局部变量:

在函数内定义的和在复合语句内的(包括形参)

全局变量:

作用于定义处到源文件结束 且开始时自动清零 若在最后定义,则在最前面写extern int x;

局部变量优先

变量的生命周期:从函数调用开始到函数结束 结束后回收,下一次分配的内存单元不一定是原来那个

静态局部变量

static 类型名 变量表

(作用范围:类似于局部变量 生命周期:类似于全局变量)

若写成static int f=1;则第二次时不再另外赋值为一,直接用上一次结果

全局变量和静态局部变量用完会清零,局部变量不会,因为如果清的话频率太高

数据类型和表达式:

数据转换:十转二/八/十六 除2取余 从下往上写 小数部分 乘2取整(每次乘都抹去整数只乘小数) 从上往下写

八/十六二转换:一位八/十六进制对应三/四位二进制,小数整数都是,不够补0

计算机中用补码表示数值

原码:符号位加绝对值(正数是0)

反码:除符号位其余取反

补码:反码加一

小数在计算机中的表示:

先把十进制转换为二进制,再写成科学计数法  用64位表示

有关Switch语句:

switch语句中default不管在前在后都是最后执行

switch语句可以只有default分支

也可以没有default分支,此时若都不符合则什么都不执行

但case标签不能重复且值不能相等

switch后括号里可以是常量

以上写法是不合法的

case后面写1+1这种的合法,n%3这种带字母的不合法

break可以用于循环和switch,而continue只能用于循环

有关转义字符:

\n回   \r输出位置重新回到行首  \\ 输出反斜杠 '\0'表示assic码为0的字符(即空字符)

'\0'==0 'A'=='\101'true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值