main
就是一个函数,因此放在main的内容一定可以通过函数实现,但函数有一个重要应用:递归。递归即在函数里调用自身,例如阶乘:
int f(int x){
return x*f(x-1)
}
(2)函数参数类型:函数里的变量为局部变量,仅在函数体内有效,但函数可以通过指针修改实参指向的值。
函数的类型
- 库函数:
函数都要题头
- 一般头文件#include<stdio.h>有main
- 数学公式#include<math.h>有sqrt()平方根,paw()n次方
- #include<string.h>有strlen()长度strcat()连接
- #include<windows.h>有beep
- main函数:必要
3.自定义函数
例:
int f(int x,int y,int z){
int max=x;
if(x<y) max=x;
if(y<z) max=z;
return max;
}
得到,基本结构:
返回值类型 函数名(参数类型 参数1, 参数类型 参数2, ...) { // 函数体
return 返回值; // 可选,如果函数有返回值
}
return;
& 参数类型void
返回值为空
作业:
关注公众号[Kimo姬]即可获得答案,还有实用工具等着你。简洁好用的公众号,无付费项目无捆绑应用
1. 猴子吃桃问题(递归) 一个猴子摘了一堆桃子,第一天吃了一半多一个,以后每天都吃一半多一个,到了第十天,发现只剩一个桃子了。编写递归函数计算第一天共摘了多少个桃子。
2. 使用递归计算斐波那契数列 编写一个递归函数,计算斐波那契数列的第 n 项,斐波那契数列的定义为:F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2)。
3. 输入一个数 n,使用自定义函数计算 n 的二次方的值并输出
自定义函数,不得使用 pow()
。
4. 求数组的最大值和最小值(通过函数修改实参指向的值) 编写一个函数,通过指针修改实参指向的数组中的最大值和最小值,并在主函数中输出修改后的数组。
5. 计算一个数的各位数字之和(递归实现) 编写一个递归函数,计算一个整数各位数字之和。
6. 使用指针实现字符串连接 编写一个函数,通过指针实现两个字符串的连接,并输出连接后的字符串。
7. 输入 m 和 n,输出 [m, n] 之间素数和
编写函数计算素数和。
- 8. 输入一个数,输出其最大三位公约数
编写函数计算最大三位公约数。
9. 使用递归计算阶乘 编写一个递归函数,计算给定整数 n 的阶乘。
10. 实现简单的计算器 编写一个函数,实现简单的加减乘除运算,函数接受两个操作数和运算符作为参数,返回运算结果。
11. 使用递归实现二分查找 编写一个递归函数,实现在有序整数数组中的二分查找。
彩蛋:
#include <stdio.h>
#include <windows.h>
// 定义音符的频率(Hz)
#define NOTE_C4 261.63
#define NOTE_D4 293.66
#define NOTE_E4 329.63
#define NOTE_F4 349.23
#define NOTE_G4 392.00
#define NOTE_A4 440.00
#define NOTE_B4 493.88
#define NOTE_REST 0 // 休止符的频率
// 定义音符的持续时间(毫秒)
#define DURATION 500
#define DURATION_HALF DURATION / 2
#define DURATION_QUARTER DURATION / 4
// 播放音符函数
void playNote(double frequency, int duration) {
if (frequency > 37 && frequency < 32767) {
Beep((DWORD)frequency, duration);
} else {
printf("Invalid frequency: %.2lf\n", frequency);
}
}
int main() {
// 播放音乐
playNote(NOTE_C4, DURATION);
playNote(NOTE_C4, DURATION);
playNote(NOTE_G4, DURATION);
playNote(NOTE_G4, DURATION);
playNote(NOTE_A4, DURATION);
playNote(NOTE_A4, DURATION);
playNote(NOTE_G4, DURATION);
playNote(NOTE_F4, DURATION);
playNote(NOTE_F4, DURATION);
playNote(NOTE_E4, DURATION);
playNote(NOTE_E4, DURATION);
playNote(NOTE_D4, DURATION);
playNote(NOTE_D4, DURATION);
playNote(NOTE_C4, DURATION);
playNote(NOTE_G4, DURATION);
playNote(NOTE_G4, DURATION);
playNote(NOTE_F4, DURATION);
playNote(NOTE_F4, DURATION);
playNote(NOTE_E4, DURATION);
playNote(NOTE_E4, DURATION);
playNote(NOTE_D4, DURATION);
return 0;
}
💖知道是什么的打在评论区,前20名抽JD50元代金卷💖