1.求最值
采用擂台法。
#include<iostream>
using namespace std;
int l(int a[5],int n);
int main_4()
{
int a[5];
int i,n;
cin >> n;
for (i = 0; i < 5; i++)
cin >> a[i];
cout<<l(a,n);
return 0;
}
int l(int a[], int n)
{
int m = a[0],i=0;
for (i = 1; i < 5; i++)
if (m > a[i])
m = a[i];
return m;
}
2.判断素数
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int i, b, x;
cin >> x;
b = sqrt(x);
for (i = 1; i <= b; i++)
if (x % i == 0)
break;
if (i >= b + 1)
cout << "yes";
else
cout << "no";
return 0;
}
3.选择排序和冒泡排序
3.1选择排序
#include<iostream>
using namespace std;
void sort(int a[], int n);
int main_3()
{
int n;
cin >> n;
int list[10];
for (int i = 0; i < 10; i++)
cin >> list[i]; //输入数据
sort(list ,n); //调用函数
for (int i = 0; i < 10; i++) //输出结果
cout << list[i];
return 0;
}
void sort(int a[], int n) //定义发挥选择排序功能的函数
{
int j, i, p,t;
for (j =0; j <n;j++)
{
p = j; //注意标记下标的变量初始化
for (i = j+1; i <n; i++)
{
if (a[i] < a[p])
{
p = i;
}
}
t = a[j];
a[j] = a[p];
a[p] = t;
}
}
3.2冒泡排序
#include<iostream>
using namespace std;
void sort(int a[], int n); //声明函数
int main()
{
int n;
cin >> n;
int list[10]={0}; //定义并初始化数组
for (int i = 0; i < 10; i++) //输入数组
cin >> list[i];
sort (list,n); //调用函数排序
for (int i = 0; i < 10; i++)
cout << list[i];
return 0;
}
void sort(int a[], int n )
{
int h,i;
int t;
for (h = 0; h < n - 1; h++) //比较五趟
for (i = 0; i < n - 1 - h; i++)
if (a[i] < a[i + 1]) //两两比较
{
t = a[i + 1];
a[i + 1] = a[i];
a[i] = t;
}
}
4.折半查找
#include<iostream>
using namespace std;
int main_1()
{
int n[15], num;
bool leap = 1;
cout << "请由大到小输入15个数:" << endl;
for (int i = 0; i < 15; i++)
cin >> n[i];
cout << "请输入需要查找的数字:";
cin >> num;
for (int i = 0, m, h = 14; i <= h;)
{
m = (i + h) / 2;
if (num == n[m])
{
cout << "该数是数组中第" << m + 1 << "个元素的值。" << endl;
leap = 0;
break;
}
else if (num < n[m])
i = m + 1;
else
h = m - 1;
}
if (leap)
cout << "无此数。" << endl;
return 0;
}
5.统计各类字符数量
#include<iostream>
using namespace std;
int main_2()
{
char s[30];
int i = 0, sign = 0, digit = 0, other = 0;
cout << "请输入一串字符" << endl;
cin.getline(s, 30);
while (s[i])
{
if (s[i] >= 'A' && s[i] <= 'z' || s[i] >= 'a' && s[i] <= 'z')
sign++;
else if (s[i] >= '0' && s[i] <= '9')
digit++;
else
other++;
i++;
}
cout << "原字符串" << s << endl;
cout << "字母,数字,其他个数分别为:" << endl << sign << " " << digit << " " << other << endl;
return 0;
}
6.在原串中查找子串
#include<iostream>
#define NULL 0
using namespace std;
char* fF(char* es, char* bs);
int main_5()
{
char s[30], bs[20];
char* p;
p = s;
cout << "输入源码" << endl;
cin >> s;
cout << "输入子码" << endl;
cin >> bs;
p = fF(s, bs);
if (p)
cout << "字串首次出现是从第" << p - s + 1 << "个字符开始" << endl;
else
cout << "No" << endl;
return 0;
}
char* fF(char* es, char* bs)
{
char* p1, * p2;
int i, len1 ,len2;
len1 = strlen(es);
len2 = strlen(bs);
for (i = 0; i < len1 - len2; i++)
{
p1 = es + i;
for (p2 = bs; *p2;)
if (*p1 != *p2)
break;
else
{
p1++;
p2++;
}
if (!*p2)
return(es + i);
}
return NULL;
}