版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《C语言程序设计》期末复习完全手册(直接使用版)第一部分:考试题型与分值分布(通用)题型题量分值主要考查范围策略选择题20-25题20-30分语法规则、运算符优先级、标识符规则、基本概念牢记语法规定和概念辨析填空题10-15题10-15分程序完善、语句填空、表达式计算理解程序逻辑,注意分号、括号等细节程序阅读题3-5题15-20分循环执行、数组操作、函数调用、指针运算逐句模拟执行,画变量变化表程序填空题2-3题10-15分补充关键语句,完成特定功能根据上下文和功能要求填入完整语句编程题2-3题20-30分简单算法实现、数据处理、结构体应用先写框架再细化,注意边界条件和格式第二部分:C语言基础知识速查2.1程序结构与基本语法概念说明源文件扩展名.c编译预处理命令#include、#define主函数intmain()或voidmain(),程序执行的入口语句结束每条语句后必须有分号“;”注释单行://注释内容;多行:/*注释内容*/C程序基本结构模板:#include<stdio.h>
intmain(){
//变量定义和程序体
return0;
}2.2标识符与关键字项目说明标识符由字母、数字和下划线组成,且首字符不能是数字,区分大小写关键字32个保留字,如int、float、if、else、while、for、return等,不能用作标识符第三部分:数据类型与运算符速查3.1基本数据类型类型关键字字节数(常见)说明整型int4存放整数短整型short2范围较小的整数长整型long4或8范围较大的整数字符型char1存放字符,本质是整型(ASCII码)单精度浮点型float4存放小数,有效数字约6-7位双精度浮点型double8存放小数,有效数字约15-16位常用ASCII码:'A'=65,'a'=97,'0'=48,空格=32,回车=103.2变量定义与赋值inta;//变量定义
a=10;//赋值
intb=20;//定义同时初始化变量命名规则:见标识符规则。不能用关键字。区分大小写(Sum与sum不同)。3.3格式化输入输出printf格式控制符:格式符含义示例%d有符号十进制整数printf("%d",123);%f浮点数(小数形式)printf("%f",3.14);%.2f保留两位小数printf("%.2f",3.1415);→3.14%c一个字符printf("%c",'A');%s字符串printf("%s","hello");%p指针地址printf("%p",p);\n换行printf("Hello\nWorld");scanf格式控制符:格式符含义注意%d输入整数scanf("%d",&a);必须有&%f输入floatscanf("%f",&f);%lf输入doublescanf("%lf",&d);double用%lf%c输入字符scanf("%c",&c);注意前面空格吸收缓冲区回车3.4常考运算符运算符类型运算符优先级(数字越小越高)括号()1一元运算符!,++,--,+,-(正负号)2算术运算符*,/,%3+,-4关系运算符>,<,>=,<=6==,!=7逻辑运算符&&11||12赋值运算符=,+=,-=等14易错点:==是等于判断,=是赋值,条件判断中不要混淆。i++先使用后自增;++i先自增后使用。整数除法:5/2结果是2(舍去小数)。5.0/2才是2.5。%两侧必须是整数。第四部分:三种控制结构速查4.1顺序结构程序按语句书写顺序依次执行。4.2选择结构if语句if(条件){
语句块;
}elseif(条件2){
语句块;
}else{
语句块;
}switch语句switch(整型或字符型表达式){
case常量1:语句;break;
case常量2:语句;break;
default:语句;break;
}注意:case后必须是整型常量;没有break会继续向下执行(穿透现象)。4.3循环结构while循环while(条件){
循环体;
}
//先判断,后执行;可能一次都不执行do-while循环do{
循环体;
}while(条件);
//先执行一次,后判断;至少执行一次for循环for(初值;条件;增量){
循环体;
}执行顺序:初值→判断条件→(真)执行循环体→增量→判断条件→...→(假)退出循环。循环控制语句:break;跳出整个循环。continue;跳过本次循环剩余部分,进入下一次循环。第五部分:数组速查5.1一维数组定义与初始化:inta[5];//定义长度为5的数组
intb[5]={1,2,3,4,5};//全部初始化
intc[5]={1,2};//部分初始化,剩余为0
intd[]={1,2,3};//自动确定长度为3数组元素访问:a[0]到a[n-1],下标从0开始。5.2二维数组定义与初始化:inta[2][3];//2行3列
intb[2][3]={{1,2,3},{4,5,6}};
intc[2][3]={1,2,3,4,5,6};//按行存放遍历二维数组:双层循环,外层控制行,内层控制列。5.3字符数组与字符串定义与初始化:charstr1[10]={'H','e','l','l','o','\0'};
charstr2[10]="Hello";//自动添加'\0'字符串处理函数(#include<string.h>):函数功能示例strlen(str)求字符串长度(不含'\0')strlen("abc")=3strcpy(dest,src)字符串复制strcpy(a,b);strcat(dest,src)字符串连接strcat(a,b);strcmp(s1,s2)比较:相等返回0strcmp("abc","abd")<0第六部分:函数速查6.1函数定义与调用返回值类型函数名(形参列表){
声明部分;
语句部分;
return表达式;//返回值类型需匹配
}调用:函数名(实参列表);实参与形参:个数相同、类型对应、顺序一致。参数的传递是单向值传递(传递的是实参的副本),在被调函数中修改形参不影响实参的值。6.2函数声明(函数原型)将函数定义写在调用之前,或提前声明:intmax(inta,intb);//函数原型声明6.3递归函数函数体内调用自身。必须有递归结束条件,否则无限递归导致栈溢出。典型例题:求阶乘n!,斐波那契数列。6.4变量的作用域与生命周期类别定义位置作用域生命周期局部变量函数内部所在函数或复合语句进入函数创建,退出函数销毁全局变量函数外部从定义处到文件结束程序开始创建,程序结束销毁static局部变量函数内部加static同局部变量同全局变量(只初始化一次)第七部分:指针速查7.1指针基本概念指针变量用于存储地址。inta=10;
int*p=&a;//p指向a
//*p表示取出p指向的变量(即a本身)
//&a表示变量a的地址两个重要运算符:&取地址运算符*指针运算符(间接引用)7.2指针与数组数组名就是数组首元素地址。inta[5]={10,20,30,40,50};
int*p=a;//p指向a[0]
//a[i]等价于*(p+i)等价于*(a+i)7.3指针作函数参数在函数中通过指针形参可以间接修改实参的值。voidswap(int*x,int*y){
intt=*x;
*x=*y;
*y=t;
}
//调用:swap(&a,&b);scanf传址原因:因为函数需要修改实参变量的值,所以传入变量的地址。7.4字符指针char*p="Hello";//指针指向字符串常量(只读,不可修改)
charstr[]="Hello";//字符数组(可修改)第八部分:结构体速查8.1结构体定义与使用structStudent{
intid;
charname[20];
floatscore;
};//分号勿忘
structStudents1;//定义结构体变量
structStudents2={1001,"张三",95.5};
//成员访问:s1.id=1002;strcpy(,"李四");s1.score=88.0;8.2结构体与指针structStudents={1001,"王五",90};
structStudent*p=&s;
//通过指针访问成员:(*p).id或p->id(常用)8.3typedef简化类型名typedefstructStudent{
intid;
charname[20];
floatscore;
}Stu;
//之后可用Stu代替structStudent第九部分:文件操作速查9.1文件指针与打开关闭FILE*fp;
fp=fopen("文件名","模式");
if(fp==NULL){/*打开失败处理*/}
//...文件操作...
fclose(fp);模式含义"r"只读,文件必须存在"w"只写,新建或覆盖"a"追加,文件存在则末尾添加"r+"读写,文件必须存在"w+"读写,新建或覆盖"a+"读写,文件存在则末尾添加9.2常用文件读写函数函数格式说明fputc(ch,fp)写一个字符ch为字符或字符变量fgetc(fp)读一个字符返回读取的字符fputs(str,fp)写一个字符串str可以是字符串常量或字符数组fgets(str,n,fp)读一行(n-1个字符)遇到'\n'或读完n-1个字符停止,自动加'\0'fprintf(fp,"格式",变量)格式化写类似printf,前面多一个文件指针fscanf(fp,"格式",&变量)格式化读类似scanf,前面多一个文件指针第十部分:常用算法速查算法核心思路累加求和设初值sum=0,循环:sum+=项阶乘循环递乘,或递归n!=n*(n-1)!判断素数从2到sqrt(n)逐一判断能否整除;若都不能则是素数最大公约数辗转相除法:while(b!=0){t=a%b;a=b;b=t;}最后a为答案最小公倍数两数积÷最大公约数冒泡排序双层循环,相邻两两比较交换,每趟把最大/最小放末尾选择排序每趟选最小元素下标,与当前趟首元素交换数组元素逆置i从前向后,j从后向前,交换a[i]和a[j],直到i>=j字符串长度用while循环计数到'\0',或用strlen()字符串复制while循环将源串每个字符赋给目标串,最后加'\0'第十一部分:高频选择题题库(40题)模块一:基本概念与语法题号题目选项A选项B选项C选项D答案1以下合法的标识符是2a_abcinta-bB2C语言源程序文件的扩展名为.cpp.c.obj.exeB3下列哪个是C语言的关键字mainincludeintprintfC4设inta=5;则表达式a++的值是564不确定A5设inta=5,b=2;则a/b的结果是2.5230B6能正确表示“x属于[1,10]”的C表达式是1<=x<=101<=x&&x<=101<=x||x<=101=<x=<10B模块二:数据类型与运算符题号题目选项A选项B选项C选项D答案7设inta=10;printf("%d",++a);输出9101112C8设doublex;用scanf输入x的正确格式是%d%f%lf%cC9设有inta=3,b=5;则a<b&&a>b的结果是10truefalseB10设intn=10;则sizeof(n)的值是1024不确定C11执行printf("%d",3>5);输出为1035B12C语言中,要求运算对象必须是整型的运算符是/+%*C模块三:数组与字符串题号题目选项A选项B选项C选项D答案13设inta[10];该数组最后一个元素是a[9]a[10]a[0]a[-1]A14以下正确定义一维整型数组并初始化的是inta[5]={1,2,3,4,5,6};inta[5]={1,2,3};inta[5]=(1,2,3);inta={1,2,3};B15设intaHYPERLINK3={1,2,3,4,5,6,7,8,9};则aHYPERLINK1的值是2356D16设chars[10]="ABCD";printf("%d",strlen(s));输出41059A17判断字符串a和b是否相等,应使用a==ba=bstrcmp(a,b)==0strcpy(a,b)C模块四:程序结构题号题目选项A选项B选项C选项D答案18设inta=5;if(a=6)printf("yes");elseprintf("no");输出yesno编译错误无输出A19在switch语句中,每个case后一般要跟continuebreakexitreturnB20以下循环执行次数为:for(i=0;i<10;i++);91011无限B21要跳出当前循环体,应使用continuebreakexitreturnB22设inta=10;while(a>0)a--;循环结束后a的值为1010-1C模块五:函数与指针题号题目选项A选项B选项C选项D答案23C语言中函数返回值的类型由谁决定调用时临时决定return表达式类型函数定义时指定的类型编译系统决定C24关于C语言函数的参数传递,说法正确的是可以双向传递只传值,无法改实参形参改变必改实参是引用传递B25设inta=10,p=&a;则p的值是p&a10地址C26设inta=5,b=3;swap(&a,&b);函数swap通过指针交换两数,则a和b的值变为5,33,55,53,3B27设inta[5]={1,2,3,4,5},p=a;则(p+2)的值是1234C模块六:综合题号题目选项A选项B选项C选项D答案28以下定义结构体正确的是struct{intx;floaty;}structA{intx;floaty}structA{intx;floaty;};struct{intx;floaty}A;C29设structStu{intid;charname[20];}s={1001,"小明"};访问id的正确方式是s.ids->idStu.idStu->idA30打开文件用于读取,若文件不存在则报错,模式应为"w""r""a""w+"B31以下能正确输出整型变量a值的语句是printf("%s",a);printf("%d",a);printf("%f",a);printf("%c",a);B32执行c=getchar();从键盘输入ABC<回车>后,c的值是'A''B''C''\n'A33用fopen打开文件进行写入操作,若原文件存在则内容被覆盖,模式为"a""r+""w""a+"C34设inta=0;while(a<5){a++;if(a==3)continue;printf("%d",a);}输出124512451245无输出B35下列语句中,可用于跳出循环的是stopbreakpausequitB36设有定义inta;能够正确输入a的语句是scanf("%d",a);scanf("%d",&a);scanf("%d",*a);scanf("%f",&a);B37设inti;for(i=1;i<10;i++);printf("%d",i);输出i的值是91011不确定B38若结构体变量通过指针p访问,正确引用成员id的写法是p.idp->id*p.id(*p).idB和D均对(侧重p->id)39字符串结束标志是'\n''\0''0'EOFB40以下关于continue的说法正确的是结束整个循环结束本次循环进入下一次结束程序运行同breakB第十二部分:程序阅读题示例例题1:#include<stdio.h>
intmain(){
inta=5,b=3,c;
if(a>b){
c=a;
a=b;
b=c;
}
printf("%d,%d",a,b);
return0;
}运行结果:3,5例题2:#include<stdio.h>
intmain(){
inti,s=0;
for(i=1;i<=5;i++)
s+=i;
printf("%d",s);
return0;
}运行结果:15例题3:#include<stdio.h>
intmain(){
inta[5]={10,20,30,40,50};
int*p=a;
printf("%d\n",*(p+3));
return0;
}运行结果:40例题4:#include<stdio.h>
intf(intn){
if(n==1)return1;
returnn*f(n-1);
}
intmain(){
printf("%d",f(4));
return0;
}运行结果:24例题5(字符串操作):#include<stdio.h>
#include<string.h>
intmain(){
chara[20]="Hello";
charb[20]="World";
strcat(a,b);
printf("%d",strlen(a));
return0;
}运行结果:10第十三部分:程序填空题示例例题1:求1到n的和#include<stdio.h>
intmain(){
intn,i,sum=0;
scanf("%d",&n);
for(i=1;____①____;i++){
sum=____②____;
}
printf("sum=%d\n",sum);
return0;
}答案:①i<=n②sum+i例题2:冒泡排序(升序)voidbubbleSort(inta[],intn){
inti,j,t;
for(i=0;i<n-1;i++){
for(j=0;____①____;j++){
if(____②____){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}答案:①j<n-1-i②a[j]>a[j+1]例题3:结构体数组输出#include<stdio.h>
structStudent{
intid;
charname[20];
floatscore;
};
intmain(){
structStudents[3]={{101,"张三",88.5},
{102,"李四",92.0},
{103,"王五",76.5}};
for(inti=0;i<3;i++){
printf("学号:%d,姓名:%s,成绩:%.1f\n",
____①____,____②____,____③____);
}
return0;
}答案:①s[i].id②s[i].name③s[i].score第十四部分:编程题备考要点与示例14.1编程题解题步骤读题,明确输入和输出。定义变量和数据结构(数组、结构体)。编写主框架(main函数和核心流程)。调用函数或使用循环/判断实现算法。处理边界条件(最大最小、空输入、负数等)。输出结果,注意格式。14.2编程题示例例题1:判断素数#include<stdio.h>
intisPrime(intn){
if(n<=1)return0;
for(inti=2;i*i<=n;i++)
if(n%i==0)return0;
return1;
}
intmain(){
intx;
scanf("%d",&x);
if(isPrime(x))
printf("YES\n");
else
printf("NO\n");
return0;
}例题2:统计字符类型#include<stdio.h>
intmain(){
charch;
intletter=0,digit=0,other=0;
while((ch=getchar())!='\n'){
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
letter++;
elseif(ch>='0'&&ch<='9')
digit++;
else
other++;
}
printf("字母:%d,数字:%d,其他:%d",letter,digit,other);
return0;
}例题3:结构体数组平均分计算#include<stdio.h>
typedefstruct{
intid;
charname[20];
floatscore;
}Stu;
intmain(){
Stus[3]={{1,"A",85},{2,"B",90},{3,"C",78}};
floatsum=0;
for(inti=0;i<3;i++)
sum+=s[i].score;
printf("平均分:%.2f",sum/3);
return0;
}第十五部分:考前速记纸═══════════════════════════════════════════
C语言程序设计考前速记
═══════════════════════════════════════════
【输入输出】
int:scanf("%d",&a);printf("%d",a);
float:scanf("%f",&f);printf("%f",f);
double:scanf("%lf",&d);printf("%f",d);
char:scanf("%c",&c);printf("%c",c);
注意&符号,dou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年城市文化空间活力提升
- 诉服中心服务外包合同
- 乡村环境卫生外包合同
- 为啥不取消劳务外包合同
- 家用充电桩安装外包合同
- 清洁工劳务外包合同
- 物业保洁保安外包合同
- 承接产品研发外包合同
- 江门国企劳务外包合同
- 壁纸工人施工外包合同
- 《思想道德与法治》学习法治思想 提升法治素养-第六章
- GB/T 7025.1-2023电梯主参数及轿厢、井道、机房的型式与尺寸第1部分:Ⅰ、Ⅱ、Ⅲ、Ⅵ类电梯
- 青海省循化县谢坑铜金矿(二、四釆区)矿山地质环境保护与土地复垦方案
- Cpk 计算标准模板
- FANUC O加工中心编程说明书
- 中铁某局集团责任成本管理实施细则试行
- 滕王阁序注音全文打印版
- 有机肥市场推广方案模板PPT
- GB/T 9341-2008塑料弯曲性能的测定
- GB/T 6451-2015油浸式电力变压器技术参数和要求
- GB/T 6414-1999铸件尺寸公差与机械加工余量
评论
0/150
提交评论