C语言程序设计
一、C程序结构
目录
目录
2、值与某常量表达式的值相等,转常量表达式后面语句执行;直到遇break或switch结束时退出,期间不再进行同级别case判断。
3、若均不相等,执行default部分,若无default,则switch语句什么也不做。
考点一 C语言特点,C程序基本构成
- 数据类型丰富
- 运算符丰富
- 是一种中级语言(高级) //包含了中级和高级的特性
- 数据类型检查不严格 //int和char通用 对下标的越界不报错
2021.下列属于计算机中高级语言的是(D)
A.机器语言B.符号语言 //伪指令 C.汇编语言 D.C语言
- 一个C程序由一或多个源文件组成;
- 每个源文件由编译预处理命令和若干函数组成;
- 函数是C程序的基本组成单位(非语句) ;
- 一个C程序必须且只能包含一个main函数;
- C程序从main函数开始执行,并最终结束于main函数;
- main函数位置任意;
2018.下列关于C语言程序结构的说法中,不正确的是()
A.一个程序由一个或多个源程序文件组成
B. 函数是C程序的主要组成部分
C.程序总是从main函数开始执行的
D.C语言本身提供了许多输入输出语句 //没有输入输出函数 I/O都是通过函数实现的
2021.在一个C程序中,( )。
A. main函数必须出现在固定位置
B. main函数可以出现在任何地方
C.main函数必须出现在所有函数之前
D.main函数必须出现在所有函数之后
考点二 注释
·注释用于对程序进行解释说明,不被编译、执行;.
注释的两种方式://-单行注释、/*-块注释-*/;
C语言程序的注释可以出现在程序中的任何地方,它总是以()符号作为开始标记,以()符号作为结束标记
2020,以下叙述正确的是( )。
A.在C程序中,main函数必须位于程序的最前面
B.C程序每行只能书写一条语句
C.在C程序中,注释只能位于一条语句的后面
D.C语言本身提供了许多输入输出语句
考点三 C程序执行过程
- 编译:对每个源文件进行语法分析查错,翻译生成目标程序(*.obj);
- 链接:将多个目标程序链接为一个程序,生成可执行程序(*.exe) ;
- 执行:程序运行;
例.以下说法错误的是()
A.高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式
B.计算机只能处理由0和1的代码构成的二进制指令或数据
C.C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件//.obj link .exe
D.每一种高级语言都有它对应的编译程序
二、常量、变量与数据类型
考点一 标识符
量、变量、函数等的名字。标识符是编程者自定义的符号,用来在程序中标识符号常
标识符命名及注意事项
- 标识符只能由字母、数字、下划线组成,且第一个字符必须是字母或下划线,不能为数字;
- 标识符不能使用系统关键字(保留字) ,如if , char , default ,break;
- C语言中标识符区分大小写,numNum,char是C语言的保留字,不能作为标识符,但Char可以作为标识符;
- 输入输出、字符串函数等不是C语言自身提供,可作为合法标识符;main, define,include也为合法标识符; //函数 预处理 不是关键字
2019.以下C语言标识符定义正确的是()
A.switch B._for C.3count D.do-while
2018,在计算机高级语言中,用来对变量、符号常量名、函数、数组、类型等命名的有效字符序统称为标识符,下列选项中都为正确标识符的是()。
A. M.D.John, _abc
B.3sum, a123
C. total, abc321
D.$123, bb$
考点二 常量正确表示
(1)整型常量的3种表示:
掌握每种表示法的正确及错误写法: 32L、 0762、 Oxfac 十进制:12、20L、-326
八进制:前缀为0,数字由0-7组成,如0712
十六进制:前缀为0x,数字由0-9、a-f组成,如Oxff72八进制、十六进制没有负数的概念A-F
#include <stdio.h>
int main() {
int a=-1;
printf("%d,%o,%x,%u",a,a,a,a); //十进制,八进制,十六进制,无符号整数
return 0;
}
//没有 负数的概念
2)实型:实数或浮点数,只采用十进制,两种表示形式
十进制小数形式: 123.0 , 123. //必须带小数点
指数形式:aEn或aen
说明: a为十进制数(整数、实数) , n为十进制整数, aEn表示的数为 a*10n
口诀:e前e后需有数,e后为整数!
3)字符常量:单引号引起的一个字符,分2类
普通字符:'a'、'o'
转义字符:反斜线为前缀,后跟1或几个字符,
两种形式:实现特定功能:如'\n'、'\t'、'\b'、'\r'
'\n' 换行
'\t' 制表位
'\b' 退格
'\r' 回车
ASCII 128个字符 前32个不可显示的控制字符
表示一个字符:两种写法
' \ddd' : 1到3位 八进制数,如\101'表示A
\xhh': 1到2位 16进制数('\x'为前缀)
4)字符串常量:用双引号("")括起来的字符序列。
存储:每个字符串尾自动加一个 ‘\n’作为字符串结束标志
注意:字符常量与字符串常量不同:
‘a’与“a”不同, //字符a 和字符串a
'0',“0”,0,‘0’区别
'0' =48 一字节 "0" = 48 0 二字节 0 = 0 0 两个字节 '\0' = 0 一个字节
5)能理解和区分常量的正确表示和错误写法例:
'0'、'02'、102'、 072、 10723“\083 "、3.12E-3.5, e+5、 078, 3FH
正确写法: '0‘、'\02’、072、"\083"、其他为错误。
6)符号常量(宏定义)
7)地址常量(数组名)
知识点:
(1)每一种基本数据类型都有其常量形式。
(2)整型常量默认是"int"型的。如:123,在内存中按补码存放
(3)实型常量默认是"double"型的。如:1.56
(4)字符型常量包括转义字符。
(5)字符型数据在内存中按其ASCII码值存放。
(6)C语言中字符数据和整型数据可以通用
2019.以下合法的常量表达式是()
A.'\0'
B.018
C.5E3.5
D.'loveC '
2018 .在C语言中,语句printf("abc123\rdef"); 执行后屏幕上的显示结果为()A.abc123 B.abc123def C.def123 D.def
2017.下列整型常量中,不合法的整型常量是()
A.256
B.0x7a8f
C.0592
D.0X123
考点三 变量定义
- [存储类型]数据类型 变量名1,变量名
- 变量三要素:变量名,变量类型,变量值
- 正确理解:变量与数据类型的关系、变量与内存空间、数,据类型与变量内存空间大小、变量名与变量地址关系;
- .变量特性:喜新厌旧,取之不尽。
- 变量必须“先定义,后使用”。
- 相同作用域的变量不能同名,不同作用域的变量可同名;
- 变量初始化; //定义同时赋值
正确和错误的变量定义几种形式
int a,b; float y://正确,同类型变量用逗号分开,不同类型用分号分开
int a,b float y,b:/错误
int ab; float y://错误
int a,bfloat y;//错误
int a,b; float y;//错误
2021. 以下能正确定义且赋初值的语句是()
A. char a=b='a'; //只能存放一个字符
B. char c=65; //正确 相当于把 A 传给了C
C. char a,b=a; // 随机数,赋值没有意义
D .char c="a"; //字符串不能赋值给字符变量
考点四 整型与字符型通用
- 字符量可参与算术、关系、逻辑等运算
- 字符常量内存中以ASCII码的二进制形式存在,同整型类似,C语言允许字符量参与运算,运算时以其ASCII码参与,如int x='a'+3;相当int x=97+3;
- 英文字母大小写相差32:'A'为65,'a'为97,'b'为98,其他依次类推。
- 区分:0、'0'、\0'、"0",'\٥'ASCII为O,'8'-'0'即8
//字符型数字转换成正数,也可以把整数转换成字符
//整数转换成字符 就 + '0'
//字符转换数字-'0'
2019.如下程序的输出结果是( )
#include <stdio.h>
void main()
{
char c='a';
printf("%c\n",'H'+(c-'h'));
}
A.A B.a C.H D.h
三、运算符与表达式
C语言一共有34个运算符,记这些运算符时从以下几个方面记:
运算符的书写形式;
运算符的运算规则;(两个整数相除,结果为整数)
所能进行的操作数;(取余运算符%,操作数只能是整数)
优先级和结合性;
a+b*c //要考虑优先级问题
考点一 算术运算符
- 两个整数相除的结果为整数。
5/3=1,1.0/2.0=0.5 //整数除法为整数 小数除法为小数 - %要求参加运算的运算对象为整数,结果也是整数。
8%3,结果为2
-8%3,结果为-2
被除数是正结果为正,被除数为负,结果为负 - *不能省略
- 理解和掌握%10为截取个位
/10为截掉个位
分解整数用的比较多
考点二 赋值运算符与表达式(3钟)
- 赋值运算符: = ,优先级倒数第二(逗号倒一)
- 赋值运算符左侧必须为变量,不能为常量或表达式,区别于数学式;
- 右结合;
int x,y,z;//定义
x= y=z=3;//赋值
int x=y=z=3; X //定义要逐个定义逐个赋值
带数据类型的叫做定义
不带数据类型的叫做 使用
4、区分赋值运算和逗号运算:x=3,y=5; x=(3,y=50);
5、复合赋值运算符:y+=y*=3+6;等价于y = y* (3+6);
++(--)只能是变量,不能是常量,表达式 可以是混合运算
2019 .已知int y=10:则执行y+=y-=y-y;后y的值是()
A.10 B.20 C.30 D.40
#include <stdio.h>
void main()
{
int a = 10;
a +=a -= a-a;
printf("a = %d", a);
}
2018. 设有语句 int a=3; 则执行了 a*=a+=a-2; 后为()
A.3 B.4 C.16 D.9
#include <stdio.h>
void main()
{
int a = 3;
a *=a += a-2;
printf("a = %d", a);
}
考点三 关系与逻辑运算符等价形式
- > < >= <= == !=
- 优先级:< <= > >= —— == !=
算术运算符 → 关系运算符赋值→ 赋值 - 关系表达式的值为一个逻辑值,即“真”用“1”表示或“假”用“0”表示。
int x=4,y; y=2<x<6;则y值?
#include <stdio.h>
void main()
{
int x=4,y;
y=2<x<6;
printf("%d",y);
}
- ! && ||
- 优先级:!→&&→||
! 算术运算符 关系运算符 && || 赋值 - 知识点
运算时:所有非0值(包括负数)均“真”,0表示“假”
结果:真为1,假为0
2)若变量c为char型,能正确判断c为大写字母的表达式写法:
#include <stdio.h>
void main()
{
char c;
scanf("%c",&c);
if (c >= 'A' && c <= 'Z') {
printf("你输入的是大写字母");
}else{
printf("你输入的是小写字母");
}
}
判断c为小写的程序段
#include <stdio.h>
void main()
{
char c;
scanf("%c",&c);
if ((c >= 'a') && (c <= 'z')) {
printf("你输入的是小写字母");
}else{
printf("你输入的不是小写字母");
}
}
2019.以下关于逻辑运算符两侧运算对象的叙述正确的是( )
A.只能是整数0或1
B.只能是整数0或非0
C.只能是整数0或正整数
D.可以是任意合法表达式
2019 .若有int x=1,y=2,z;则表达式z=(x==y)的值是
A.0 B.1 C.true D.flase
#include <stdio.h>
void main()
{
int x=1,y=2;
int z=(x==y);
printf("%d",z);
}
考点四 短路规则
- a&&b :有假则假,全真才真。
求解——如a为真,才判断b的值;如a为假则不再判断b; - allb:有真则真,全假才假。
求解——如a为假,才判断b的值;如a为真则不再判断b; - 注意:优先级在短路规则中失效!
若a=3,b=1;执行a++1l--b后,a,b的值?
#include <stdio.h>
void main()
{
int a=3,b=1;
if(a++||--b){
printf("%d%d",a,b);
}
}
例:a = 2; b = 3; c = 4a>1|| b++ >2 ||c--!=0
#include <stdio.h>
void main()
{
int a=2, b=3,c=4;
if(a>1||b++>2||c--!=0){ //遇真则真 全假才假 a>1 成立为1 不继续往下执行
printf("a=%d \nb=%d\nc=%d",a,b,c);
}
}
例: a=1,b=2,c=3,d=4,m=1,n=1(m=a>b)&&(n=c>d) m=?,n=?
已知整型变量m,n,a,b,c,d的值都是0,则执行(m=a==b) || (n=c==d);后m与n的值分别为()。
#include <stdio.h>
void main()
{
int m=0, n=0,a=0,b=0,c=0,d=0;
if((m=a==b)||(n=c==d)){
printf("m=%d \nn=%d",m,n);
}
}
已知w=1,x=2,y=3,z=4,a=5,b=6;则执行语句(a=w>x)&&(b=y>z)后, a,b的值为( )。
#include <stdio.h>
void main()
{
int w=1,x=2,y=3,z=4,a=5,b=6;
if((a=w>x)&&(b=y==z)){
printf("a=%d \nb=%d",a,b);
}
}
考点五 条件运算符
- 表达式1? 表达式2:表达式3
- 优先级比赋值运算符,逗号运算符高
- 右结合
- a> b?a:c> d?c:d
- 正确区分表达式1、2、3
+x=y+2?y++:y-=3;
b?a:c>d?c:d
+a>b? (max=a):(max=b);
若x=1,y=2;则表达式x++>=y?1:2的值为( )。
#include <stdio.h>
void main()
{
int x=1,y=2;
if(x++>=y?1:2){
printf("x=%d \ny=%d",x,y);
}
}
2018,已知a=1,b=2,c=3,d=4,x=5,则语句x=(a>b?a:c<d?c:d);执行后x的值为()。
#include <stdio.h>
void main()
{
int a=1,b=2,c=3,d=4,x=5;
if(x=(a>b?a:c<d?c:d)){
printf("x=%d",x);
}
}
考点六 逗号运算符
- 表达式1,表达式2,....,表达式n.
- 求解过程为:先求解表达式1,再求解表达式2,后求解表达式n。
- 逗号表达式的值是最后一个表达式的值.
- 优先级最低,具有左结合性。
考点七 位运算
- &(按位与) |(按位或) ^(按位异或) :相同为0,不同为1
~ (按位取反)<<(左移位)>>(右移位) - 只能是整型数据或字符型数据,不能是实型数据;
- 对字节或字内的二进制位进行的操作;
- 运算对象一律按二进制补码参加运算,并按位进行运算;
转换成二进制补码,进行位运算,根据要求转换进指数
四、输入输出
1、字符输入输出函数
一、字符输出函数
一般形式 putchar()
二、字符输入函数
一般形式 c=getchar() 无参数
三、说明:
(1)getchar()只能接受一个字符,以回车结束;
(2)连续输入多个字符时,中间不用空格或回车。
(3)常用方法while((ch=getchar())!=\n' )
2、格式输入函数
一、一般形式:
scanf(格式控制字符串,参数地址列表)
2、功能:作用是将从键盘读取的数据放入为变量分配的内容
scanf( "a=%d, b=%f", &a, &b);
普通字符原样输入
%d } 格式说明符
%f }
scanf的格式串中通常只包含普通字符或格式符(%s,%c等)。
scanf的第2个参数必须为变量地址,常用形式
-普通整型变量或数组示素: scanf("%d",&x);
-普通字符变量: scanf("%c",&c);
- 字符数组:字符数组可整体赋值, scanf("%s",ch); //ch为字符数组名,其值等于为数组分配的连续存储空间的首地址。
scanf的格式符:%d %c %f %lf %s
键盘输入数据时,除格式符外都要原样输入!
回车与空格(tab)都是有效字符。
int x; char c;
scanf("%d%c",&x,&c); //如何将10和字符a分别放入x和c?
①输入数据要加分隔符,如下情况认为结束。遇分隔符,宽度结束,非法输入;
3、格式输出函数与进制转换
一、一般形式:
printf(格式控制字符串,输出项表列)
2、功能:将输出项表列内容按照控制字符串要求输出
格式控制串:用双引号引起,包含三种信息。
1.格式说明符: %[修饰符]格式字符,指定数据输出格式、
区分%d,%u, %o,%x
2.普通字符:原样输出(包括空格) ;
3.转义字符:实现特定功能,如'\b'、'\r';
printf的格式符:
%d 十进制
%c 字符
%f 单精度 (实数float,double)小数点后保留6位
%m.nf 总共m位长度,小数点占用n位,右对齐左补空格
%-m.nf 总共m位长度,左对齐右补空格
%s
%m.ns
格式字符与输出项个数应相同,按先后顺序——对应;
普通变量、数值数组:逐个输出(循环),不能整体输出,输出项为变量或数组元素。
字符数组中存放字符串时(包含\0)可采用%s整体输出,此时,输出项为要输出的字符串的起始地址;
结构体变量必须逐个输出变量的成员,不能整体输出;
数据类型转换
1.自动转换 int3+double4.2=6.2
2.强制类型转换 x=(int)(a+b)
3.赋值转换 x=(int)a+b
4.函数返回值转换
#include <stdio.h>
void main() {
char a,b;
float d,f;
int i,k;
i=f=k=d=25/3;
printf("%3d%3d%5.2f%5.2f\n",i,k,f,d);
}
考点一 scanf正确使用
考点二 printf与进制转换
考点三 printf与转义字符
五、流程控制
1、条件语句
一、if语句(三种形式)
1、单分支语句:
if (表达式)语句; //表达式可以是任何表达式 0和非0 多条语句加{ }构成复合语句
2、双分支语句
if(表达式)
语句1;
else
语句2;
3、多分支语句
(1)一般形式:if_else_if 形式
if(表达式1)语句1;
else if (表达式2) 语句2;
else if(表达式3) 语句3;
[else 语句n;]
注意区别:if(a==5) 判断
if(a=5)赋值
if(a) if(a!=0)
(2) if嵌套形式
if ()
if() 语句1;
else 语句2;
else
if ()语句1;
else 语句2;
#include <stdio.h>
void main(){
int m,x=3,y=4,z=5;
if(x>y) m=x; //判断3大于4 不成立向下执行
if(y<z) m=y; //判断4小于五成立 将y的4赋值给m
else m=z;
printf("%d",m); //m=4
}
2、空语句与复合语句
空语句即只有一个分号,它通常用于占位,为以后补充代码预留,是合法的语句。
if (x); //合法 if (x) {}//合法 if (x) {}//合法
复合语句用于将一组语句视为 一条(一个整体) ,通常用于分支和循环中。
3、 switch+break
#include <stdio.h>
void main(){
switch (表达式) { //表达式只能是整型和字符型
case 常量表达式1:语句1;break;
case 常量表达式2:语句2;break;
case 常量表达式3:语句n;break;
default:语句;break;
}
}
二、功能:
1、计算表达式的值;
2、值与某常量表达式的值相等,转常量表达式后面语句执行;直到遇break或switch结束时退出,期间不再进行同级别case判断。
3、若均不相等,执行default部分,若无default,则switch语句什么也不做。
三、知识点
1、表达式的值必须是确定的,且应与case后面的常量为同类型变量,可以是字符型、整型;
不可是实型,实型没有精确值
2、case后面加空格,每个常量表达式后面有冒号;
3、每个case后面的常量值不能相同;
4、各个case后的语句可以是多个语句,可不用花括号括起来;
5、不能漏掉break(如果需要);
6、多case可共用同一组语句;
7、 case后的值决定了入口, break决定了出口
8、switch允许嵌套,break只能跳出紧包裹着switch结构;
9、如果所有语句都有break ,则很容易用if-else语句表示
#include <stdio.h>
void main(){
int x=1,y=0,a=1,b=0;
switch (x) //x为1
{case 1: //执行
switch (y) //y=0执行
{
case 0:b++; //b=1
case 1:a++;break;//b=1,a=2 跳出
case 2:b++;break;
}
case 2:a++;b++;break; //b=2.a=3
case 3:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
#include <stdio.h>
int main(void){
int a=2,b=1;
switch (a+1) //3
{ case 2:b=b+2;break;
case 3:b=b*3; //1*3=3
case 4:b=b*4;break; //3*4=12
case 5:b=b+5;
}
printf("b=%d",b);
}
#include <stdio.h>
int main(void){
int n='c';
switch (n) {
case 'c':case 'C':printf("pass");
case 'd':case 'D':printf("fail");break;
default:printf("error");break;
}
}
4、 if(x)与if(!x)的正确理解
两个等价条件的四种形式
if(x) 等价于if(x!=0) 同理,while(x)等价于while(x!=0)
if(!x)等价于if(x==0)同理, while(!x)等价于while(x==0)
要区分!(逻辑,取反)和!=(关系符,不等于)
5、循环结构的三个语句
while 当型
do... while 直到型
for 循环
while循环语句
一、一般形式:
while (表达式) //可以是任何表达式,主要用于判断0和非0
循环体语句;
二、执行过程
(1)计算表达式的值
(2)如果表达式为真,执行循环体语句
(3)如果表达式值为假,则退出循环
三、说明:
1、表达式任意,表达式省略时,会有语法错误;
2、先判断表达式,再执行循环体;
3、循环部分为多个语句时,必须用大括号构成复合语句;
四、while关键点
循环条件的初态
while(循环条件){
循环体语句;
(一定要有改变循环条件的语句)
}
do while循环语句
一、一般形式
do
循环体语句;
while(表达式);
二、执行过程
1、执行循环体的语句
2、计算循环控制表达式的值,如果表达式为真,则返回
3、如果表达式值为假,则退出循环,执行循环后面的语句
三、注意:
1、先执行循环体,再判断表达式,循环体至少执行一次;
2、while后面要有分号;
for循环
一、一般形式
for (表达式1;表达式2;表达式3)
循环体语句;
二、执行过程
(1)求解表达式1;
(2)判断表达式2;
(3)表达式2为真,执行循环体语句,求解表达式3;转(2),若为假,结束循环,执行下面语句;
1、结构体类型及变量定义与赋值
用途:把不同类型的数据组合成一个整体
1.定义结构体类型:
struct <结构体名>{
成员表列
};
由程序设计者指定了一个结构体类型struct Student可以用它定义变量它包括num,name,sex,age,score,addr等不同类型的成员
结构体的成员可以是另一个结构体
2.结构体变量的定义
定义结构体变量后,系统分配内存单元,单元个数为所有成员所占单元个数之和。
三种定义方法:
1、先定义结构体类型再定义变量名
2、在定义结构体类型的同时定义变量
3、直接定义结构体类型变量(不出现结构体名)
struct student stu,a[3],*p;
3.结构体变量的引用(访问)
1、结构体变量名.成员名
(*指针变量).成员 3种形式等价
指针变量→成员
a.age=21;strcpy(a.name, "zs"); //变量名.成员名:
("p).age=21; stropy(("p).name,"zs");//(*指针名).成员名:
p->age=21; strepy(p->name,"zs"); " //指针名->成员名:
2、结构体变量的成员还是结构体,则层层访问;
stu.birthday.year
3、对结构体变量的成员可以像普通变量一样进行各种运算(根据成员的类型决定可以进行的运算) ;
4·结构体变量的赋值,输出和输入
1、相同类型的结构体变量可以互相赋值
2、不能将一个结构体变量作为一个整体进行输入输出。必须一个一个成员按其类型输入输出;
5,可在定义结构体类型同时自定义给类型别名:方便定义该类型变量
2019.设有定义:struct sk(int a; float b; }data,*p=&data;
则对data中成员b的引用不正确的是( )A. data.bB.p-> data.b C.(*p).b D.p->b
二、共用体
使几个不同的变量共占同一段内存的结构,称为“共用体”类型的结构。
1.共同用体类型的定义
union 共用体类型标识符{
类型标识符1 成员名1;
类型标识符2 成员名2;
类型标识符n 成员名n;
};
2. 共用体变量的定义
共用体变量的定义
union data a, b, c;
(三种定义形式同结构体)
占内存数是成员最大字节数;
3,共用变量成员的引用:同结构体
重点
1、同一内存在每一瞬时只能存放其中一种类型的成员;
2、起作用的是最后一次存放的成员,不能作为函数参数;
3、只能对第一个成员初始化;
4、共用体变量的地址和它的各成员的地址都是同一地址;
5、不能对共用体变量名赋值,也不能企图引用变量名来得到一个值;
6、共用体类型可以出现在结构体类型定义中,作为共用体的成员。反之,结构体也可以出现在共用体类型定义中,作为共用体的成员;
共用体与结构体定义形式相似,但含义不同
1、结构体变量所占的内存长度等于各成员所占的内存长度之和。(每个成员分别占有自己的内存)
2、共用体变量所占的内存长度等于最长的成员的长度。
2018,当说明一个共用体变量时,系统分配给它的内存分配的是
A.第一个成员所需内存空间
B.各成员所需内存空间之和
C.各成员所需内存空间的最大值
D.最后一个成员所需内存空间
2017,当说明一个结构体变量时,系统分配给它的内存
A.各成员所需内存空间的最大值
B.各成员所需内存空间之和
C.结构中第一个成员所需内存空间
D.结构中最后一个成员所需内存空间
1、宏(无参、带参)
程序在正式编译前,要进行预处理,对程序中所有出现的宏名使用宏定义中的字符串去替换,称宏替换或宏展开。
全屏宏替换时,特别注意的一点就是将宏定义中的"字符串"视为真正的字符串,进行原样替换,切忌不要人为计算!
调用带参宏时,首先进行宏展开,再实参代换形参。
宏不分配内存,不占用程序运行时间,只占用编译时间。
形参不分配内存,不必做类型说明
2、文件包含include
要想使用系统提供的库函数,必须将库函数对应的头文件通过include引入到当前文件中。
头文件引入的两种写法
-include <stdio.h>:标准格式,系统到存放C库函数头文件所在目录寻找要包含的文件(配置)。- include "my.c" :系统首先在当前目录寻找包含文件,找不到再按标准方式查找。
—一般使用系统库函数使用<>,包含自定义文件用双引号。
2019.若程序中调用库函数strlen() ,则必须包含头文件
A. stdio.h (输出输出)
B. stdlib.h (时间函数随机函数)
C. string.h (四个函数)
D. math.h (数学函数)
1、编程基础
程序流程
定义变量
数据的输入
数据的处理
数据的输出
程序结构
顺序结构
选择结构
循环结构
一、编程题基本步骤
定义变量:根据需要(输入、处理--交换)定义变量(数组、结构体);
读取数据:从键盘读取数据存入变量
数据处理:关键--流程控制
输出:按要求(指定形式)输出
考点一 else的配对原则
考点二 空语句与复合语句
考点三 switch+break
考点四 break与continue在循环中的使用
考点五 if(x)与if(!x)的正确理解
考点六 循环次数判断
考点七 分支问题、数列编程
六、数组
考点一 数组正确定义与初始化赋值
考点二 元素引用
考点三 字符数组长度及字符串长度
考点四 字符串函数
考点五 二维数值数组
考点六 编程