严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
能用到的函数,比如sort、next_permutation等,STL同理。
islower(a):判断是不是小写,返回布尔值
isupper(a):判断是不是大写,返回布尔值
toupper(a):转化成大写 ,返回转化后的大写字符
tolower(a):转化成小写,返回转化后的小写字符
这几个方法,头文件是include< ctype.h >
用于交换两个数的值
#include
using namespace std;
int main()
{
int a = 1;
int b = 2;
swap(a, b);
std::cout<<a<<" "<<b<<std::endl;
return 0;
}
2.14
pow函数的作用是求幂。
数学公式:计算x的y次幂;
返回值:x不能为负数且y为小数,或者x为0且y小于等于0,返回幂指数的结果;
返回类型:double型。例如,求3的6次方:
#include
#include
int main()
{
double x = 3, y = 6; //为变量赋初值
double result = pow(x, y); //求a的b次方
printf("%lf\n", result);
return 0;
}
也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数,如C,pascal,Visual以及LotusScript中进行字符串拷贝,计算长度,字符查找等的函数。
原型:extern char *strcpy(char *dest,char *src);
用法:#include
功能:
把src所指由NUL结束的字符串复制到dest所指的数组中。
返回指向dest结尾处字符(NUL)的指针。
原型:extern char *strcat(char *dest,char *src);
用法:#include
功能:
把src所指字符串添加到dest结尾处(覆盖dest结尾处的’\0’)并添加’\0’。
返回指向dest的指针。
原型:extern int strlen(char *s);
用法:#include
功能:计算字符串s的长度
说明:返回s的长度,不包括结束符NULL。
原型:extern char *strncpy(char *dest, char *src, int n);
用法:#include
功能:把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。
说明:
1.如果src的前n个字节不含NULL字符,则结果不会以NULL字符结束。
2.如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。
3.src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
功 能: 将一个串与另一个比较
用 法: int strcmp(char *str1, char *str2);
2.25
标准C中是没有reverse()函数的,这是C++的一个新增函数,reverse()函数可以对字符串进行反转操作,头文件是#include< algorithm >.
例如:
一、交换string字符串中元素的顺序
string str="woaini";
reverse(str.begin(),str.end());//str结果为iniaow
二、交换字符数组char[]中元素的顺序
char a[99] = "hello world";
reverse(a,a+strlen(a));
3.1
函数名: ceil
用 法: double ceil(double x);
功 能: 返回大于或者等于指定表达式的最小整数;向下取整,返回x的下一个最小值。
头文件:math.h
返回数据类型:double
3.19
sort函数,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#include
的c++标准库中。
语法
Sort(start,end,cmp)
参数
(1)start表示要排序数组的起始地址;
(2)end表示数组结束地址的下一位;
(3)cmp用于规定排序的方法,可不填,默认升序。
例如对数组a[10]排序,sort(a,a+10)
实现从大到小的排序需要在sort()函数里的第三个参数。
需要加入一个比较函数compare(),此函数的实现过程如下:
#include
#include
using namespace std;
bool compare(int a,int b)
{
return a>b;
}
int main()
{
int a[10]={9,6,3,8,5,2,7,4,1,0};
for(int i=0;i<10;i++)
cout<<a[i]<<endl;
sort(a,a+10,compare);//在这里就不需要对compare函数传入参数了
for(int i=0;i<10;i++)
cout<<a[i]<<endl;return 0;
}
3.19
这个函数有个必要的前提,那就是你要全排列的数组要先按从小到大的顺序排列,用sort就好,sort与next_permutation()用到的都是algorithm头文件。next_permutation函数是STL提供的用来计算排列组合关系的算法,
next_permutation()会取得(first,last)所标示之序列的下一个排列组合,如果没有下一个排列组合,便返回false;否则返回true。
比如:一、输出序列{1,2,3,4}字典序的全排列。
#include
#include
using namespace std;
int main(int argc, char** argv) {
int a[4]={1,2,3,4};
sort(a,a+4);
do{
for(int i=0;i<4;i++)
cout<<a[i]<<" ";
cout<<endl;
}while(next_permutation(a,a+4));
return 0;
}
二、输入任意一个字符串,输出其字典序的全排列
#include
#include
using namespace std;
int main(int argc, char** argv) {
string str;
cin>>str;
sort(str.begin(),str.end());
do{
cout<<str<<endl;
}while(next_permutation(str.begin(),str.end()));
return 0;
}
三、7个数的集合为{1, 2, 3, 4, 5, 6, 7},要求出第n=1654个排列。
#include
#include
using namespace std;
int main(int argc, char** argv) {
int a[7]={1,2,3,4,5,6,7};
sort(a,a+7);
int n=0;
do{
if(n==1654){
for(int i=0;i<7;i++)
cout<<a[i];
cout<<endl;
break;
}
n++;
}while(next_permutation(a,a+7));
return 0;
}
1.判断闰年
闰年:
能被4整除,不能被100整除。
能被4整除,也能被100整除。(能被400整除)
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) ){
std::cout << year << " is 闰年" << std::endl;
}
2.筛选素数
素数又叫质数,即只能被1和自身整除的数,所以除了2以外的所有偶数都不是素数。这个数若不是素数,那么必然有两个因子,两个因子相等的时候,即是这个数的开方。
//筛选法求100以内的素数
//需要注意for循环截止条件是i
//因为对于一个整数n,其是否为素数,在所有小于其平方根的数已经判断完毕,没必要再增加工作量判断到n-1。
#include
#include
int main()
{
int n;
int i;
int flag=0;
for(n=2;n<=100;n++)
{
flag=0;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
flag=1;
break;
}
}
if(flag==0)
printf("%d ",n);
}
return 0;
}
3.最大公约数和最小公倍数
求最小公倍数算法:最小公倍数=两整数的乘积÷最大公约数
求最大公约数算法:辗转相除法
有两整数a和b:① a%b得余数c
② 若c=0,则b即为两数的最大公约数
③ 若c≠0,则a=b,b=c,再回去执行①
例如求27和15的最大公约数过程为:27÷15 余12,15÷12余3,12÷3余0
因此,3即为最大公约数
1 #include<stdio.h>
2 int main() /* 辗转相除法求最大公约数 */
3 {
4 int m, n, a, b, t, c;
5 printf("输入两个整数:\n");
6 scanf("%d%d", &a, &b);
7 m=a; n=b;
8 while(b!=0) /* 余数不为0,继续相除,直到余数为0 */
9 { c=a%b;
a=b;
b=c;
10 printf("最大公约数是:%d\n", a);
11 printf("最小公倍数是:%d\n", m*n/a);
12 }