第一部分:成绩最高分与最低分之差
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int arr[n];
int i = 0;
// 输入n个成绩
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
// 找最高分
int max = arr[0];
for (i = 1; i < n; i++)
{
if (arr[i] > max)
max = arr[i];
}
// 找最低分
int min = arr[0];
for (i = 1; i < n; i++)
{
if (arr[i] < min)
min = arr[i];
}
// 输出差值
printf("%d\n", max - min);
return 0;
}
功能:输入n个成绩,计算并输出最高分和最低分的差值。
第二部分:走台阶问题(斐波那契解法)
#include <stdio.h>
// 计算走n个台阶的走法数
int fib(int n)
{
if (n <= 2)
return n;
else
return fib(n - 1) + fib(n - 2);
}
int main()
{
int n = 0;
scanf("%d", &n);
int m = fib(n);
printf("%d\n", m);
return 0;
}
思路:
• 走1阶:1种走法
• 走2阶:2种走法
• 走n阶(n>2):fib(n-1) + fib(n-2)(最后一步走1阶/2阶的走法和)
数组删除指定数字(未完成部分)
int main()
{
int n = 0;
scanf("%d", &n);
int arr[n];
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
int del = 0;
scanf("%d", &del);
int j = 0; // j标记存放不删除数据的位置
for (i = 0; i < n; i++)
{
if (arr[i] != del)
arr[j++] = arr[i];
}
// 后续可补充输出删除后的数组
return 0;
}
第三部分:C语言语法笔记
1. 访问结构体成员
◦ 结构体变量.成员名
◦ 结构体指针->成员名
2. 表达式求值
表达式求值顺序由操作符优先级和结合性决定,操作数求值过程中可能发生隐式类型转换。
3. 隐式类型转换 - 整型提升
◦ C的整型算术运算总是至少以缺省整型类型的精度来进行的。
◦ 整型提升是按照变量数据类型的符号位来提升的。
示例代码:
#include <stdio.h>
int main()
{
// int 4字节-32bit,char 1字节-8bit
char a = 5; // 二进制:00000101
char b = 126; // 二进制:01111110
char c = a + b;
printf("%d\n", c); // 输出125
return 0;
}
4. 整型提升的意义
表达式的整型运算在CPU的整型运算器(ALU) 中执行,CPU整型运算器的操作数长度一般为int的字节长度(也是CPU通用寄存器的长度)。因此,即使两个char类型相加,在CPU执行时也会先转换为CPU内整型操作数的标准长度。