一些易错选择/判断题:
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的