目录
前言;
大家好,好久不见了!最近博主到了期末周哈,一直在”预习“各科知识点,c语言已经好久没有学习了。惭愧惭愧。
本章是我的期末总结,复习,也为大家提供一些知识点。
C语言常见的函数:
一·输入函数:
scanf——常用的输入函数
scanf()在输入数据时 读到空格(space),制表符(\t),换行符(\n)会停止!
格式
scanf("%d", &a); %d是整数的,还有%lf浮点类型 %
gets——字符串输入函数
格式
gets(a);
这里也运用到了输出函数
输出函数
printf函数
以及字符串函数puts
用法如下图所示
那么就运用一下吧,上习题。
练习
求输出数组中的前五个字符
循环结构
for循环
for (初始化表达式; 条件表达式; 更新表达式)
{
// 循环体代码
}
运行具体如上图。
while循环
while (条件表达式)
{
// 循环体代码
}
#include <stdio.h>
int main() {
// 打印1到5的数字
int i = 1;
while (i <= 5) {
printf("%d\n", i);
i++;
}
return 0;
}
do while循环
do {
// 循环体代码
} while (条件表达式);
特点: 循环体至少执行一次,即使条件一开始就不满足。
#include <stdio.h>
int main() {
// 打印1到5的数字
int i = 1;
do {
printf("%d\n", i);
i++;
} while (i <= 5);
return 0;
}
循环控制语句
break;
立即终止循环,跳出循环体。
for (int i = 1; i <= 10; i++) {
if (i == 5) break; // 当i等于5时终止循环
printf("%d\n", i);
}
continue
语句: 跳过当前循环的剩余代码,直接进入下一次循环
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
continue; // 跳过偶数
printf("%d\n", i);
}
嵌套循环
循环内部可以包含另一个循环,常用于处理多维数据
int main()
{
// 打印九九乘法表
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
printf("%d×%d=%d ", j, i, i * j);
}
printf("\n");
}
return 0;
}
数组
数组是一组相同数据类型的元素按顺序存储在连续内存空间中的集合。通过下标(从 0 开始)可以快速访问数组中的任意元素。
例如
int numbers[5] = {10, 20, 30, 40, 50};
一个包含 5 个整数的数组
数组申明
数据类型 数组名[数组长度];
- 数据类型:可以是
int
、float
、char
等。 - 数组长度:必须是一个常量表达式(如字面量或常量),指定数组元素的个数。
int ages[10]; // 声明一个包含10个整数的数组 float scores[20]; // 声明一个包含20个浮点数的数组 char name[50]; // 声明一个包含50个字符的数组(字符串)
初始化数组
完全初始化
int numbers[5] = {1, 3, 5, 7, 9};
部分初始化
未指定的元素自动初始化为 0。
int numbers[5] = {1, 3}; // 等价于 {1, 3, 0, 0, 0}
省略数组长度
编译器会根据初始化列表的元素个数自动确定数组长度。
int numbers[] = {1, 2, 3, 4, 5}; // 数组长度为5
访问与修改数组元素
#include <stdio.h>
int main() {
int numbers[5] = {10, 20, 30, 40, 50};
// 访问第3个元素(下标为2)
printf("第3个元素是:%d\n", numbers[2]); // 输出:30
// 修改第4个元素(下标为3)
numbers[3] = 400;
printf("修改后第4个元素是:%d\n", numbers[3]); // 输出:400
return 0;
}
数组的遍历
通常使用循环遍历数组的所有元素。
#include <stdio.h>
int main() {
int numbers[5] = {1, 3, 5, 7, 9};
// 遍历数组并打印每个元素
for (int i = 0; i < 5; i++) {
printf("numbers[%d] = %d\n", i, numbers[i]);
}
return 0;
}
计算数组长度
使用sizeof
运算符计算数组的总字节数和单个元素的字节数,从而得到数组长度:
int length = sizeof(numbers) / sizeof(numbers[0]);
改进后的遍历数组
有了计算的长度,更为方便。
#include <stdio.h>
int main() {
int numbers[] = {1, 3, 5, 7, 9, 11};
int length = sizeof(numbers) / sizeof(numbers[0]);
for (int i = 0; i < length; i++) {
printf("numbers[%d] = %d\n", i, numbers[i]);
}
return 0;
}
多维数组
二维数组较为常见
先行后列
// 声明一个3行4列的二维数组
int matrix[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
遍历二维数组
#include <stdio.h>
int main()
{
int matrix[3][4] =
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
// 遍历二维数组
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d\t", matrix[i][j]);
}
printf("\n"); // 换行
}
return 0;
}
练习
计算数组元素的和与平均值
#include <stdio.h>
int main()
{
int numbers[] = { 10, 20, 30, 40, 50 };
int length = sizeof(numbers) / sizeof(numbers[0]);
int sum = 0;
// 计算总和
for (int i = 0; i < length; i++)
{
sum += numbers[i];
}
// 计算平均值
float average = (float)sum / length;
printf("总和:%d\n", sum); // 输出:150
printf("平均值:%.2f\n", average); // 输出:30.00
return 0;
}
函数
函数是一段完成特定任务的独立代码块,具有以下特点:
模块化:将复杂程序分解为小的功能模块。
- 复用性:一次定义,多次调用。
- 参数传递:通过参数接收输入数据。
- 返回值:执行后返回结果(可选)。
申明与定义
返回类型 函数名(参数列表)
{ // 函数体(代码逻辑)
return 返回值;
// 如果返回类型为void,则不需要return语句
}
- 返回类型:可以是
int
、float
、char
等,若不返回值则使用void
。 - 参数列表:逗号分隔的参数声明,每个参数包含类型和名称。若没有参数,可写
void
或留空。
例如:定义一个加法函数
int add(int a, int b) {
int result = a + b;
return result; // 返回两个数的和
}
函数的调用
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
// 函数声明
int add(int a, int b);
int main()
{
int x, y;
scanf("%d %d", &x, &y);
int sum = add(x, y); // 调用add函数
printf("= %d\n", sum); // 输出:5 + 3 = 8
return 0;
}
// 函数定义
int add(int a, int b)
{
return a + b;
}
函数参数
值传递
传递参数的副本,函数内部修改不影响原始值。
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
// 仅交换副本,原始变量不受影响
}
址传递
通过指针传递变量地址,可修改原始值
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
// 交换原始变量的值
}
// 调用示例
int x = 5, y = 3;
swap(&x, &y); // 传递地址
数组作为参数
数组名传递的是首元素地址,函数内部可修改原数组。
void doubleArray(int arr[], int length) {
for (int i = 0; i < length; i++) {
arr[i] *= 2; // 修改原数组
}
}
// 调用示例
int numbers[] = {1, 2, 3};
doubleArray(numbers, 3);
递归函数
int factorial(int n) {
if (n == 0 || n == 1) {
return 1; // 终止条件
} else {
return n * factorial(n - 1); // 递归调用
}
}
总结:
数组最为重要,还有其他基础函数 strlupr小写转大写,strcmp连接等函数。
希望对大家有所帮助。下章节再见,指针再会。