C语言知识点与题库

发布时间:2026/5/21 8:27:39

C语言知识点与题库 一、main主函数知识点main函数是程序的开关不管main函数在什么位置程序总是从main开始执行的练习题以下哪一项是正确的C语言程序总是从第一个定义的函数开始执行C语言中main不一定只放在开头但程序一定是从main开始运行的C语言程序中的main函数必须放在程序的开始部分一个C语言程序中main函数必须放在最后二、注释与标识符知识点单行注释\多行注释\ * * \C语言中变量标识符的命名规则有以下两个 1.由字母数字下划线组成 2.不能以数字为开头练习题判断对错C语言中注释语句可以出现在程序中的任意位置。判断以下那些是合法标识符2ababc_33_abcinta_3a*b三、冯诺依曼模型知识点练习题CPU主要由运算器和___两部分组成。四、数据类型知识点C语言中常见的基础数据类型有​整型短整型short2字节基本整形int4字节长整型long4字节双长整型long long8字节浮点型/实型单精度浮点型float4字节双精度浮点型double8字节字符型单引号括起来的单个符号char1字节布尔型true或者false在C语言中用0或者1表示bool1字节​字符型char 有两种表现形式 1.单引号引起来的单个字符如‘A’‘~’ 2.字符对应的ASCLL编码一般是一个整数 3.大家注意输出语句中%d表示以整数形式输出%c表示以字符形式输出练习题以下程序的输出结果是 。#include stdio.hvoid main() {char c A;printf(%d, c);}A.A B.65C.编译错误 D.运行错误判断对错C语言中变量必须先定义后使用。 实型常量在计算机中存储时可能存在精度误差 字符串是一个字符序列例如字符串s从右侧向左访问第 3 个字符用s[:-3]索引。 五、运算符与表达式知识点算术运算符 - * / % --关系运算符 ! 逻辑运算符 || !​逻辑运算符与 或|| 非!1.可与关系表达式结合表示一个范围如a60 a80也就是 a比60大 并且 a比80小 才满足条件即a的范围是60~80如a100 || a30也就是 a比100大 或者 a比30小 都满足条件即a的范围是小于30 或者 大于100都可以​​逻辑表达式逻辑运算符可以拼接true和false来判断整体的布尔值如果用拼接视为并且只有两边都是true结果才是true其他情况都是false如果用||拼接视为或者只有||两边都是false结果才是false其他情况都是true​赋值运算符 - * / %逗号运算取最右边的结果 如a(1,5,8,7,3); 取最右边的结果a为3练习题判断对错赋值运算符的功能是将右边的值赋给左边的变量。 a b c 5 是一个合法的赋值表达式。 逻辑运算相关练习设 int x10, y11则表达式 x5 y5 的值是 。A.0 B.1 C.2 D.语法错误设 int a4, b5则表达式 a4 || b4 的值是 。A.0 B.1 C.2 D.语法错误设 int a5, b6, c7;则表达式 ab bc || ca 的值是 。A.0 B.1 C.2 D.语法错误a (4,5,6,7,8,9,3)a的值为___a ((4,5),(5,4),(3,1))a的值为___设有 int a3, b4;则执行 printf(%d,%d, (a,b), (b,a)); 后的输出是 。A.3,4 B.4,3C.4,4 D.3,3六、输入输出语句在输入输出时不同数据类型对应不同的占位符号整型——%d浮点型——%f字符型——%c字符串——%s#####关于 scanf 函数以下描述错误的是 。A.可以用于输入整数B.可以用于输入实数C.可以用于输入字符串D.格式控制字符串中不能包含普通字符七、if分支与switch分支#####练习题阅读下列程序若输入 -5则输出结果为( )。#include stdio.h void main() { int x; scanf(%d, x); if(x 0) printf(%d, x); else printf(%d, x); }A.-5 B.-4 C.4 D.5switch 语句中每个 case 后面都必须跟一个 break。 八、while循环知识点​while循环练习while循环语法为​while(条件){ //重复执行的代码块 }​当条件满足时重复执行的代码块会被执行​break与continuebreak表示跳出循环continue表示跳过本次循环直接进行下一次循环练习题以下代码的输出结果是#include stdio.h int main() { int i 1; while(i 3) { printf(%d , i); i; } return 0; }A. 1 2 3 B. 1 2 3 4 C. 2 3 4 D. 无输出以下代码的输出结果是#include stdio.h int main() { int i 1, sum 0; while(i 5) { sum sum i; i; } printf(%d, sum); return 0; }A. 10 B. 15 C. 20 D. 25以下代码的循环体总共执行多少次int i 0; while(i 4) { // 循环体 i; }A. 3次 B. 4次 C. 5次 D. 无限次以下代码的输出结果是#include stdio.h int main() { int i 2; while(i 5) { printf(%d , i); i i 2; } return 0; }A. 2 4 B. 2 4 6 C. 2 3 4 5 D. 4 6以下代码的输出结果是#include stdio.h int main() { int i 5; while(i 0) { printf(*); i--; } return 0; }A. * * * * * B. * * * * C. 无输出 D. 无限循环下列程序段执行后循环体执行的次数是 。int i 10; while(i 20) { // 循环体 }A.9次 B.10次 C.11次 D.无限次九、for循环知识点###​for循环的语法为 c for(初始化语句; 条件语句; 控制语句){ //代码块 }​//创建从0到4的5次循环 for(int i 0; i 5; i){ //代码块 } 初始化语句——int i 0 循环的次数需要通过某个数字控制定义出整型变量初始值为0 条件语句——i 5 满足i小于5时代码块会被重复运行 控制语句——i 每循环一次i加1 总结初始i为0每执行一次代码块i加1直到i不小于5就不再执行代码块跳出循环也就是从0到4的5次循环​有一种特殊的循环叫无限循环也叫死循环在for循环中有两种无限循环的表示方式方式一小括号里只有两个分号时for(;;){}方式二for当中的条件语句一直满足时如for(i1; i0; i){}​练习题for 循环的三个表达式都可以省略但对应的分号不能省略。 for(;;) 语句表示一个无限循环。 所有的循环都可以用 for 语句实现。 下列程序段中循环体执行次数为无限次的是( )。A.for(i1; i10; i--);B.for(i1; i10; i);C.i1; while(i10) i;D.i1; do{i;}while(i10);十、数组知识点###​数组是数据的集合(集成组合)或序列(有序排列)​也可以理解为多条数据排成队用一个变量表示整个队伍如name——{千喜, 王军开, 王元, 蔡旭昆, 马家琦, 虎哥}name变量指定到数组(序列)每个数据在数组中都有其编号我们也叫索引通过索引在数组中找到或修改某条数据注意索引从0开始​数组的定义​1.int arr[] {a, b, c, d};通过内容定义2.int arr[5];只定义出长度不设置内容默认填充为03.int arr[5] {a, b};未设置内容的部分默认为0访问(获取)数组元素通过索引访问语法为数组名 [ 索引 ]如 int arr[5] {a, b}中arr[0] 为 aarr[1] 为 barr[2] 为 0arr[3] 为 0arr[4] 为 0如果一个数组的长度为5如arr[5]索引是从0到4当我们访问不存在的索引时arr[9]报出索引越界异常练习题若 int a[3]则数组元素 a[3] 是合法的。 所有的一维数组在定义时必须指定数组长度。 若有 int a[5] {1, 2, 3, 4, 5};则 a[5] 表示 。A.数组的最后一个元素值为5 B.数组的第一个元素值为1C.数组的第六个元素属于数组越界 D.语法错误若有 int a[10];则对数组元素引用正确的是 。A.a[10] B.a[0] C.a(5) D.a{1}若有 int a[5]{1,2,3};则数组元素 a[3] 的值是 。A.3 B.0 C.随机值 D.4十一、二维数组知识点二维数组就是使用数组存储数组name [ 2 ] [ 3 ]——{ {关羽, 刘备, 张飞}, {悟空, 吴京, 悟能} }name变量指定到二维度数组(序列)此二维数组类似于excel表格2行3列访问二维数组元素练习题以下程序的输出结果是 。#include stdio.h void main() { int a[3] [3] {{1,2},{3,4},{5,6}}; printf(%d, a[1] [1]); }A.2 B.3 C.4 D.5十二、函数知识点什么是函数函数又叫方法也叫功能需要先定义再调用调用之后才能使用返回值类型 方法名(参数列表){ 方法体 }如void 吃饭(){ printf(我要吃饭); }方法创建出来以后不会直接运行需要调用才会运行调用要放在main当中语法为 方法名(参数列表) 即 吃饭()//创建方法 void 吃饭(){ printf(我要吃饭); } ​ int main(int argc, char *argv[]) { //调用方法在此处才会执行方法体 吃饭(); return 0; }形参和实参形式参数形参//创建方法 void 吃饭(char[] 食物){ printf(我要吃 食物); }小括号中的char[] 食物其中变量食物叫形式参数也就是不确定具体的值的变量就拿此方法为例方法体是printf(我要吃 食物);变量食物表示的具体是什么吃的并不确定需要在调用方法时才确定//创建方法 void 吃饭(char[] 食物){ printf(我要吃 食物); } ​ int main(int argc, char *argv[]) { char[] 食物 蒸羊羔; //调用方法 吃饭(食物);//这里的食物表示的是”蒸羊羔“,是有具体内容的叫实际参数实参 return 0; }形参和实参要一一对应但是两个参数的值是独立互不影响的函数的可以通过参数传递动态数据 定义时的参数是形式参数调用时的参数是实际参数 函数可以一次定义多次调用 参数可以是任意类型(数字字符字符串等) 参数可以是多个 定义和调用时小括号中的参数要一一对应 一个程序中可以调用多个函数 函数可以多层嵌套局部变量和全局变量局部变量定义位置在函数或代码块如 C 的{...}内部声明。作用域仅限于所在的函数或代码块。生命周期在函数执行时创建函数返回时销毁静态局部变量除外。特点外部无法访问不同函数的同名局部变量互不干扰。全局变量定义位置在所有函数之外声明。作用域从定义位置开始到整个文件结束。生命周期程序运行时创建程序结束时销毁。特点所有函数都可以直接访问。返回值返回值表示方法/函数运行完以后所得到的结果返回值可有可无void表示无返回值方法中不写returnint表示方法执行后会得到一个整数必须写returnreturn后边写什么调用完以后就会返回什么结果 return后的类型必须和定义时声明的数据类型一致 return会直接结束return后的代码不执行 void表示无返回值可以不写return关于函数的返回值以下说法错误的是 C 。A.函数可以没有返回值B.返回值通过return语句实现C.一个函数只能有一个return语句D.返回值类型必须与函数类型一致函数的定义可以嵌套但函数的调用不能嵌套。错误十三填空专项练习1.一个C语言程序的执行总是从___函数开始的。2.在C语言中字符型数据的关键字是___。3.设 int a12, b5;则表达式 a%b 的值是___。4.在循环结构中break语句的作用是___。5.若使用printf函数输出一个双精度浮点数变量d要求保留两位小数则对应的格式控制符应为__。6.在C语言中表示逻辑“真”的值用__填整数表示。7.在循环结构中循环次数确定的循环通常使用__语句实现较为方便。8.CPU主要由运算器和__两部分组成。9.若函数定义时未指定返回值类型则默认的返回值类型是__型。10.while循环和do-while循环的主要区别是__循环至少执行一次循环体。十四综合专项练习1.以下关键字分别并表示什么类型的数据shortintlongfloatdoublechar2.以下符号分别表示什么运算/%--!||!3.以下运算结果分别是什么7 % 37 / 37 37 34.在C语言中关系运算符(比较运算符)的运算结果是真假值其中__表示真_ _表示假(填0或1)5.自增自减运算符练习int a 6; a aint a 5; int b 4; a - --b;int x 10; int y 11; x - -- y;int a 4; int b 2; aa-bb;6.关系运算和逻辑运算符练习以下代码的真假值是什么53; 1010; 1010; ​ int a 9; int b 8; a b; ​ int x 100; double y 100.00; x y;以下代码运行以后x所表示的取值范围是什么x 10 x 100; ​ x 10 || x 60; ​ x 60 x 70;判断以下代码的真假值5 9 10 11; ​ 5 9 || 10 11; ​ int x 8;int y 6; x 10 y 3; ​ x 100 || y 100;7.if语句练习分析以下代码分别输出什么int a 9; int b 8; if(a b){ printf(a大); }else{ printf(a大); }int x 10, y 20; if(x y){ printf(a); }else if(x y){ printf(b); }else{ printf(c); }int a 0, b 1; if (a 0) if (b 0) printf(A); else printf(B);int a 1, b 2, c 3; if (a 0 || b 0) c 5; printf(%d %d %d, a, b, c);int x 1, y 2, z 3; if (x 1 y 2 || z 3) printf(Yes); else printf(No);8.一维数组根据以下创建的数组在内存表格上为其填写数据int arr[] {69, 18, 37, 21, 90}索引01234内容int arr[] {1, 8, 9, 16, 21}索引01234内容int arr[5] {}索引01234内容int arr[5] {69, 18}索引01234内容填空定义int arr[] {1, 2, 3, 4, 5};则arr[3]的值是___定义char *arr[] {刘备, 关羽, 张飞, 赵云};则arr[0]的值是___定义int arr[5] {1, 2};则arr[2]的值是___定义int arr[5] {60, 70};则arr[1]的值是___9.合法标识符判断一个合法的标识符命名时必须有( ), ( )和( )这三部分组成合法标识符不能以( )为开头在给变量(标识符)命名时像intdoubleprintf这些关键字可以作为名称吗以下那些为合法标识符ab$ a*b a b a_b _ab ___ (三条下划线) 5ab10.输出语句输出int类型的变量时应该用( )控制符占位输出float类型的变量时应该用( )控制符占位输出char类型的变量时应该用( )控制符占位输出字符串类型的变量时应该用( )控制符占位11.while循环练习以下代码分别循环几次int a 0; while(a3){ a; }int a 5; while(a9){ a; }以下代码的输出结果是int i 5; while(i 0) { printf(*); i--; }A. * * * * * B. * * * * C. 无输出 D. 无限循环在while循环中continue的作用是( )本次循环在while循环中break的作用是( )循环while和do......while的区别是 do......while( )12.switch语句练习以下代码输出什么int day 3; // 整型变量 ​ switch (day) { case 1: printf(Monday\n); break; case 2: printf(Tuesday\n); break; case 3: printf(Wednesday\n); break; case 4: printf(Thursday\n); break; case 5: printf(Friday\n); break; default: printf(Weekend\n); break; }char grade B; // 字符型变量 ​ switch (grade) { case A: printf(Excellent!\n); break; case B: printf(Good!\n); break; case C: printf(Fair!\n); break; case D: printf(Poor!\n); break; default: printf(Invalid grade\n); break; }13.手写代码手写出if语句的语法​手写出以下代码定义两个整型变量x和y用if判断两个变量的大小如果x大输出“X”如果y大输出“Y”​手写出以下代码创建0~100之间的循环判断并输出 0~100之间所有能被3整除不能被5整除的数​手写出以下代码定义出四个整型变量 abcnum创建一个循环包含所有三位数用num作为循环条件表示每个三位数​在循环中分别取出每个三位数的个位十位百位 把个位赋值给变量a十位赋值给变量b百位赋值给变量C​计算出个位十位百位的三次方之和是否为num本身如果是打印出这个num​14.流程图练习画流程图时以下代码流程用什么图形表示开始结束定义变量或处理运算输入输出判断画出以下代码的流程图int num 7; ​ if (num % 2 0) { printf(%d 是偶数。\n, num); } else { printf(%d 是奇数。\n, num); }int score 85; if (score 60) { if (score 80) { printf(成绩优秀\n); } else { printf(成绩合格。\n); } } else { printf(不及格。\n); }

相关新闻