【常用技巧】

解决scanf吃回车

getchar()

输入n后回车,第二个scanf会将回车赋值给op。使用getchar()抢先获得回车。

#include<iostream>
#include<cstdio>
using namespace std;

char n;
char op;
scanf("%c",&n);
getchar();
scanf("%c",&op);

char op[2]

char op[2];
char num;
scanf("%s",op);
scanf("%c",num);

cout<<op<<' '<<num;

保留指定小数位

  1. C++ cout 输出指定小数位
#include<iomanip>

cout<<setiosflags(ios::fixed)<<setprecision(3);
cout<<2.1<<endl; //输出2.100
  1. C++ printf 输出指定小数位
#include<cstdio>

printf("%.3f",2.1); //输出2.100

字符串、数组

  1. int 数组分配空间大小
int num[10]={0,1};
cout<<sizeof(num)/sizeof(num[0]);
//输出 10
  1. 字符串长度
string str="123";
cout<<str.length();
//输出 3
  1. 字符串 转 char数组
#include<cstring>

char a[3];
string str="123";
strcpy(a,str.c_str());//注意 .c_str()
for(int i=0;i<3;i++)
    cout<<a[i]<<' ';
//输出 1 2 3
  1. 数 和 字符串 互转
#include<sstream>

string tostr(int n)
{
    stringstream ss;
    ss<<n;
    string str;
    ss>>str;
    return str;
}
int toint(string str)
{
	stringstream ss;
    ss<<str;
    int num;
    ss>>num;
    return num;
}
  1. 输入一行包含空格的字符串
getline(cin,str);

gcd&lcm

  1. 两个数的gcd
int gcd(int a,int b)
{
    if(b==0) return a;
    return gcd(b,a%b);
}
  1. 多个数的gcd
for(int i=0;i<n-1;i++)
{
     a[0]=gcd(a[i],a[0]);
}
//多个数的gcd存在a[0]
  1. 最小公倍数
int lcm(int a,int b)
{
    return a*b/gcd(a,b);
    return a/gcd(a,b)*b; //更合理,防a*b溢出
}

sort排序

  1. 默认由小到大
sort(num,num+8);
  1. 自定义函数由大到小
int cmp(int a,int b)
{
	return a>b;
}

sort(num,num+8,cmp);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值