文章目录

  • 算法1 平均成绩
    • 1、题目
    • 2、代码实现
  • 算法2 从尾到头打印链表
    • 1、题目
    • 2、代码实现
  • 算法3 数组-整数从大到小排序
    • 1、实现过程
    • 2、实现代码
    • 3、额外学习VBS
  • 算法4 二分法查找
    • 1、原理
    • 2、代码实现
  • 算法5 斐波那契数列
    • 1、C语言题目
    • 2、代码实现
    • 3、Python
    • 参考

算法1 平均成绩

1、题目

m个人的成绩存放在score数组中,请编写函数fun,它的功能是:

将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。

2、代码实现

/*
题目要求:m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。编程思路:1)平均值就是(A+B+C+D+E+F)/总数项*/
#include "stdafx.h"#include <stdio.h>
#include <windows.h>int fun(int scoce[], int m, int below[])
{int aver = NULL; //平均值int k = NULL;    //有几个低于平均成绩的同学// 平均值就是(A+B+C+D+E+F)/总数项for (int i = 0; i < m; i++){aver = aver + scoce[i];}// 计算平均数aver = aver / m;//返回一个分数最低值for (int i = 0; i < m; i++){// 对比最低成绩if (scoce[i]<aver){//最低成绩就存到数组里below[k] = scoce[i];printf("%d \n", below[k]);//统计当前出现了几个低于平均成绩的学生k++;}}return k;}int _tmain(int argc, _TCHAR* argv[])
{//人数int StudentNumber = 6;//成绩int score[6] = {92, 98, 100, 70, 60, 65};// 低于平均成绩的同学有几个人int below[6];int k;//引用函数k = fun(score,StudentNumber,below);printf("低于平均成绩人数为:%d \n",k);}

算法2 从尾到头打印链表

1、题目

通过《剑指offer 名企面试官精讲典型编程题》看到一道讲解链表的题目。

输入一个链表的头结点,从尾到头反过来打印出每个结点的值

链表定义如下:

 typedef struct _NODE{T Data;_NODE* pNext;}NODE, *PNODE;

2、代码实现

书中提到解决问题可以利用栈,“后进先出”的特点实现这种顺序,每经过一个节点的时候,把该节点放到一个栈中。
当遍历完整个链表后,再从栈顶开始逐个输出节点的值。此时输出的节点顺序就已经反转过来了。

栈实现的方式代码如下:

 void  revse_printfAll(){if (m_pHead == NULL){return;}NODE* pTemp = m_pHead;// stack 实现stack <NODE*> nodes;while (pTemp!=NULL){nodes.push(pTemp);pTemp = pTemp->pNext;}while (!nodes.empty()){pTemp = nodes.top();cout << pTemp->Data;nodes.pop();}}

既然可以通过栈,那也可用通过vector来实现的。所以随手查看了一下vector的用法,写出与栈实现类似的代码。

 void  revse_printfAll(){// vector实现printf("\n");vector <NODE*> nodes1;while (pTemp != NULL){nodes1.push_back(pTemp);pTemp = pTemp->pNext;}while (!nodes1.empty()){pTemp = nodes1.back();cout << pTemp->Data;nodes1.pop_back();}}

算法3 数组-整数从大到小排序

1、实现过程

定义整型数组src,长度为10,初始化为{11,12,47,24,49,69,90,89,18,39}。之后用嵌套for循环比较相邻两个元素的大小,如果前一个元素大于后一个,不做任何操作;反之,相互交换。在交换的过程中需要临时变量暂时存放第一个元素的值,命名为temp。

2、实现代码

  • 选择排序
#include <iostream>
using namespace std;int main()
{int src[10] = {11,12,47,24,49,69,90,89,18,39};//一维数组中包含10个整数//从大到小排序for(int i = 0; i < 10; i++){for(int j = i+1; j < 10; j++){if(src[i]<src[j])    //如果前一个元素小于后一个元素{int temp;        //临时变量temp = src[i];src[i] = src[j]; //大的元素到前一个位置src[j] = temp;   //小的元素到后一个位置}}}// 输出各元素for(int k = 0; k < 10; k++)cout<<src[k]<<endl;return 0;
}
  • 冒泡排序
#include <iostream>
using namespace std;int main()
{int src[10] = {11,12,47,24,49,69,90,89,18,39};//一维数组中包含10个整数//从大到小排序for(int i = 0; i < 10; i++){for(int j = 0; j < 10 - i - 1; j++){if(src[j]<src[j+1])    //如果前一个元素小于后一个元素{int temp;        //临时变量temp = src[j];src[j] = src[j+1]; //大的元素到前一个位置src[j+1] = temp;   //小的元素到后一个位置}}}// 输出各元素for(int k = 0; k < 10; k++)cout<<src[k]<<endl;return 0;
}

3、额外学习VBS

Sub test()Dim arr, Select_Sortarr = Array(5, 8, 5, 2, 9)' 冒泡排序
For i = 0 To UBound(arr)For j = 0 To UBound(arr) - i - 1Debug.Print arr(i); "=="; arr(j + 1)Debug.Print j; "=="; j + 1If arr(j) > arr(j + 1) Then vSwap = arr(j): arr(j) = arr(j + 1): arr(j + 1) = vSwapNext
NextFor i = 0 To UBound(arr)Debug.Print arr(i)
Next' 选择排序
Select_Sort = Array(5, 8, 5, 2, 9)' 选择排序
For i = 0 To UBound(Select_Sort)For j = i + 1 To UBound(Select_Sort)Debug.Print Select_Sort(i); "=="; Select_Sort(j)Debug.Print i; "=="; jIf Select_Sort(i) > Select_Sort(j) Then vSwap = Select_Sort(i): Select_Sort(i) = Select_Sort(j): Select_Sort(j) = vSwapNext
NextFor i = 0 To UBound(Select_Sort)Debug.Print Select_Sort(i)
NextEnd Sub

算法4 二分法查找

1、原理

对于给定值的查找,如果大于该数组的中间元素,下一步在元素值大的区域继续与其中间元素比较;否则下一步在元素值小的区域内继续查找,直到找到目标元素。如果到最后还没有找到,则输出“数组中没有该元素”。

2、代码实现

#include <iostream>
using namespace std;//比较值
int array_039[10]={0,1,2,3,4,5,6,7,8,9};void binary_search(int left,int right,int value)
{int search_index;search_index=(left+right)/2;//二分if(array_039[search_index]==value)//如果等于二分点值cout<<"元素"<<value<<"位于第"<<search_index<<"位"<<endl;else if(value>array_039[search_index])//大于,往右边移binary_search(search_index+1,right,value);else if(value<array_039[search_index])//小于,往左边移binary_search(left,search_index-1,value);elsereturn;
}int main()
{int temp;cout<<"输入你想要找的元素值:";cin>>temp;binary_search(0,9,temp);return 0;
}

算法5 斐波那契数列

1、C语言题目

题目内容:

求斐波那契Fibonacci数列求函数f(n)    =  0                   n = 0=  1                   n = 1= f(n-1) + f(n-2)      n > 1

2、代码实现

/*
题目要求:解法:斐波那契数列的变相考查,总数f(n)=f(n-1)+f(n-2)。
F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)编程思路://算法:采用倒叙计算方法。递归调用方法慢的原因是重复计算太多,采用从下往上计算方法会明显减少重复。
//首先根据f(0)和f(1)算出f(2), 再根据f(1)和f(2)算出f(3)……依次类推就可以算出第n项了。这种思路的时间复杂度为O(n).*/int _tmain(int argc, _TCHAR* argv[])
{int m1 = 1;int    m2 = 0;int m3 = 0;int n = 0;int max = 0;printf("input month count\n ");scanf_s("%d",&max);while (n<max){if (n < 2)           //前两个月是1只兔子{                    //数列从第2项开始m3 = n;n++;}else{m3 = m1 + m2;    //每一项都等于前两项之和,m2 = m1;             //f(0)和f(1)算出f(2)m1 = m3;            n++;}printf("number : %d \n ",m3);}return 0;
}

3、Python

  • 递归
def fibonacci (n) :if n == 0:return 0elif n == 1:return 1else:return fibonacci(n-2) + fibonacci(n-1)fibonacci(5)
  • 非递归
def Fibnacci(n):result = [1,1]if n <= 1:return result[n]for i in range(2,n+1):result.append(result[i-2]+result[i-1])return result[n]Fibnacci(5)

参考

https://stackoverflow.com/questions/35401864/fibonacci-sequence-while-loop

[c++]平均成绩、从尾到头打印链表、整数从大到小排序、二分法查找、斐波那契数列相关推荐

  1. 剑指offer:面试题06. 从尾到头打印链表

    题目:从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 & ...

  2. 【剑指Offer专题】链表系列:从尾到头打印链表、反转链表、回文链表、合并两个排序的链表(C++和Python实现)...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 剑指Offer(三):从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每 ...

  3. 《LeetCode力扣练习》剑指 Offer 06. 从尾到头打印链表 Java

    <LeetCode力扣练习>剑指 Offer 06. 从尾到头打印链表 Java 一.资源 题目: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入: ...

  4. java从尾到头打印链表数据_Java编程实现从尾到头打印链表代码实例

    问题描述:输入一个链表的头结点,从尾巴到头反过来打印出每个结点的值. 首先定义链表结点 public class ListNode { int val; ListNode next = null; L ...

  5. JAVA实现从尾到头打印链表(《剑指offer》)

    最近在刷<剑指offer>里的编程题,但是网上关于<剑指offer>的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码 ...

  6. 【剑指Offer】从尾到头打印链表

    剑指Offer 从尾到头打印链表 题目描述 解法1 实现代码 一点补充 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解法1 这道题主要思路是while循环从头遍历整个列 ...

  7. 剑指Offer - 九度1511 - 从尾到头打印链表

    剑指Offer - 九度1511 - 从尾到头打印链表2013-11-29 21:08 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测试案 ...

  8. LeetCode-剑指 Offer 06. 从尾到头打印链表

    剑指 Offer 06. 从尾到头打印链表 思路一:翻转 1:用vector存从头到尾的每个节点值 2:返回时候用reverse翻转一下 时间复杂度:O(n) 空间复杂度:O(n) /*** Defi ...

  9. 剑指offer06.从尾到头打印链表

    剑指offer06.从尾到头打印链表 1. 改变链表结构的解法 2.可以使用栈,递归,或者直接反向输出数组 提示: 若是面试遇到此题,最好先向面试官确认是否可以改变链表的结构, 1. 改变链表结构的解 ...

  10. python 从尾到头打印链表

    从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值 (用数组返回).示例 1:输入:head = [1,3,2] 输出:[2,3,1] 提供三种题解 # Definition fo ...

最新文章

  1. 半导体行业必将再火十年!两大趋势成发展新动能
  2. 执行Shell脚本的4种方法
  3. CxImage的使用及基本用法
  4. C#对事务的代码封装
  5. 安装 VMware Tools 实现窗口 自适应 及 主机与虚拟机之间复制粘贴
  6. 解决C++代码单元测试中的难题-不可验证和IO调用
  7. #化鲲为鹏,我有话说# 鲲鹏弹性云服务器配置 Tomcat
  8. 计算机睡眠断网,win7睡眠不断网设置方法汇总
  9. 一个毕业设计 儿童趣味数学 app
  10. 榜样的力量——清华大学大数据软件团队2020年度先进个人风采展示
  11. IDEA 去掉 pom 文件标签名称下划线
  12. SpringCloud详细教程(上)
  13. 新版openwrt配置vlan 拨号-局域网-iptv
  14. 使用mdadm创建raid mdadm命令详解_php_sir_新浪博客
  15. Oracle11g客户端使用2
  16. 笔记本+win7下USB转串口驱动的安装
  17. 地级市数字经济数据(变异系数法,主成分分析法,熵值法,整理好的面板数据)
  18. css动画,实现落叶效果
  19. 四年级计算机ppt教学,四年级计算机(上册).ppt
  20. AidLux智慧交通实战-车辆检测AI对抗攻防算法实现

热门文章

  1. java高速公路系统_基于jsp的高速公路收费系统-JavaEE实现高速公路收费系统 - java项目源码...
  2. 小项目一:使用fping统计网络中主机的网络连通情况
  3. 隐藏IIS响应头信息
  4. Ubuntu12.04 Thinkpad T410i 安装记录 持续更新...
  5. win11彻底卸载微软bing输入法,包括删除输入法状态栏图标
  6. 7款家用智能摄像头横评:小米、乐橙、TP-LINK、海康威视、360、智汀、华为
  7. 读书笔记-反省使人成长
  8. 数据字典chm制作教程
  9. 铜仁学院官网计算机二级报名,贵州铜仁学院2015年9月全国计算机等级考试报名通知...
  10. Kotlin back field