1 如何输出025 %02d 如果要防止一个数的值前面带有0,可以将他赋给一个变量,输出该变量。
2 用c++控制输入的格式,即占几个空,对齐的要求。用setw(),包含头文件#include<iomanip> setprecision()来控制小数后面的位数
#include<iostream>
#include<iomanip>
usinig namespace std;
int main()
{
cout<<setw(4)<<left<<a<<endl; 左对齐,4个位
cout<<setprecision(4)<<a<<endl;
}
3 3个整数排序的最简方法 if(a>b) 调整 if(a>c) 互换 if(b>c) 互换
还可以用sort函数来写 #include<algorithm> int a[5]; sort(a,a+5) 可以对其进行排序
4 程序运行时间 #include<ctime> (double)clock()/CLOCKS_PER_SEC;
5 清0数组 memset(a,0,sizeof(a));
6 如何在c++中用文件读写文件
7 算法竞赛入门2-6 用1,2...9组成3个3位数,每个数恰好只能使用1次,要求abc,,def,ghi=1:2:3,求出所有解
#include<iostream>
using namespace std;
int main()
{
int a,b,c,i;
int q[10];
for(a=123;a<=987/3;a++)
{
for(i=0;i<10;i++) q[i]=1;
b=a*2;
c=3*a;
if(q[(a/100)]) q[(a/100)]=0;
else continue;
if(q[(a/10%10)]) q[(a/10%10)]=0;
else continue;
if(q[(a%10)]) q[(a%10)]=0;
else continue;
if(q[(b/100)]) q[(b/100)]=0;
else continue;
if(q[(b/10%10)]) q[(b/10%10)]=0;
else continue;
if(q[(b%10)]) q[(b%10)]=0;
else continue;
if(q[(c/100)]) q[(c/100)]=0;
else continue;
if(q[(c/10%10)]) q[(c/10%10)]=0;
else continue;
if(q[(c%10)]) q[(c%10)]=0;
else continue;
cout<<a<<" "<<b<<" "<<c<<endl;
}
}
更优的算法
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int a,b,c,s[10],sum,i;
for(a=123;a<=987/3;a++)
{
b=2*a;
c=3*a;
memset(s,0,sizeof(s));
s[a/100]=s[(a/10)%10]=s[a%10]=1;
s[b/100]=s[(b/10)%10]=s[b%10]=1;
s[c/100]=s[(c/10)%10]=s[c%10]=1;
sum=0;
for(i=1;i<10;i++)
{
sum+=s[i];
}
if(sum==9)
cout<<a<<" "<<b<<" "<<c<<endl;
}
}
8 memcpy(b,a,sizeof(int)*k) 将数组a的元素全部转移到数组中
9 介绍2个函数
sprintf(buf,"%d%d%d%d",a,b,c,d);a,b,c,d全部存到buf中,且每个字母占据一个地址
2 用c++控制输入的格式,即占几个空,对齐的要求。用setw(),包含头文件#include<iomanip> setprecision()来控制小数后面的位数
#include<iostream>
#include<iomanip>
usinig namespace std;
int main()
{
cout<<setw(4)<<left<<a<<endl; 左对齐,4个位
cout<<setprecision(4)<<a<<endl;
}
3 3个整数排序的最简方法 if(a>b) 调整 if(a>c) 互换 if(b>c) 互换
还可以用sort函数来写 #include<algorithm> int a[5]; sort(a,a+5) 可以对其进行排序
4 程序运行时间 #include<ctime> (double)clock()/CLOCKS_PER_SEC;
5 清0数组 memset(a,0,sizeof(a));
6 如何在c++中用文件读写文件
7 算法竞赛入门2-6 用1,2...9组成3个3位数,每个数恰好只能使用1次,要求abc,,def,ghi=1:2:3,求出所有解
#include<iostream>
using namespace std;
int main()
{
int a,b,c,i;
int q[10];
for(a=123;a<=987/3;a++)
{
for(i=0;i<10;i++) q[i]=1;
b=a*2;
c=3*a;
if(q[(a/100)]) q[(a/100)]=0;
else continue;
if(q[(a/10%10)]) q[(a/10%10)]=0;
else continue;
if(q[(a%10)]) q[(a%10)]=0;
else continue;
if(q[(b/100)]) q[(b/100)]=0;
else continue;
if(q[(b/10%10)]) q[(b/10%10)]=0;
else continue;
if(q[(b%10)]) q[(b%10)]=0;
else continue;
if(q[(c/100)]) q[(c/100)]=0;
else continue;
if(q[(c/10%10)]) q[(c/10%10)]=0;
else continue;
if(q[(c%10)]) q[(c%10)]=0;
else continue;
cout<<a<<" "<<b<<" "<<c<<endl;
}
}
更优的算法
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int a,b,c,s[10],sum,i;
for(a=123;a<=987/3;a++)
{
b=2*a;
c=3*a;
memset(s,0,sizeof(s));
s[a/100]=s[(a/10)%10]=s[a%10]=1;
s[b/100]=s[(b/10)%10]=s[b%10]=1;
s[c/100]=s[(c/10)%10]=s[c%10]=1;
sum=0;
for(i=1;i<10;i++)
{
sum+=s[i];
}
if(sum==9)
cout<<a<<" "<<b<<" "<<c<<endl;
}
}
8 memcpy(b,a,sizeof(int)*k) 将数组a的元素全部转移到数组中
9 介绍2个函数
sprintf(buf,"%d%d%d%d",a,b,c,d);a,b,c,d全部存到buf中,且每个字母占据一个地址
strchr(s,buf[i]) 查找某字符在字符串首次出现的位置,不出现,即为NULL
10 3个数a,b,c,输出a/b,保留c位小数
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int a,b,c;
while(scanf("%d%d%d",&a,&b,&c)==3)
{
printf("%.*lf\n",c,(double)a/b);
}
}
提示 /*printf的特殊用法:对于m.n的格式可以用如下方法表示char ch[20];
printf("%*.*s\n",m,n,ch);前边的*定义的是总的宽度,
后边的定义的是输出的个数。分别对应外面的参数m和n 。
这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。
*/