http://acm.hdu.edu.cn/showproblem.php?pid=1001
#include<iostream> using namespace std; int main(){ long int n,sum=0; while(cin>>n){ for(int i=0;i<=n;++i){ sum+=i; } cout<<sum<<endl<<endl; sum=0; } return 0; }
如果用高斯公式S=(n+1)n/2的话,很可能超出32bit的内存限制sum=(1+n)*n/2;
http://acm.hdu.edu.cn/showproblem.php?pid=1040
#include<iostream> using namespace std; int main(){ int T,N,a[1000],n; cin>>T; while(T--){ cin>>N; for(int i=0;i<N;i++){ cin>>n; a[i]=n; } for(int i=0;i<N-1;++i){ for(int j=i+1;j<N;++j){ if(a[i]>a[j]) swap(a[i],a[j]); } } for(int i=0;i<N-1;++i){ cout<<a[i]<<" "; } cout<<a[N-1]<<endl; } }
http://acm.hdu.edu.cn/showproblem.php?pid=1096
#include<iostream> using namespace std; int main(){ int cont1,cont2,sum=0,a; cin>>cont1; while(cont1--){ cin>>cont2; while(cont2--){ cin>>a; sum+=a; } cout<<sum<<endl; if(cont1>0) cout<<endl; sum=0; } return 0; } #include<iostream> using namespace std; int main(){ char a[3],b[3],c[3]; cin>>a>>b; for(int i=0;i<3;i++) cout<<a[i]-48+b[i]-48; //cout里有int型的48,会把char转化正ascii码~~!!! }
一个易错点:输入的是字符型的,最后cout的是int型的,而下一个是cout的 char型的~~!!
#include<iostream> using namespace std; int main(){ char a[3],b[3],c[3]; cin>>a>>b; //空格是分隔符 for(int i=0;i<3;i++) c[i]=a[i]+b[i]-48; for(int i=0;i<3;i++) cout<<c[i]; }
输入一整行的字符串时候,
如果用string buf;来保存:
getline( cin , buf );
如果用char buf[ 255 ]; 来保存:
cin.getline( buf, 255 );
#include<iostream> #include<string> using namespace std; int main(){ string buf; getline(cin,buf); cout<<buf<<endl; char buffer[20]; cin.getline(buffer,20,'\n'); int len=strlen(buffer); for(int i=0;i<len;++i) cout<<buffer[i]; }
getline 是一个函数,它可以接受用户的输入的字符,直到已达指定个数,或者用户输入了特定的字符。它的函数声明形式(函数原型)如下:
istream& getline(char line[], int size, char endchar = '\n');
不用管它的返回类型,来关心它的三个参数:
char line[]: 就是一个字符数组,用户输入的内容将存入在该数组内。
int size : 最多接受几个字符?用户超过size的输入都将不被接受。
char endchar :当用户输入endchar指定的字符时,自动结束。默认是回车符。
结合后两个参数,getline可以方便地实现: 用户最多输入指定个数的字符,如果超过,则仅指定个数的前面字符有效,如果没有超过,则用户可以通过回车来结束输入。