大一C语言期末必考|程序结构+流程控制(详解+例题+易错点)一
个人主页北极的代码欢迎来访作者简介java后端学习者❄️个人专栏苍穹外卖日记SSM框架深入JavaWeb✨命运的结局尽可永在不屈的挑战却不可须臾或缺前言由于本人主学java对于学校的C语言提不起兴趣上课也不想听但是还是免不了要考试的命运因此在这里整理了一下本文针对大一C语言期末考试聚焦「程序结构」和「流程控制语句」两大核心基础模块详细拆解知识点、规范代码格式、剖析易错混淆点搭配期末高频例题帮大家吃透基础、避开丢分点适合期末突击复习新手也能轻松看懂。一、程序结构必考基础选择/填空高频C语言程序的核心结构的是「函数式结构」所有代码围绕函数展开其中main函数是程序的“入口”也是期末考试中最基础、最易考的知识点务必牢记规范和细节。main函数程序入口一个C程序有且仅有一个main函数无论它在代码的哪个位置程序运行时都会从main函数开始执行执行完main函数后程序结束。 注意main函数不能省略也不能有多个哪怕代码中写了其他自定义函数最终也必须通过main函数调用才能执行。语句规范C语言中每一条可执行语句必须以「;」分号结尾分号是语句结束的标志缺一不可。 例外注释、函数定义、数组定义等非执行语句不需要加冒号比如int a; 是执行语句必须加int a[5]; 也是执行语句必须加。注释规则注释是给程序员看的编译器会忽略注释内容期末常考注释的格式和使用场景分为两种- 单行注释用「//」开头注释范围仅当前行适合简短说明比如// 定义一个整型变量 -多行注释用「/* */」包裹注释范围从/*开始到*/结束可跨多行适合注释一段代码比如/* 这是一个求和函数用于计算两个整数的和 */。2. 格式规范易错点期末判分重点很多大一同学容易忽略格式导致代码能运行但判分扣分重点注意3点分号不能漏哪怕是简单的赋值语句int a10;漏写分号会直接报错这是最基础的错误。多行注释不能嵌套/* 注释1 /* 注释2 */ */ 这种写法是错误的编译器会把第一个/*和第一个*/配对导致后面的*/报错。main函数的标准格式期末推荐写标准格式避免扣分标准写法如下#include stdio.h // 标准main函数格式int返回值void表示无参数 int main(void) { // 代码语句注意缩进规范美观 printf(Hello World!\n); return 0; // main函数返回0表示程序正常结束 }3. 易错混淆点混淆「main函数」和「自定义函数」误以为自定义函数可以替代main函数比如只写一个add函数不写main函数程序无法运行记住main函数是唯一入口。漏写分号/多写分号漏写分号报错多写分号比如int a10;;虽然不报错但属于不规范写法期末判分可能扣分尽量避免。单行注释和多行注释混用出错比如// 这是注释/* 这种写法中// 后面的所有内容都被注释包括/*不会报错但逻辑混乱不规范。4. 期末例题选择/填空高频例题1以下C程序中正确的是 A. #include stdio.h main() { printf(test); }B. #include stdio.h int main() { printf(test) }C. #include stdio.h int main() /* 主函数 */ { printf(test); return 0; }D. #include stdio.h int main() { // 注释/* printf(test); return 0; }答案C 解析A选项main函数未写返回值类型虽然C语言兼容但不规范期末推荐写intB选项printf语句漏写分号D选项单行注释后/* 被注释没有闭合报错C选项注释规范语句完整正确。二、数据类型基础中的基础贯穿全题型数据类型是C语言的“基石”所有变量、常量都必须指定类型期末考查重点是基本类型、常量/变量的使用以及标识符命名规则易错点集中在“变量使用规范”和“常量区分”。1. 核心知识点详解1基本数据类型大一期末重点考查6种基本类型不用记占用字节数重点记用途int整型用于存储整数比如10、-5、0char字符型用于存储单个字符比如a、0、本质是ASCII码值float单精度浮点型用于存储小数比如3.14、0.5精度较低double双精度浮点型用于存储精度更高的小数比如3.1415926期末编程题优先用doublelong长整型用于存储较大的整数比如1000000short短整型用于存储较小的整数比如-32768~32767使用较少。2常量固定值不能修改常量分为4种期末常考“字符常量”和“字符串常量”的区别这是高频易错点整型常量整数形式比如123、-45、0注意0是整型常量不是字符常量实型常量小数形式比如3.14、5.0、-0.6注意5.0是实型5是整型字符常量用单引号「」包裹的单个字符比如a、5、\n换行符只能有一个字符字符串常量用双引号「」包裹的多个字符比如abc、123、a末尾会自动加上「\0」结束标志这是和字符常量的核心区别。3变量可修改的值核心规则变量必须先定义后使用定义时可以初始化赋值也可以后续赋值未定义直接使用会报错。定义格式数据类型 变量名; 初始化格式数据类型 变量名 初始值;4标识符命名规则选择/填空必考标识符是变量名、函数名、数组名的统称必须遵守4条规则违反则报错由字母A-Z、a-z、数字0-9、下划线_组成不能以数字开头比如123abc是错误的abc123、_abc是正确的区分大小写比如a和A是两个不同的标识符变量a和变量A是两个不同的变量不能使用C语言关键字比如int、char、if、for等不能用作变量名。2. 格式规范变量定义同一类型的变量可以同时定义用逗号分隔比如int a, b, c 10; a、b未初始化c初始化为10常量书写字符常量必须用单引号字符串常量必须用双引号不能混用比如a是正确的a是字符串不是字符标识符命名期末推荐“见名知意”比如用age表示年龄int age;用score表示分数double score;避免用a、b、c等无意义的变量名不报错但不规范判分可能扣分。3. 易错混淆点高频丢分点混淆「字符常量」和「字符串常量」 ❌ 错误char c a; a是字符串不能赋值给char类型变量 ✅ 正确char c a; 单引号单个字符变量未定义直接使用比如直接写a 5; 未写int a; 编译报错标识符命名违规比如int 123a; 以数字开头、int if; 使用关键字、int a-b; 包含减号不是标识符允许的字符混淆「0」「0」「\0」 - 0整型常量ASCII码值为48 - 0字符常量ASCII码值为48和0的ASCII码值相同但类型不同 - \0字符串结束标志ASCII码值为0不是字符0。4. 期末例题例题1以下变量定义中正确的是 A. int 1num 5; B. char a c; C. double score 95.5; D. int for 10;答案C 解析A选项以数字开头违规B选项字符常量和变量名写反格式错误D选项使用关键字for作为变量名违规C选项正确。例题2以下关于常量的说法错误的是 A. 5是字符常量5是整型常量 B. abc是字符串常量末尾有\0 C. 3.14是float类型常量 D. \n是字符常量换行符答案C 解析3.14默认是double类型常量若要表示float类型需加后缀f比如3.14fC选项错误。三、运算符与表达式易错重灾区阅读/编程必考运算符是C语言中用于计算、判断的核心期末考查重点是「算术运算符」「自增自减运算符」「逻辑运算符」易错点集中在运算规则、优先级以及“短路特性”也是程序阅读题的高频考点。1. 核心知识点详解按考查频率排序1算术运算符、-、*、/、%、-、*和数学中的加减乘规则一致无难点/除法重点易错点整数相除结果为整数舍去小数部分不是四舍五入只要有一个操作数是实型float/double结果就是实型。 举例5/2 2整数相除、5.0/2 2.5有实型操作数、5/2.0 2.5%取余/取模重点易错点① 只能用于整数两个操作数必须是int、long等整型实型不能用%② 结果的符号与被除数一致被除数是正结果为正被除数是负结果为负。 举例5%2 1、-5%2 -1、5%-2 1、-5%-2 -1。2自增自减运算符、--期末程序阅读题必考核心是“先用后加”和“先加后用”规则如下i后置自增先使用i的值再将i的值加1i前置自增先将i的值加1再使用i的值--同理i--先使用后减--i先减后使用。3逻辑运算符、||、!用于判断条件真假C语言中0表示假非0表示真重点是「短路特性」期末高频考点逻辑与两个条件都为真结果才为真短路特性左侧条件为假时右侧条件不执行因为无论右侧真假结果都是假||逻辑或两个条件有一个为真结果就为真短路特性左侧条件为真时右侧条件不执行因为无论右侧真假结果都是真!逻辑非取反真变假假变真比如!5 0!0 1。2. 格式规范表达式书写运算符两侧建议加空格比如a b不要写ab美观且不易出错自增自减运算符不要在同一表达式中多次使用比如a i i;结果不确定期末编程题避免这种写法取余运算确保两个操作数都是整数避免出现3.5%2这种错误写法。3. scanf与printf格式符期末必考百分号用法printf输出和scanf输入是期末编程题、阅读题的高频考点核心是「百分号格式符」匹配对应数据类型写错格式会导致输出乱码、输入失败重点记以下常用格式符大一期末够用1printf输出格式格式printf(格式控制串, 输出项);格式控制串中用「%格式符」表示输出对应类型的数据常用格式符及用法%d输出int类型整型比如printf(%d, 10); 输出10%c输出char类型字符比如char ca; printf(%c, c); 输出a%f输出float/double类型小数默认保留6位小数比如printf(%f, 3.14); 输出3.140000%lf输出double类型小数和%f通用期末编程题用%lf更规范%s输出字符串常量/字符数组比如printf(%s, abc); 输出abc补充技巧可指定小数位数比如printf(%.2f, 3.14); 输出3.14保留2位小数期末编程题常考。2scanf输入格式格式scanf(格式控制串, 输入项);核心注意输入项前必须加「」取地址符格式符必须和变量类型匹配常用格式符%d输入int类型比如int a; scanf(%d, a); 输入10a的值为10%c输入char类型比如char c; scanf(%c, c); 输入ac的值为a%f输入float类型比如float f; scanf(%f, f);%lf输入double类型比如double d; scanf(%lf, d); 易错点double输入必须用%lf用%f会出错%s输入字符串比如char str[10]; scanf(%s, str); 字符数组不用加数组名本身是地址。易错点printf中格式符和输出项类型不匹配比如int a10; printf(%f, a); 输出乱码scanf中输入项漏加比如int a; scanf(%d, a); 编译报错无法输入char类型输入时空格、回车会被当作有效字符比如先输入10再输入a会导致a接收回车符可在%c前加空格避免scanf( %c, c);4. 运算符优先级期末阅读题必考运算符优先级决定表达式的执行顺序不用死记所有优先级重点记以下高频优先级从高到低优先级高的先执行优先级相同按结合性执行多数从左到右括号()优先级最高先执行括号内的表达式比如(32)*420自增自减、--、逻辑非!优先级次之比如!53033i*2i1*2算术运算符*、/、%优先级高于、-比如35*231013不是8*216算术运算符、-比如10-329从左到右关系运算符、、、!、、比如325-1 → 54 → 真1逻辑运算符优先级高于||比如10||1 → 0||1 → 1赋值运算符优先级最低比如a325先执行32再赋值给a。易错点忽略优先级导致表达式计算错误比如误以为35*216实际是13解决方法不确定优先级时加括号()既规范又不易出错。5. 易错混淆点重中之重整数除法忘记“舍去小数”比如误以为5/2 2.5实际结果是2编程题中计算平均值、比例时容易因这个错误丢分%用于实型操作数比如float a3.5; int b2; printf(%d, a%b); 报错因为a是float类型自增自减运算顺序判断错误这是程序阅读题的主要丢分点记住“后置先用后加前置先加后用”忽略逻辑运算的短路特性比如int a1, b1; if(0 (b))b不会执行b的值仍然是1容易误以为b会变成2混淆「」和「」是赋值运算符是相等判断运算符比如if(a5) 是赋值a变成5条件永远为真不是判断a是否等于5这是期末最常见的逻辑错误。表达式书写运算符两侧建议加空格比如a b不要写ab美观且不易出错自增自减运算符不要在同一表达式中多次使用比如a i i;结果不确定期末编程题避免这种写法取余运算确保两个操作数都是整数避免出现3.5%2这种错误写法。期末例题阅读题/编程题高频例题1程序运行后输出结果是 #include stdio.h int main(void) { int a 5, b 2; printf(%d, %d\n, a/b, a%b); printf(%f, %d\n, 5.0/b, -5%b); return 0; }答案2, 12.500000, -1 解析a/b是整数相除5/22a%b5%215.0/b是实型除法结果为2.5printf用%f输出默认保留6位小数即2.500000-5%b被除数为负结果为-1用%d输出整型。例题2程序运行后a、b、c的值分别是 #include stdio.h int main(void) { int a 3, b 3, c; c a --b; return 0; }答案a4b2c5 解析a是后置自增先用a3再a变成4--b是前置自减先b变成2再用b2c325。例题3程序运行后b的值是 #include stdio.h int main(void) { int a 0, b 5; if(a (b--)) { b 10; } printf(%d, b); return 0; }答案5 解析a0假逻辑与左侧为假触发短路特性右侧b--不执行所以b仍然是5printf用%d输出整型b的值即5。四、流程控制语句核心考点全题型覆盖流程控制是C语言的“骨架”决定程序的执行顺序期末考查重点是「分支结构if-else、switch」和「循环结构for、while、do-while」题型涵盖选择、填空、程序阅读、编程大题易错点集中在“匹配规则”“穿透执行”“循环跳转”。一分支结构if-else、switch1. if-else语句必考编程大题高频知识点详解作用根据条件判断执行不同的代码块有三种基本形式单分支if(条件) { 代码块; } 条件为真执行代码块为假不执行双分支if(条件) { 代码块1; } else { 代码块2; } 条件为真执行代码块1为假执行代码块2多分支if(条件1) { 代码块1; } else if(条件2) { 代码块2; } else { 代码块3; } 依次判断条件满足哪个就执行哪个都不满足执行else。核心规则else与最近的、未配对的if匹配缩进不影响匹配规则这是高频易错点。格式规范条件必须用括号「()」包裹比如if(a5) 不能写if a5代码块建议用大括号「{}」包裹哪怕只有一条语句避免匹配错误期末判分更规范缩进一致比如用4个空格缩进美观且便于排查错误。易错混淆点else匹配错误比如下面的代码else会和第二个if匹配不是第一个if缩进不影响匹配// 易错写法 if(a5) if(b3) printf(yes); else // 和第二个if匹配不是第一个 printf(no);条件中用「」代替「」比如if(a5) 是赋值不是判断条件永远为真逻辑错误多分支else if顺序错误比如判断成绩等级先判断60再判断90会导致90分以上的成绩也被判定为“及格”正确顺序应该是从高到低判断。2. switch语句选择/阅读题高频知识点详解作用多分支判断适合“条件是固定常量”的场景比如菜单选择、成绩等级判断核心格式switch(表达式) { case 常量1: 代码块1; break; case 常量2: 代码块2; break; ... default: 代码块n; break; }核心规则switch后的表达式结果必须是整型或字符型不能是float、doublecase后必须是「常量表达式」比如1、a、32不能是变量比如case a: 是错误的break的作用跳出switch语句若没有break会发生「穿透执行」执行完当前case的代码后继续执行下一个case的代码直到遇到break或switch结束default当所有case都不匹配时执行default的代码可省略但建议加上避免遗漏。易错混淆点case后用变量比如int a1; switch(a) { case a: printf(yes); } 错误case后必须是常量忘记写break这是最常见的错误导致穿透执行比如下面的代码输入2会输出“23”int a; scanf(%d, a); switch(a) { case 1: printf(1); break; case 2: printf(2); // 忘记break case 3: printf(3); break; }switch表达式是实型比如switch(3.5) { ... } 错误表达式必须是整型或字符型。二循环结构for、while、do-while1. 三种循环的核心区别必考循环类型格式核心特点适用场景for循环for(初始化; 条件; 更新) { 循环体; }初始化、条件、更新集中写结构清晰循环次数已知比如循环10次while循环while(条件) { 循环体; 更新; }先判断条件条件为真才执行循环体循环次数未知比如输入0时结束do-while循环do { 循环体; 更新; } while(条件);先执行一次循环体再判断条件至少执行一次循环体必须执行一次的场景比如登录验证2. 循环跳转语句break、continue核心区别期末高频易错点break跳出「本层循环」不再执行本层循环的后续代码直接进入循环外的代码continue结束「本次循环」跳过本次循环的后续代码直接进入下一次循环的条件判断。3. 循环嵌套编程大题必考核心一个循环里面包含另一个循环外层循环控制“行数”内层循环控制“列数”经典场景打印九九乘法表、打印三角形*组成。注意嵌套循环中break和continue只作用于本层循环不影响外层循环。4. 易错混淆点do-while循环忘记加结尾的分号do-while的格式是do { ... } while(条件); 末尾的分号不能漏while循环和do-while循环的区别误以为while循环也至少执行一次实际while循环条件为假时一次都不执行循环条件写错比如for循环中把条件写成i10赋值导致循环变成死循环条件永远为真break和continue混淆比如想结束本次循环却用了break导致直接跳出整个循环循环嵌套中内层循环的更新语句写错比如打印九九乘法表时内层循环的变量没有重置导致打印错乱。5. 期末例题编程/阅读题高频例题1if-else编程题编写程序输入一个整数判断其是否为偶数若是输出“偶数”否则输出“奇数”。#include stdio.h int main(void) { int num; printf(请输入一个整数); scanf(%d, num); // 正确写法用判断代码块用大括号 if(num % 2 0) { printf(偶数\n); } else { printf(奇数\n); } return 0; }例题2switch阅读题程序运行后输入3输出结果是 #include stdio.h int main(void) { int a; scanf(%d, a); switch(a) { case 1: printf(A); break; case 2: printf(B); case 3: printf(C); break; default: printf(D); } return 0; }答案C 解析输入3匹配case 3执行printf(%c, C); 题干中printf(C)本质是输出字符C用%c格式符遇到break跳出switch所以输出Ccase 2没有break但不影响因为没有匹配case 2。例题3循环编程题用for循环打印九九乘法表经典期末题#include stdio.h int main(void) { // 外层循环控制行数1-9 for(int i1; i9; i) { // 内层循环控制列数1-i for(int j1; ji; j) { printf(%d*%d%d\t, j, i, j*i); } printf(\n); // 每一行结束换行 } return 0; }例题4循环跳转题程序运行后输出结果是 #include stdio.h int main(void) { for(int i1; i5; i) { if(i 3) { continue; // 结束本次循环进入下一次 } printf(%d , i); } return 0; }答案1 2 4 5 解析i3时执行continue跳过本次循环的printf(%d , i); 直接进入下一次循环i4所以不打印3最终用%d格式符依次输出1、2、4、5。五、期末备考提醒以上知识点是大一C语言期末「程序结构流程控制」的必考内容覆盖选择、填空、阅读、编程全题型重点掌握程序结构main函数的唯一性、分号和注释的规范数据类型常量/变量的使用、标识符命名规则尤其是字符和字符串的区别运算符整数除法、取余、自增自减、逻辑短路特性避开和的混淆流程控制if-else的匹配规则、switch的穿透执行、三种循环的区别、break和continue的区别。建议多做例题和真题重点练习程序阅读题和经典编程题判断奇偶、打印图形、求和等吃透易错点就能轻松应对期末考结语如果对你有帮助请点赞关注收藏你的支持就是我最大的鼓励
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2480526.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!