特殊函数
特殊函数 (一直更新)
1.isprintf(s[i]);判断一个字符是否能输出
1.1代码展示:
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
string s = "12d1 2 ddsd";
int d = 0;
for (int i = 0; i<s.length(); i++)
{
if (s[i] != ' ' && isprint(s[i])) //判断不为空格 且能输出;
{
s[d++] = s[i];
}
}
cout << "改变后的字符串是:" << endl;
for (int i = 0; i < d; i++)
{
cout << s[i];
}
}
1.2效果展示:
2.setw()函数的运用
2.1理论知识:
setw(int n)是c++中在输出操作中使用的字段宽度设置,设置输出的域宽,n表示字段宽度。只对紧接着的输出有效,紧接着的输出结束后又变回默认的域宽。
当后面紧跟着的输出字段长度小于n的时候,在该字段前面用空格补齐;当输出字段长度大于n时,全部整体输出。
2.2空格补齐型隔离(n>1)
代码展示:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int a[3] = {1,2,3};
for (int i = 0; i < 3; i++)
{
cout << setw(2) << a[i]; //setw(n)
}
return 0;
}
效果展示:
2.3整体输出型 紧接(n<1)
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int a[3] = {1,2,3};
for (int i = 0; i < 3; i++)
{
cout << setw(0) << a[i]; //setw(n)
}
return 0;
}
效果展示:
2.4只对接着的有效
代码展示:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int a[3] = {1,2,3};
for (int i = 0; i < 3; i++)
{
cout << setw(2) << a[i]<<4;
}
return 0;
}
效果展示:
3.setfill()补充填充
代码展示:
#include <iostream>
#include <string.h>
#include <iomanip>
using namespace std;
int main()
{
string s = "123";
cout << setw(5) << setfill('*') << s << endl; // 共设置5个空间,用不满的在前面加*,用不满的话不用
return 0;
}
效果展示
4.sort()函数排序问题
4.1理论展示:
1.如果用sort进行排序,那么需要用头文件#include
2、sort模板含三个参数:
sort (begin,end,cmp)
参数begin:要排序数组的起始地址(第一个数据的地址)
参数end:最后一个数据的下一个数据的地址
参数cmp:若这个参数不写,默认为升序
4.2 默认不写(为升序)
代码展示
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
int main()
{
int i;
string s;
cin >> s;
sort(s.begin(), s.end());
for (i = 0; i < s.length(); i++)
{
cout << s[i] << " ";
}
return 0;
}
效果展示:
4.3写了cmp依旧为升序:
代码展示
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a<b; //或则在cmp函数里面写return a<b,也是升序
}
int main()
{
int a[]={6,5,8,4,3,2},i;
sort(a,a+6,cmp);
for(i=0;i<5;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
效果展示:
4.4写了cmp为降序
代码展示
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a>b; //注意这里是a>b是指降序
}
int main()
{
int a[]={6,5,8,4,3,2},i;
sort(a,a+6,cmp);
for(i=0;i<5;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
效果展示:
5.求最大公因数(gcd)
1.头文件 #include
2.原型gcd(非float,非float);
3.基本思路和方法
while()循环方法
int gcd(int a,int b) {
int r;
while (a%b!=0)
{
r=a%b;
a=b;
b=r;
}
return b; }
2.递归+三元运算符
int gcd(int a, int b) { return b > 0 ? gcd(b, a % b) : a; }
3.递归+ if 语句
求x 和 y 的最大公约数,就是求 y 和 x % y 的最大公约数
int gcd(int a,int b) {
if(a%b==0)
return b;
else
return (gcd(b,a%b)); }
3.代码展示:
#include <iostream>
#include <algorithm>
using namespace std;
int gcd(int a, int b)
{
return b > 0 ? gcd(b, a % b) : a;
}
int main()
{
int a, b;
cin >> a >> b;
cout << gcd(a, b) << endl;
}
4.效果展示:
(六)、put级联
1.定义
级联(cascade)在计算机科学里指多个对象之间的映射关系,建立数据之间的级联关系提高管理效率
代码展示:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
cout.put('C').put('+').put('+').put('\n');
return 0;
}
效果展示:
(七)、pow(int a,int b)函数用来实现a的b次方
代码展示:
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
int main()
{
int a = 3, b = 0;
int c=pow(a, 1);
cout << c << endl;
}
效果展示:
(八)、延时操作 (Sleep)
#include <windows.h>
Sleep(1000); //以毫秒为单位
代码展示
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
int a;
Sleep(1000);
cin >> a;
cout << a << endl;
}
效果展示:
(九)、qsort()函数---------c语言没有sort 但是又qsort()
1.格式:
int compar(void const* p1, void const* p2)
{
return (*(int*)p1 - *(int*)p2) * (-1); //前两个实际是整形向加减
*(-1) 降序 *(1)升序
}
int main()
{
qsort(数组名,数组长度,某个数的字节数,int(compar(const void*,const void*));
}
2.包含的库文件
#incldue <stdlib.h>
代码展示:
#include <stdio.h>
#include <stdlib.h>
int compar(void const* p1, void const* p2)
{
return (*(int*)p1 - *(int*)p2) * (-1); //前两个实际是整形向加减
}
void show(int a[],int n)
{
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
}
int main()
{
int a[] = { 24,58,62,38,2,74,89 };
int length = sizeof(a) / sizeof(int);
qsort(a, length, sizeof(a[0]), compar);
show(a, length);
}
效果展示:
本文含有隐藏内容,请 开通VIP 后查看