编写程序,读入一个整数N。
若N为非负数,则计算N到2N之间的整数和;
若N为一个负数,则求2N到N之间的整数和输入:
一个整数N,N的绝对值小于等于1000输出:
测试数据可能有多组,对于每一组数据,输出题目要求的值
样例输入:1-1
样例输出:3-3
第一次写的:
#include<iostream>
using namespace std;
int main()
{
int i;
while(cin>>i){
int j=0,total=0;
if(i<0){
j=i;
i=-i;
}
for(int k=i;k<2*i+1;k++){
total+=k;
}
if(j<0){
total=-total;
}
cout <<total<<endl;
}
return 0;
}
第二次写的:
#include<iostream>
using namespace std;
int main()
{
int i;
while(cin>>i){
int j=0,total=0;
//if(i<0){
// j=i;
// i=-i;
// }
j=(i<0)?i:0;
i=(i<0)?-i:i;
for(int k=i;k<2*i+1;k++){
total+=k;
}
// if(j<0){
// total=-total;
// }
total=(j<0)?-total:total;
cout <<total<<endl;
}
return 0;
}
或者:
#include<iostream> using namespace std; int main() { int i; while(cin>>i){ int k ,total=0, j; j=(i<0)?-i : i; for(k=j;k<2*j+1;k++){ total+=k; } total=(i<0)?-total:total; cout <<total<<endl; } return 0; }
第三次写的(时间增加了10ms):
#include<iostream> using namespace std; int main() { int i ; while(cin>>i){ int k ,total=0, j=(i<0)?-i : i; for(k=j;k<2*j+1;k++){ total+=k; } cout <<(total=(i<0)?-total:total)<<endl; } return 0; }
总结:循环,清零。细节问题上要注意。