博客
关于我
第7周编程作业
阅读量:526 次
发布时间:2019-03-08

本文共 3760 字,大约阅读时间需要 12 分钟。

首先,我们来详细分析并解决每个编程题目:

1. 函数重置两个变量的值

目标:编写一个函数,重置两个变量的值,使它们变为原值的平均值。思路:计算两个变量的总和,判断是否为偶数。根据情况计算平均值,并进行四舍五入处理,然后将结果保存到两个变量中。实现代码

#include 
using namespace std;void reset(int *a, int *b) { int sum = *a + *b; if (sum % 2 != 0) { *a = *b = (sum + 1) / 2; // 四舍五入,例如7+14=21,21/2=10.5,取11 } else { *a = *b = sum / 2; }}int main() { int x, y; cin >> x >> y; reset(&x, &y); cout << x << " " << y << endl; return 0;}

2. 数组求和函数

目标:编写一个函数,按次调用的方式累加数组元素的值。思路:使用静态变量来累加每次传入的值。实现代码

#include 
using namespace std;void add_array(int a) { static int sum = 0; sum += a; return sum;}int main() { int array[100], x; bool end = false; int count = 0; while (!end) { cin >> x; if (x == -1) { end = true; break; } array[count++] = x; } int total = 0; for (int i = 0; i < count; i++) { add_array(array[i]); } cout << add_array(0) << endl; // 总和通过指针返回 return 0;}

3. 数组清零函数

目标:将数组的前n个元素置零,返回指针。思路:从数组起始位置到指定位置-1的位置,依次赋值为0。实现代码

#include 
using namespace std;void emptyList(int *p, int empty_num) { for (int i = 0; i < empty_num; i++) { p[i] = 0; }}int main() { int array[100], *plist = array; int num; bool end = false; int count = 0; while (!end) { cin >> num; if (num == -1) { end = true; break; } array[count++] = num; } cin >> count; // 读取要清零的数量 emptyList(plist, count); for (int i = =0; i < 100; ++i) { if (i < count) { cout << 0 << " "; } else { if (i != 99) { continue; } cout << array[i] << endl; // 最后一个元素不添加空格 } } return 0;}

4. 函数指针加密处理

目标:编写两个加密函数,并用函数指针进行切换。凯撒加密函数

void caesar(char s[]) {    for (char *p = s; *p != 0; p++) {        if (*p >= 'a' && *p <= 'z') {            *p += 3; // 向后移动三位            if (*p > 'z') {                *p = 'a';            }        } else if (*p >= 'A' && *p <= 'Z') {            *p += 3; // 向后移动三位            if (*p > 'Z') {                *p = 'A';            }        }    }}

单双号加密函数

void oddeven(char s[]) {    int odd_pos = 0, even_pos = 0;    char *p = s;    while (*p != 0) {        if ((p - s) % 2 == 0) {            // 偶数位置            odd_pos++;            p++;        } else {            // 奇数位置            even_pos++;            p++;        }    }    // 交换奇偶位置    char temp;    for (int i = 0; i < min(odd_pos, even_pos); i++) {        temp = s[even_pos];        s[even_pos] = s[odd_pos];        s[odd_pos] = temp;        odd_pos++;        even_pos--;    }}

主函数

#include 
using namespace std;void caesar(char s[]);void oddeven(char s[]);int main() { char ch[40]; int chosen_method; cin >> ch; cin >> chosen_method; void (*fp)(char s[]) = nullptr; if (chosen_method == 1) { fp = caesar; } else if (chosen_method == 2) { fp = oddeven; } if (fp) { fp(ch); cout << ch << endl; } return 0;}

5. 通用函数区间平均值计算

目标:编写通用函数计算任意函数在区间内的平均值。通用函数

#include 
using namespace std;int avg(int (*fp)(int), int x1, int x2) { int sum = 0; int count = x2 - x1 + 1; for (int i = x1; i <= x2; ++i) { sum += fp(i); } int average = sum / count; return average;}

主函数

#include 
using namespace std;int a = 0, b = 0, c = 0, m = 0;int fun1(int x) { return 3*x*x + 2*x + 1; }int fun2(int x) { return pow(x, m); }int main() { cin >> a >> b >> c; cin >> m; cin >> x1 >> x2; int s1 = avg(fun1, x1, x2); int s2 = avg(fun2, x1, x2); cout << s1 << endl << s2 << endl; return 0;}

总结

每个任务都需要细致地分析需求,确保函数逻辑正确,尤其是处理数组、字符串和函数指针的部分,需要注意易引发的错误,如数组越界、静态变量的影响及函数指针的正确赋值和调用。通过逐一解决每个小问题,可以高效完成编程任务。

转载地址:http://dlziz.baihongyu.com/

你可能感兴趣的文章
ngModelController
查看>>
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
ngrok内网穿透可以实现资源共享吗?快解析更加简洁
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
nid修改oracle11gR2数据库名
查看>>
NIFI1.21.0/NIFI1.22.0/NIFI1.24.0/NIFI1.26.0_2024-06-11最新版本安装_采用HTTP方式_搭建集群_实际操作---大数据之Nifi工作笔记0050
查看>>
NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0_Postgresql和Mysql同时指定库_指定多表_全量同步到Mysql数据库以及Hbase数据库中---大数据之Nifi工作笔记0060
查看>>
NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
查看>>
NIFI1.21.0最新版本安装_配置使用HTTP登录_默认是用HTTPS登录的_Https登录需要输入用户名密码_HTTP不需要---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增加修改实时同步_使用JsonPath及自定义Python脚本_03---大数据之Nifi工作笔记0055
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>