//例1.5
#include<iostream>
#include<math.h>
using namespace std;
float d, x, x1, x2;
void solution(float a, float b, float c)
{
d = b * b - 4 * a*c;
if (d > 0)
{
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
cout << "两个实根:" << "x1=" << x1 <<" "<< "x2=" << x2<<endl;
}
else if (d == 0)
{
x = (-b) / (2 * a);
cout << "一个实根:" << "x=" << x<<endl;
}
else
cout << "不存在实根"<<endl;
}
int main()
{
cin >> x >> x1 >> x2;
solution(x, x1, x2);
}
//例1.9
#include<iostream>
using namespace std;
void fun(int a[],int n,int k)
{
int i;
if (k == n - 1)
{
for (i = 0; i < n; i++)
printf("%d\n", a[i]);
}
else
{
for (i = k; i < n; i++)
a[i] = a[i] + i * i;
fun(a, n, k + 1);
}
}
int main()
{
int a[10] = { 0 }, n, k;
cin >> n >> k;
fun(a, n, k);
}
9. 推导大 O阶:
用常数1代替运行时间中的所有加法常数。
在修改后的运行次数函数中,只保留最高阶项。
如果最高阶项存在且不是1,则去除与这个项相乘的常数。
- 答:凡是能被计算机存储、加工的对象统称为数据,数据是一个集合。数据元素是数据的基本单位,是数据的个体。数据元素与数据之间的关系是元素与集合之间的关系。
- 答:该逻辑结构为树形结构,其中 a 结点没有前驱结点,它是开始结点,b、e、i 和 g、 结点没有后继结点,它们都是终端结点。
答:在数据结构中,逻辑结构与计算机无关,存储结构是数据元素之间的逻辑关系在 计算机中的表示。存储结构不仅将逻辑结构中所有数据元素存储到计算机内存中,而且还 要在内存中存储各数据元素间的逻辑关系。通常情况下,一种逻辑结构可以有多种存储结 构,例如,线性结构可以采用顺序存储结构或链式存储结构表示。
答:运算描述是指逻辑结构施加的操作,而运算实现是指一个完成该运算功能的算法。 它们的相同点是,运算描述和运算实现都能完成对数据的“处理”或某种特定的操作。不同点是,运算描述只是描述处理功能,不包括处理步骤和方法,而运算实现的核心则是设 计处理步骤。
答:数据结构是相互之间存在一种或多种特定关系的数据元素的集合,一般包括三个 方面的内容,即数据的逻辑结构、存储结构和数据的运算。而数据类型是一个值的集合和 定义在这个值集上的一组运算的总称,如C语言中的short int数据类型是由-32768~32767 (16位机)的整数和+、-、*、/、%等运算符构成。
答:在算法设计中,一个算法通常用一个或多个 C/C++函数来实现,在 C/C++函数之 间传递参数时有两种情况,一是从实参到形参的单向值传递,二是实参和形参之间的双向 值传递。对形参使用引用运算符,即在形参名前加上“&”,不仅可以实现实参和形参之间 的双向值传递,而且使算法设计简单明晰。
答:本算法的功能是计算y=x^n,可以理解为for(int i=n;i>1;i--)执行
//#include<iostream> //using namespace std; //#define N 101 //int a[N][N]; int sum(int a[N][N],int n) { int s = 0; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) s += a[i][j]; return s; }本算法的时间复杂度为 O(n2)。 //int main() //{ // int n; // cin >> n; // for (int i = 0; i < n; i++) // for (int j = 0; j < n; j++) // cin >> a[i][j]; // cout << sum(a,n); //}
//#include<iostream> //using namespace std; void order(int a, int b, int c) { if (a > b) { if (b > c) cout << c << b << a; else if (a > c) cout << b << c << a; else cout << b << a << c; } else { if (b > c) { if (a > c) cout << c << a << b; else cout << a << c << b; } else cout << a << b << c; } }时间复杂度为O(1)。 //int main() //{ // int a, b, c; // cin >> a >> b >> c; // order(a, b, c); //}
//#include<iostream> //using namespace std; //#define N 101 void maxnmin(int a[N],int n) { int max, min; max = min = a[0]; for (int i = 0; i < n; i++) { max = max > a[i] ? max : a[i]; min = min < a[i] ? min : a[i]; } cout << max << min; }时间复杂度为O(n) //int main() //{ // int a[N],n; // cin >> n; // for (int i = 0; i < n; i++) // cin >> a[i]; // maxnmin(a,n); //}
f(n)去常数项1000,保留最高阶项100n^3,去100.为O(n^3)
g(n)为O(n^3)
当n→∞时, √n>log2n,所以h(n)=n ^l.5+5000nlog2n=O(n^1.5)
10.答:j=0,第 1 次循环:j=1,s=10。第 2 次循环:j=2,s=30。第 3 次循环:j=3,s=60。第 4 次循环:j=4,s=100。while 条件不再满足。所以,其中循环语句的执行次数为 4。
11(1)for(int i=1;i<n;i+=2)
(2)列出两个求和的式子,分别取i为第一个式子端点,i为0时,第二个循环执行了n-1次,i为n-2时,第二个循环执行了0次,求和即可n*(a1+an)/2。
(3)0+1+2+.....+x<=n,x=√n
12.(不会)
13
.
如果想看上机实验题,自行购买上机指导!!!!!