
本篇旨在快速过一遍C语言中比较基础的知识,加深对一些易错、易混、易漏的知识点进行回顾。
A.constant B.const C.final D.readonly
答案:B A.并非主流语言的关键字 B.在C、C++、JavaScript、C#语言中,用于声明常量,其值在初始化后不能修改 C.在Java、Dart等语言中,且用于声明只能赋值一次变量 D.仅在C#中声明仅能在构造函数中初始化的字段
A.default B.break C.when D.switch
答案:D
A.class B.class = myClass C.class() D.以上都不是
答案:D C语言设有创建类的美键字
A.C语言是一门编译型计算机语言 B.写出来的C语言代码直接就可以运行的 C.C语言代码需要经过编译和链接生成可执行程序才能运行的 D.C语言代码经过编译生成目标文件,目标文件和链接库通过链接生成可执行程序
答案:B C语言是一门编译型计算机语言,代码需要经过编译和链接生成可执行程序才能运行的,C语言代码经过编译生成目标文件,目标文件和链接库通过链接生成可执行程序
A.集成开发环境简称IDE B.集成开发环境一般都是将编辑、编译、链接、调试等功能集成在一起的一个开发环境 C.集成开发环境就是编译器 D.集成开发环境使用起来方便,大大提升了开发和调试的效率
答案:C 集成开发环境中集成了编译器,如果说集成开发环境就是编译器,有些片面了
A.C语言的源文件的后缀是.cpp B.头文件没什么用,只要有源文件就行了 C.C语言中源文件的后缀是.c,头文件的后缀是.h D.C语言的源文件可以没有后缀
答案:C 很多C语言编译器就是通过文件的后缀来区分是源文件还是头文件的,一般都是要明确的写出文件后缀的,头文件的后缀是.h,是header的意思,源文件的后缀是.c,在稍微复杂的C语言程序中,头文件是很有必要的,一般是用来函数声明、类型声明等
A.必须在最开始 B.必须在库函数的后面 C.可以任意 D.必须在最后
答案:C main函数的位置可以在任意位置,但是如果在主函数之中调用了哪些函数,必须在main函数前对其所调用函数进行生命或包含其被调用函数的头文件
A.main函数是程序的入口 B.一个C语言程序中可以写多个main函数 C.main函数的名字是可以随便改的,比如:mian D.main函数的名字是固定的,一个工程中,有且仅有一个main函数
答案:BC 一个C语言程序中的main函数,有且仅有一个main函数的名字是固定的,编译器以main函数作为程序的入口,程序是从main函数的第一行开始执行的
A.printf是库函数,不需要包含头文件就可以使用 B.库函数是C语言标准约定的,由各个C语言编译器的厂商实现的,所以各个编译器的库函数使用和功能是一样的,但是内部实现是有差异的。 C.printf函数是用来在标准输出上打印格式化的信息的 D.printf函数打印字符使用%c,打印整数使用%d指定格式
答案:A printf是库函数,必须含头文件才能正确使用
A.是’0’ B.是EOF C. 是’\0’ D.是空格
答案:A C语言规定:以’\0’作为有效字符串的结尾标记 A:错误,是’\0’不是字符0 B:EOF一般用来作为检测文本文件的末尾 C:正确 D:明显错误
#include <stdio.h>
#include <string.h>
int main()
{
char arr[] = {'b', 'i', 't'};
printf("%d\n", strlen(arr));
return 0;
}答案:随机值 strlen是用来获取字符串的有效长度的,结尾标记’\0’不包含在内。 strlen获取的规则非常简单:从前往后依次检测,直到遇到’\0’是就终止检测。 而上题中arr是一个字符数组,不是一个有效的字符串,因为后面没有放置’\0’,因此strlen在求解时,将有效字符检测完之后,还会继续向后检测,直到遇到’\0’是才终止,因此答案为不确定,就看紧跟在’t’之后的第一个’\0’在什么位置
A.‘\n’ B.‘\060’ C.‘\q’ D.‘\b’
答案:C A:‘\n’ 转义字符,代表换行 B:‘\060’ 转义字符,060八进制数据,十进制为48,表示ASCII码为48的’0’ C:‘\q’ 什么都不是 D:‘\b’ 转义字符,表示退格
#include <stdio.h>
#include <string.h>
int main()
{
printf("%d\n", strlen("c:\test\121"));
return 0;
}答案:7 strlen:获取字符串的有效长度,不包括’\0’ “c:\test\121”: 在该字符串中,\t是转移字符,水平制表,跳到下一个tab的位置;而\121表示一个字符,是讲121看做8进制数组,转换为10进制后的81,作业为ASCII码值的字符,即:字符’Q’ ,故上述字符串实际为:“c: estQ”,只有7个有效字符
A.注释是用来解释代码的,在代码中是适当的加上注释有利于代码的阅读和多人协作 B.注释基本没啥用,主要给自己看的 C.注释是给程序员看的,编译器在预处理阶段就会删除注释的 D.注释有C++注释风格,有C语言注释风格,推荐C++注释风格
答案:B 注释还是非常有用的,要学会写注释,能写注释,写好注释对工程中多人协作很关键的,写注释是一个程序员的好习惯。面试写代码,如果加上注释也是好的加分项
A.C语言布尔类型是_Bool,使用需要包含头文件stdbool.h B.布尔类型变量的取值是:true或者false C.布尔类型是专门用来表示真和假的类型 D.布尔类型是C99标准之前就有的
答案:D 在早期的C语言标准(如ANSI C和C89)中,没有明确定义布尔类型。通常,程序员使用整数类型(如int)来表示布尔值,其中0表示假(false),非零值表示真(true)。然而,在C99标准中引入了新的布尔类型(stdbool.h头文件),定义了bool类型和true/false常量。布尔类型只有两个取值:true和false,用于表示真和假
#include <stdio.h>
int num = 10;
int main()
{
int num = 1;
printf("num = %d\n", num);
return 0;
}A. 程序有问题,不能编译 B.输出1 C.输出10 D.输出0
答案:B 本题主要考察变量的访问规则,C语言中:
A.变量是用来描述生活中经常发生变化的值 B.变量可以分为局部变量和全局变量 C.局部变量是放在内存的静态区的,全局变量是放在内存的栈区 D.当全局变量和局部变量名字相同的情况,且都可以使用的时候,局部变量优先
答案:C 局部变量是放在内存的栈区的,全局变量是放在内存的静态区
A.除号两边都是小数才能执行小数除法 B.%操作符的操作数可以是整数,也可以是小数 C.%操作符计算的结果是两个操作数整除之后的商 D.负数求模的规则是,结果的正负号由第一个运算数的正负号决定。
答案:D A:除号两边只要有一个是小数,就执行小数除法 B:%操作符的操作数只能是整数 C:%操作符计算的结果是两个操作数整除之后的余数
#include <stdio.h>
int main()
{
int a = 7;
int b = 2;
float c = 2.0f;
printf("%d\n", a / b);
printf("%f\n", a / c);
return 0;
}答案:3,3.500000 2个整数相除,执行的是整数除法,计算的结果也是整数 除法的2个操作数只要有一个数是浮点数,执行的就是小数除法,所以a/c是按照小数除法计算的,结果就是3.5 a/b 是按照整数除法计算的,结果是3
#include <stdio.h>
int main()
{
int a, b, c;
a = 5;
c = ++a;
b = ++c, c++, ++a, a++;
b += a++ + c;
printf("a = %d b = %d c = %d\n:", a, b, c);
return 0;
}A.a = 8 b = 23 c = 8 B.a = 9 b= 23 c = 8 C.a = 9 b = 25 c = 8 D.a = 9 b = 24 c = 8
答案:B
#include <stdio.h>
int main()
{
int a, b, c;
a = 5;
c = ++a;// ++a:加给a+1,结果为6,用加完之后的结果给c赋值
//因此:a = 6 c = 6
b = ++c, c++, ++a, a++;
// 这里先算b=++c, b得到的是++c后的结果,b是7
// b=++c 和后边的整体构成逗号表达式,依次从左向右计算的。
// 表达式结束时,c++和,++a,a++会给a+2,给c加1,此时c:8,a:8,b:7
b += a++ + c; // a先和c加,结果为16,在加上b的值7,比的结果为23
//最后给a加1,a的值为9
printf("a = %d b = %d c = %d\n:", a, b, c); // a:9, b:23, c:8
return 0;
}A.scanf中也有占位符,占位符和后边的参数提供的地址一一对应。 B.scanf()处理所有占位符时,会自动过滤起首的空白字符,包括空格、制表符、换行符 C.scanf的占位符%s表示读取一个字符串,遇到空白字符也全部读取 D.scanf是库函数,库函数不需要包含头文件
答案:A B:scanf()处理数值占位符时,会自动过滤空白字符,包括空格、制表符、换行符,scanf输出字符占位符的时候,不忽略空白字符,总是返回当前第一个字符,无论该字符是否为空格。 C:scanf的占位符%s表示读取一个字符串,遇到空白字符就停止读取。 D:scanf需要包含stdio.h这个头文件的
A.printf()的作用是将参数文本输出到屏幕。它名字里面的f代表format(格式化),表示可以定制输出文本的格式。 B.printf()不会在行尾自动添加换行符,运行结束后,光标就停留在输出结束的地方,不会自动换行。 C.printf()可以在输出文本中指定占位符,“占位符”,就是这个位置可以用其他值代入。 D.printf()参数与占位符是一一对应关系,如果有n个占位符,printf()的参数就应该有n个
答案:D printf()参数与占位符是一一对应关系,如果有n个占位符,printf()的参数就应该有n+1个
#include <stdio.h>
int main()
{
printf("%5d\n", 123456);
return 0;
}答案:123456 printf()允许限定占位符的最小宽度。%5d表示这个占位符的宽度至少为5位。如果不满5位,对应的值的前面会添加空格。如果超过5位,正常输出就行,5是最少输出5位。
A.正确 B.错误
答案:A C语言创建变量时,会为该变量分配一个内存地址。
期待这些可以帮助各位!