24.【特殊函数篇==(十篇一章,持续更新~)】

发布于:2023-01-14 ⋅ 阅读:(317) ⋅ 点赞:(0)

特殊函数 (一直更新)

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 后查看