C语言期末总结
1. 函数
C语言程序的基本单位是函数
1.1 main函数
① C语言总是从main函数开始执行,并从全局main函数结束。
② 调用的函数不一定要在main函数中定义。
1.2 递归调用函数
直接递归调用a函数里面直接调用a函数;
间接递归调用a函数里调用b函数,b函数里再调用a函数。
2. 字符输入输出
① getchar( ) 代表只能输入一个字符
② putchar( )代表只能输出一个字符
③ gets( )是用来专门接收输入的字符串数组,可以说是scanf具体分类
gets接收字符数组名、字符指针或者字符数组元素的地址
④ puts就是从某一址开始,依次输出存储单元中的字符。
2.1 注意事项
2.1.1 接受单个字符的getchar( )
getchar( )它一次能接收的是只占一个字符的元素(可以是0-9,因为0-9占一个字符,但是不推荐使用getchar去输入数字)
2.1.2 “重生”的gets_s( )
在2011年12月,ANSI 采纳了 ISO/IEC 9899:2011 标准,标准中删除了 gets( )函数,使用一个新的更安全的函数*gets_s()*替代,所以在visual studio 2019 c++ 空文件中,不存在gets标识符,只有gets_s( )才可使用。
3. 数组
3.1 定义
数组从下标为0开始,依此储存数据空间,直到达到数组限额
3.2 指针与数组结合例题
3.2.1 例题① (int型)
定义:
int *p, s[20],i;
*p=s;
数组s[i]表示:
A *(s+i) √
B *(p+i) √
C *(s = s + i) ❌
D *(p = p + i) √
解析如下:
p+1 的本质是移到数组下一个元素的地址(int型四个字节,char型一个字节)
p+i 表示的是第 i+1 个元素的地址,那么 (p+i) 就表示第 i+1 个元素的内容。即 p+i 就是指向元素 a[i] 的指针,(p+i) 就等价于 a[i]。
3.2.2 例题② (char型)
若有:
char c[] = "encourage";
char *p = c;
printf("%s", p+5);
输出结果为:rage
①、char c[ ]= "encourage"中“”(引号)不占存储空间
②、*p = c;意味着将数组c的首地址赋予p
③、 p+5 代表c[5],即第六个字符‘r’
④、输出格式为%s,即将后续字符rage全部输出
4 .
闰年定义:
普通闰年: 能被4整除但不能被100整除的年份
世纪闰年: 能被400整除的年份
year%4==0 && year % 100 != 0 || year % 400==0
5 .
在C语言中%(取余)必须确保分子分母均为整数(可以为负数,但是每一个编译器的负数取余决定于编译器本身,依照编译器规则即可)
3 .
strlen为C语言库函数,包含于string.h中,作用为计算一个字符串(字符数组)中元素的个数,即从数组头部计数,直到遇到字符串结束符\0为止,计数结果不包括\0.
[例子]
strlen(“abcd\0ed\0g”)
的返回值为 4
4. 结构体
4.1 结构体定义与定义形式
4.1.1 定义
结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员
4.1.2定义形式
struct 结构体名{
结构体所包含的变量或数组
};
struct stu{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
};
4.2 例题填空(结构体的使用)
填写下方划线处代码:
#include<stdio.h>
struct date
{
int year;
int month;
int day;
};
int main()
{
date d={2020,1,20};
printf("%04d-%02d-%02d\n", _____);
date *pd=_____;
printf("%04d-%02d-%02d\n", pd->year,pd->month,pd->day);
return 0;
}
第一空:d.year,d.month,d.day
(注意输出格式)
第二空:&d