1.用筛选法求100之内的素数
解法:定义一个一维数组a,a[1]~a[n]分别代表1~n这那个数,如果检出数组a的某一元素的值不是素数,就使它变为0,最后剩下不为0的就是素数。
#include <iostream>
#include <iomanip>
using namespace std;
#include <cmath>
int main() {
int n, i, j;
int a[101];//定义a数组包含101个元素
for (i = 1; i < 100; i++) {//a[0]不用,只用a[1]~a[100]
a[i] = i; //使a[1]~a[100]的值为1~100
}
a[1] = 0; //去掉a[1]
for (i = 2; i < sqrt(100); i++) {
for (j = i + 1; j <= 100; j++) {
if (a[i] != 0 && a[j] != 0) {
if (a[j] % a[i] == 0) {
a[j] = 0;
}
}
}
}
for (i = 1, n = 0; i <= 100; i++) {
if (a[i] != 0) {//选出不为0的数组元素,即素数
cout << setw(5) << a[i] << " ";//输出素数,宽度为5列
n++;
}
if (n == 10) {
cout << endl;
n = 0;
}
}
cout<<endl;
return 0;
}
运行结果:
5.将一个数组中的值按逆序重新存放。
例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。
#include <iostream>
using namespace std;
int main() {
const int n = 5;
int a[n],temp;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
cout << "array a:" << endl;
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
for (int i = 0; i < n/2;i++) {
temp = a[i];
a[i] = a[n - i - 1];
a[n - 1 - i] = temp;
}
cout << endl << "Now:" << endl;
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}
运行结果:
6.打印出以下的杨辉三角型(要求打印出10行)
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
const int n = 11;
int i, j;
int a[n][n];
for (i = 1; i < n; i++) {
a[i][1] = 1;
a[i][i] = 1;
}
for (i = 3; i < n; i++) {
for (j = 2; j <= i - 1; j++) {
a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
}
}
for (i = 1; i < n; i++) {
for (j = 1; j <= i; j++) {
cout << setw(6) << a[i][j] << " ";
}
cout << endl;
}
cout << endl;
return 0;
}
运行结果:
7.找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点)。
#include <iostream>
using namespace std;
int main() {
const int n = 4, m = 5;
int i, j, a[n][m], max, maxj;
bool flag;
for (i = 0; i < n; i+