計算機程式設計C++(第7周基礎練習)
阿新 • • 發佈:2018-11-19
計算機程式設計C++ MOOC
測試與作業C++基礎練習100題
##第七週基本練習
本週為指標的使用,指標是C++中非常重要的一個工具
- 兩個數的排序
#include "iostream" using namespace std; void sort(int *a, int *b) { int temp; if (*a > *b) { temp = *a; *a = *b; *b = temp; } } int main() { int a, b; cin >> a >> b; sort(&a, &b); cout << a << " " << b << endl; return 0; }
- 三個數的排序
#include "iostream" using namespace std; void sort(int *a, int *b) { int temp; if (*a > *b) { temp = *a; *a = *b; *b = temp; } } void sort(int *a, int *b, int *c) { sort(a, b); sort(b, c); sort(a, b); } int main() { int a, b,c; cin >> a >> b >> c; sort(&a, &b, &c); cout << a << " " << b <<" " << c << endl; return 0; }
- 返回陣列的統計值(最大、最小、平均值、標準差)
#include "iostream" #include "cmath" using namespace std; void statistics(double a[], int n, double *max, double *min, double *avg, double *stdev) { int i = 0; *max = a[0]; *min = a[0]; *avg = a[0]; *stdev = 0; for (i = 1; i < n; i++) { *max = a[i] > *max ? a[i] : *max; *min = a[i] < *min ? a[i] : *min; *avg += a[i]; } *avg /= n; for (i = 0; i < n; i++) { *stdev += (a[i] - *avg)*(a[i] - *avg); } *stdev = sqrt(*stdev / n); } int input(double a[]) { int i = 0, n; while (1) { cin >> n; if (n != -9999) { a[i] = n; i++; } else { break; } } return i; } int main() { double a[100], max, min, avg, stdev; int n; n = input(a); statistics(a, n, &max, &min, &avg, &stdev); cout << max << " " << min << " " << avg << " " << stdev << endl; return 0; }
- 通過指向函式的指標呼叫函式
#include "iostream"
#include "cmath"
using namespace std;
double x2(double x)
{
return x*x;
}
double mysin(double x)
{
return 2 * sin(2 * 3.14 * 2 * x + 3.14);
}
int main()
{
double(*f)(double);
double x;
cin >> x;
f = x2;
cout << f(x) << " ";
f = mysin;
cout << f(x) << endl;
return 0;
}
- 計算任意一元函式值的通用函式
#include "iostream"
#include "cmath"
using namespace std;
double x2(double x)
{
return x*x;
}
double mysin(double x)
{
return 2 * sin(2 * 3.14 * 2 * x + 3.14);
}
double anyfun(double(*f)(double), double x)
{
return (*f)(x);
}
int main()
{
double x;
cin >> x;
cout << anyfun(x2, x) << " ";
cout << anyfun(mysin, x) << endl;
return 0;
}
- 計算函式在指定區間的近似平均值
#include "iostream"
#include "cmath"
using namespace std;
double myexp(double x)
{
return exp(x);
}
double mysin(double x)
{
return sin(x);
}
double mycos(double x)
{
return cos(x);
}
double funavg(double(*f)(double), double a, double b, int n)
{
double avg = 0,h=(b-a)/n;
for (int i = 0; i <= n; i++)
{
avg += (*f)(a + i*h);
}
return avg / (n + 1);
}
int main()
{
double a,b;
cin >> a >> b;
cout << funavg(myexp, a, b, 1000) << " ";
cout << funavg(mysin, a, b, 1000) << " ";
cout << funavg(mycos, a, b, 1000) << endl;
return 0;
}
以上為第七週的基礎練習。