当前位置: 首页 > news >正文

C++ prime plus-7-編程練習

1,

#include <iostream>// 函数声明
double harmonicMean(double x, double y);int main() {double x, y, result;while (true) {std::cout << "请输入两个数(其中一个为0时结束): ";std::cin >> x >> y;// 检查是否输入了0if (x == 0 || y == 0) {break;}// 计算调和平均数result = harmonicMean(x, y);// 报告结果std::cout << "调和平均数是: " << result << std::endl;}std::cout << "程序结束。" << std::endl;return 0;
}// 函数定义
double harmonicMean(double x, double y) {if (x == 0 || y == 0) {return 0; // 如果其中一个数为0,则调和平均数没有意义}return 2.0 * x * y / (x + y);
}

2,

#include <iostream>
#include <vector>// 声明数组函数
void inputScores(std::vector<int>& scores);
void displayScores(const std::vector<int>& scores);
double calculateAverage(const std::vector<int>& scores);int main() {std::vector<int> scores;inputScores(scores);displayScores(scores);double average = calculateAverage(scores);std::cout << "平均成绩是: " << average << std::endl;return 0;
}// 实现输入函数
void inputScores(std::vector<int>& scores) {int score;std::cout << "请输入高尔夫成绩(输入非数字结束): ";while (std::cin >> score && scores.size() < 10) {scores.push_back(score);std::cout << "继续输入高尔夫成绩(输入非数字结束): ";}std::cin.clear(); // 清除错误状态std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 忽略剩余输入
}// 实现显示函数
void displayScores(const std::vector<int>& scores) {std::cout << "输入的成绩为: ";for (int i = 0; i < scores.size(); ++i) {std::cout << scores[i] << " ";}std::cout << std::endl;
}// 实现计算平均成绩函数
double calculateAverage(const std::vector<int>& scores) {if (scores.empty()) {return 0.0;}int sum = 0;for (int score : scores) {sum += score;}return static_cast<double>(sum) / scores.size();
}

3,

#include <iostream>
#include <cstring> // 用于处理字符串struct box {char maker[40];float height;float width;float length;float volume;
};// 函数声明
void displayBox(const box& b);
void calculateVolume(box& b);int main() {box myBox;// 获取用户输入std::cout << "请输入制造商名称: ";std::cin.getline(myBox.maker, 40);std::cout << "请输入高度: ";std::cin >> myBox.height;std::cout << "请输入宽度: ";std::cin >> myBox.width;std::cout << "请输入长度: ";std::cin >> myBox.length;// 计算体积calculateVolume(myBox);// 显示盒子信息displayBox(myBox);return 0;
}// 按值传递box结构,并显示每个成员的值
void displayBox(const box& b) {std::cout << "制造商: " << b.maker << std::endl;std::cout << "高度: " << b.height << std::endl;std::cout << "宽度: " << b.width << std::endl;std::cout << "长度: " << b.length << std::endl;std::cout << "体积: " << b.volume << std::endl;
}// 传递box结构的地址,并将volume成员设置为其他三维长度的乘积
void calculateVolume(box& b) {b.volume = b.height * b.width * b.length;
}

4,

#include <iostream>
#include <cmath> // 用于log和pow函数// 计算阶乘的函数
double factorial(int n) {double result = 1;for (int i = 2; i <= n; ++i) {result *= i;}return result;
}// 计算组合数的函数
double combination(int n, int k) {return factorial(n) / (factorial(k) * factorial(n - k));
}// 计算几率的对数的函数
double logCombination(int n, int k) {return lgamma(n + 1) - (lgamma(k + 1) + lgamma(n - k + 1));
}int main() {int fieldNumbers = 47; // 域号码的数量int chosenNumbers = 5; // 选择的号码数量int specialNumbers = 27; // 特选号码的数量// 计算中头奖的几率的对数double logOdds = logCombination(fieldNumbers, chosenNumbers) + logCombination(specialNumbers, 1);// 输出几率的对数std::cout << "中头奖的几率的对数是: " << logOdds << std::endl;// 如果需要,可以计算几率的实际值double odds = exp(logOdds);std::cout << "中头奖的几率是: " << odds << std::endl;return 0;
}

5,

#include <iostream>// 递归函数声明
unsigned long long factorial(int n);int main() {int number;std::cout << "请输入一个整数(输入-1结束): ";while (std::cin >> number && number != -1) {unsigned long long result = factorial(number);std::cout << number << "! = " << result << std::endl;std::cout << "请输入一个整数(输入-1结束): ";}std::cout << "程序结束。" << std::endl;return 0;
}// 递归函数定义
unsigned long long factorial(int n) {if (n <= 1) { // 基本情况return 1;} else { // 递归情况return n * factorial(n - 1);}
}

6,

#include <iostream>
#include <limits> // 用于std::numeric_limits// 函数声明
int fill_array(double arr[], int size);
void show_array(const double arr[], int size);
void reverse_array(double arr[], int size);int main() {const int size = 10; // 定义数组大小double array[size];// 使用fill_array函数填充数组int count = fill_array(array, size);std::cout << "填充了 " << count << " 个数字。" << std::endl;// 显示数组内容std::cout << "原始数组:" << std::endl;show_array(array, count);// 反转数组reverse_array(array, count);// 显示反转后的数组内容std::cout << "反转后的数组:" << std::endl;show_array(array, count);// 再次反转数组中除第一个和最后一个元素之外的所有元素reverse_array(array + 1, count - 2);// 显示最终数组内容std::cout << "最终数组:" << std::endl;show_array(array, count);return 0;
}// fill_array函数定义
int fill_array(double arr[], int size) {int count = 0;double value;std::cout << "请输入 " << size << " 个double值 (输入非数字结束):" << std::endl;while (count < size && std::cin >> value) {arr[count++] = value;}std::cin.clear(); // 清除错误状态std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 忽略剩余输入return count;
}// show_array函数定义
void show_array(const double arr[], int size) {for (int i = 0; i < size; ++i) {std::cout << arr[i] << " ";}std::cout << std::endl;
}// reverse_array函数定义
void reverse_array(double arr[], int size) {for (int i = 0; i < size / 2; ++i) {double temp = arr[i];arr[i] = arr[size - i - 1];arr[size - i - 1] = temp;}
}

7,

#include <iostream>
#include <limits> // 用于std::numeric_limits// 函数声明
double* fill_array(double* start, double* end);
void show_array(const double* start, const double* end);
void reverse_array(double* start, double* end);int main() {const int size = 10; // 定义数组大小double array[size];// 使用fill_array函数填充数组double* fill_end = fill_array(array, array + size);std::cout << "数组填充结束位置:" << fill_end << std::endl;// 显示数组内容std::cout << "原始数组:" << std::endl;show_array(array, fill_end);// 反转数组reverse_array(array, fill_end);// 显示反转后的数组内容std::cout << "反转后的数组:" << std::endl;show_array(array, fill_end);// 再次反转数组中除第一个和最后一个元素之外的所有元素reverse_array(array + 1, fill_end - 1);// 显示最终数组内容std::cout << "最终数组:" << std::endl;show_array(array, fill_end);return 0;
}// fill_array函数定义
double* fill_array(double* start, double* end) {double value;std::cout << "请输入double值 (输入非数字结束):" << std::endl;while (start < end && std::cin >> value) {*start++ = value;}std::cin.clear(); // 清除错误状态std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 忽略剩余输入return start; // 返回最后被填充的位置
}// show_array函数定义
void show_array(const double* start, const double* end) {while (start < end) {std::cout << *start++ << " ";}std::cout << std::endl;
}// reverse_array函数定义
void reverse_array(double* start, double* end) {while (start < end) {double temp = *start;*start = *end;*end = temp;start++;end--;}
}

8,

#include <iostream>
#include <string>const int NUM_QUARTERS = 4; // 定义季度数量int main() {const char* quarters[NUM_QUARTERS] = {"Q1", "Q2", "Q3", "Q4"};double expenses[NUM_QUARTERS] = {0};// 输入每个季度的开支for (int i = 0; i < NUM_QUARTERS; ++i) {std::cout << "请输入 " << quarters[i] << " 的开支: ";std::cin >> expenses[i];}// 显示每个季度的开支std::cout << "\n季度开支:" << std::endl;for (int i = 0; i < NUM_QUARTERS; ++i) {std::cout << quarters[i] << ": " << expenses[i] << std::endl;}return 0;
}

9,

#include <iostream>
#include <string>
using namespace std;const int SLEN = 30;struct student {char fullname[SLEN];char hobby[SLEN];int age;
};// 获取学生信息的函数
int getinfo(student *arr, int n) {int count = 0;string line;while (count < n) {cout << "请输入学生姓名: ";getline(cin, line);if (line.empty()) {break; // 如果输入的是空行,则终止输入}strncpy(arr[count].fullname, line.c_str(), SLEN - 1);arr[count].fullname[SLEN - 1] = '\0'; // 确保字符串以空字符结尾cout << "请输入学生爱好: ";getline(cin, line);strncpy(arr[count].hobby, line.c_str(), SLEN - 1);arr[count].hobby[SLEN - 1] = '\0';cout << "请输入学生年龄: ";cin >> arr[count].age;cin.ignore(numeric_limits<streamsize>::max(), '\n'); // 忽略换行符count++;}return count; // 返回填充的数组元素数量
}// 显示学生信息的函数
void display(const student *s) {cout << "姓名: " << s->fullname << endl;cout << "爱好: " << s->hobby << endl;cout << "年龄: " << s->age << endl;
}int main() {const int MAX_STUDENTS = 5;student students[MAX_STUDENTS];int numStudents = getinfo(students, MAX_STUDENTS);cout << "\n学生信息:" << endl;for (int i = 0; i < numStudents; i++) {display(&students[i]);cout << endl;}return 0;
}

10, 

#include <iostream>// 函数声明
double add(double x, double y);
double multiply(double x, double y);
double calculate(double x, double y, double (*pf)(double, double));int main() {double x, y, result;double (*pf[3])(double, double) = {add, multiply}; // 函数指针数组while (true) {std::cout << "请输入两个数字(输入非数字结束): ";std::cin >> x >> y;if (!std::cin) {std::cin.clear(); // 清除错误状态std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 忽略剩余输入break;}// 使用 calculate 调用不同的函数std::cout << "加法结果: " << calculate(x, y, add) << std::endl;std::cout << "乘法结果: " << calculate(x, y, multiply) << std::endl;std::cout << "\n继续输入两个数字,或输入非数字结束程序。\n";}std::cout << "程序结束。" << std::endl;return 0;
}// add 函数定义
double add(double x, double y) {return x + y;
}// multiply 函数定义
double multiply(double x, double y) {return x * y;
}// calculate 函数定义
double calculate(double x, double y, double (*pf)(double, double)) {return pf(x, y);
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • VMware虚拟机因磁盘空间不足黑屏无法登录
  • matlab绘制二维云图,划分区域,并显示每个区域的均值
  • KVM环境下制作ubuntu qcow2格式镜像
  • 基于SpringBoot的漫画网设计与实现
  • 人工智能快速发展下的极端风险管理
  • 力扣中等 33.搜索旋转排序数组
  • C语言 | Leetcode C语言题解之第415题字符串相加
  • proteus仿真学习(1)
  • 机器人的动力学——牛顿欧拉,拉格朗日,凯恩
  • ARM/Linux嵌入式面经(三八):绿盟科技
  • 【webpack4系列】webpack构建速度和体积优化策略(五)
  • 谈谈黑盒测试方法
  • c语言中“qsort函数”和“结构体成员访问变量”
  • QTPropertyBrowser属性表控件:新增自定义属性类型
  • 【专题】2024中国生物医药出海现状与趋势蓝皮书报告合集PDF分享(附原数据表)
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Bytom交易说明(账户管理模式)
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • cookie和session
  • gitlab-ci配置详解(一)
  • laravel5.5 视图共享数据
  • learning koa2.x
  • Node + FFmpeg 实现Canvas动画导出视频
  • Nodejs和JavaWeb协助开发
  • PAT A1050
  • 记一次和乔布斯合作最难忘的经历
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 你真的知道 == 和 equals 的区别吗?
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • python最赚钱的4个方向,你最心动的是哪个?
  • 数据库巡检项
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (论文阅读40-45)图像描述1
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (七)Activiti-modeler中文支持
  • (已解决)什么是vue导航守卫
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)Linux下编译安装log4cxx
  • (转)我也是一只IT小小鸟
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Core中如何集成RabbitMQ
  • .Net IE10 _doPostBack 未定义
  • .Net插件开发开源框架
  • .NET中统一的存储过程调用方法(收藏)
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [acm算法学习] 后缀数组SA
  • [AIGC] CompletableFuture的重要方法有哪些?
  • [Algorithm][动态规划][路径问题][不同路径][不同路径Ⅱ][珠宝的最高价值]详细讲解