解决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;
保留指定小数位
- C++ cout 输出指定小数位
#include<iomanip>
cout<<setiosflags(ios::fixed)<<setprecision(3);
cout<<2.1<<endl; //输出2.100
- C++ printf 输出指定小数位
#include<cstdio>
printf("%.3f",2.1); //输出2.100
字符串、数组
- int 数组分配空间大小
int num[10]={0,1};
cout<<sizeof(num)/sizeof(num[0]);
//输出 10
- 字符串长度
string str="123";
cout<<str.length();
//输出 3
- 字符串 转 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
- 数 和 字符串 互转
#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;
}
- 输入一行包含空格的字符串
getline(cin,str);
gcd&lcm
- 两个数的gcd
int gcd(int a,int b)
{
if(b==0) return a;
return gcd(b,a%b);
}
- 多个数的gcd
for(int i=0;i<n-1;i++)
{
a[0]=gcd(a[i],a[0]);
}
//多个数的gcd存在a[0]
- 最小公倍数
int lcm(int a,int b)
{
return a*b/gcd(a,b);
return a/gcd(a,b)*b; //更合理,防a*b溢出
}
sort排序
- 默认由小到大
sort(num,num+8);
- 自定义函数由大到小
int cmp(int a,int b)
{
return a>b;
}
sort(num,num+8,cmp);