mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6mobile wallpaper 7
42 字
1 分钟
【课堂代码】函数1
2026-06-02

1. 定义一个函数求阶乘n!#

#include<iostream>
int Fack(int n)
{
int i,sum=1;
for(i=1;i<=n;i++)
{
sum*=i;
}
return sum;
}
int main()
{
int n;
std::cin>>n;
std::cout<<Fack(n)<<std::endl;
return 0;
}

2. 计算组合数#

#include <iostream>
void zuheshu(int m, int k, long long &ret)
int main() {
int m, k;
long long ret;
std::cin >> m >> k;
zuheshu(m, k, ret);
std::cout << ret << std::endl;
return 0;
}
#include<iostream>
void zuheshu(int m, int k, long long &ret) // C++引用
{
if (k < 0 || k > m) {
ret = 0;
return;
}
if (k > m - k) k = m - k;
long long result = 1;
for (int i = 1; i <= k; ++i) {
result = result * (m - k + i) / i; //通过组合数公式求解,避免算阶乘溢出
}
ret = result;
}

3. 计算两点间的距离#

#include<stdio.h>
#include<math.h>
double dist(double x1, double y1, double x2, double y2);
int main(void)
{
double x1, y1, x2, y2;
printf("Enter x1,y1,x2, y2:");
scanf("%lf %lf %lf %lf", &x1, &y1,&x2,&y2);
printf("dist=%.2f\n", dist(x1,y1,x2,y2));
return 0;
}
double dist(double x1, double y1, double x2, double y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}

4. 输出数字金字塔#

#include<iostream>
void pyramid (int n);
int main()
{
int n;
std::cin>>n;
pyramid(n);
return 0;
}
void pyramid(int n) {
for (int i = 1; i <= n; ++i) { // 输出前导空格,使金字塔居中
for(int j = 0;j<n-i;j++)
std::cout<<" "; // 输出 i 重复 i 次,中间用空格分隔
for (int k = 1; k <= i; ++k) {
std::cout << i;
if (k < i)
std::cout << " "; // 数字之间加空格
}
std::cout << std::endl;
}
}

5. 天天向上的力量#

#include<iostream>
void daily(double &study, double &relax) { //计算每天努力和每天放任
study = pow(1.01,365); // 每天努力 1%
relax = pow(0.99,365); // 每天放任 1%
}
void weekdays(double &result) { //计算工作日努力,周末放任
double val = 1.0;
for (int day = 0; day < 365; ++day) {
if (day % 7 < 5) // 工作日努力
val *= 1.01;
else // 周末放任
val *= 0.99;
}
result = val;
}
double find_required_rate() {
/* 每周工作5天,休息2天,休息日水平下降1%,工作日要努力到什么程度,
一年后的水平才与每天努力1%取得的效果一样呢?
*/
double target = pow(1.01, 365);
double low = 0.0, high = 0.1;
for (int i = 0; i < 100; ++i) {
double mid = (low + high) / 2; // 二分法查找
double val = 1.0;
for (int day = 0; day < 365; ++day) {
if (day % 7 < 5) // 工作日
val *= (1.0 + mid);
else // 休息日
val *= 0.99;
}
if (val < target)
low = mid;
else
high = mid;
}
return (low + high) / 2;
}
int main()
{
double dailystudy,dailyrelax,weekdaystudy,result;
daily(dailystudy,dailyrelax);
weekdays(weekdaystudy);
result = find_required_rate();
//std::cout << std::fixed << std::setprecision(2); // 调用#include <iomanip>取两位小数
std::cout << "365天,每天学习" << dailystudy << std::endl;
std::cout << "365天,每天放任" << dailyrelax << std::endl;
std::cout << "365天,工作日学习,周末放任" << weekdaystudy << std::endl;
std::cout << "每周工作5天,休息2天,休息日水平下降1%,工作日要努力到"
<< result*100 << "%,一年后的水平才与每天努力1%取得的效果一样" << std::endl;
return 0;
}
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

【课堂代码】函数1
https://blog.sherry.qzz.io/posts/c/课堂代码函数1/
作者
Sherry
发布于
2026-06-02
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录