m个人的成绩存放在score数组中,请编写函数fun,它的功能是:
将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
/*
题目要求:
m个人的成绩存放在score数组中,请编写函数fun,它的功能是:
将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
编程思路:
1)平均值就是(A+B+C+D+E+F)/总数项
*/
#include "stdafx.h"
#include
#include
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]
通过《剑指offer 名企面试官精讲典型编程题》看到一道讲解链表的题目。
输入一个链表的头结点,从尾到头反过来打印出每个结点的值
链表定义如下:
typedef struct _NODE
{
T Data;
_NODE* pNext;
}NODE, *PNODE;
书中提到解决问题可以利用栈,“后进先出”的特点实现这种顺序,每经过一个节点的时候,把该节点放到一个栈中。
当遍历完整个链表后,再从栈顶开始逐个输出节点的值。此时输出的节点顺序就已经反转过来了。
栈实现的方式代码如下:
void revse_printfAll()
{
if (m_pHead == NULL)
{
return;
}
NODE* pTemp = m_pHead;
// stack 实现
stack 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 nodes1;
while (pTemp != NULL)
{
nodes1.push_back(pTemp);
pTemp = pTemp->pNext;
}
while (!nodes1.empty())
{
pTemp = nodes1.back();
cout << pTemp->Data;
nodes1.pop_back();
}
}
定义整型数组src,长度为10,初始化为{11,12,47,24,49,69,90,89,18,39}。之后用嵌套for循环比较相邻两个元素的大小,如果前一个元素大于后一个,不做任何操作;反之,相互交换。在交换的过程中需要临时变量暂时存放第一个元素的值,命名为temp。
#include
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]
#include
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]
Sub test()
Dim arr, Select_Sort
arr = Array(5, 8, 5, 2, 9)
' 冒泡排序
For i = 0 To UBound(arr)
For j = 0 To UBound(arr) - i - 1
Debug.Print arr(i); "=="; arr(j + 1)
Debug.Print j; "=="; j + 1
If arr(j) > arr(j + 1) Then vSwap = arr(j): arr(j) = arr(j + 1): arr(j + 1) = vSwap
Next
Next
For 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; "=="; j
If Select_Sort(i) > Select_Sort(j) Then vSwap = Select_Sort(i): Select_Sort(i) = Select_Sort(j): Select_Sort(j) = vSwap
Next
Next
For i = 0 To UBound(Select_Sort)
Debug.Print Select_Sort(i)
Next
End Sub
对于给定值的查找,如果大于该数组的中间元素,下一步在元素值大的区域继续与其中间元素比较;否则下一步在元素值小的区域内继续查找,直到找到目标元素。如果到最后还没有找到,则输出“数组中没有该元素”。
#include
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<<"元素"<array_039[search_index])//大于,往右边移
binary_search(search_index+1,right,value);
else if(value>temp;
binary_search(0,9,temp);
return 0;
}
题目内容:
求斐波那契Fibonacci数列
求函数f(n) = 0 n = 0
= 1 n = 1
= f(n-1) + f(n-2) n > 1
/*
题目要求:
解法:斐波那契数列的变相考查,总数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
def fibonacci (n) :
if n == 0:
return 0
elif n == 1:
return 1
else:
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