1001:
Intention:输出各个成绩的等级。
Problem solving:利用整除的性质(即一个整数除一个整数结果仍是整数)的思想。
Detail processing:虽说这道题简单,但是只要你的输出格式不对,wrong answer依然会亲切地迎接你代码的到来。注意最后一组数据结束后一定要转行!!!
Original code: #include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
if(n>=0&&n<=100)
{
if(n/10==10||n/10==9)
cout<<'A'<<endl;
else if(n/10==8)
cout<<'B'<<endl;
else if(n/10==7)
cout<<'C'<<endl;
else if(n/10==6)
cout<<'D'<<endl;
else
cout<<'E'<<endl;
}
else
cout<<"Score is error!"<<endl;
}
return 0;
}
1004:
Intention:判断是否为素数。
Problem solving:素数即为大于二的自然数,除了一和他本身为没有其他因子,如果一个数不为素数,则其最大因子为sqrt(n);则我们只需判断从二到根下n是否有可以被整除的因子即可。有则非,无则是。
Detail processing:用一个变量计数,记因子的个数,如果为零则说明为素数。注意每次输入时一定要清零,否则结果you know。
Original code:#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int a,b,i,j,n,sum;
while(cin>>a>>b)
{
sum=0;
if(a==0&&b==0)
continue;
else
{
for(i=a;i<=b;i++)
{
n=i*i+i+41;
for(j=2;j*j<=n;j++)
{
if(n%j==0&&n!=1)
{
sum++;
}
}
}
}
if(sum==0)
printf("OK");
else
printf("Sorry");
printf("\n");
}
}
1005:
Intention:求一个分数多项式的和。
Problem solving:利用一个循环语句,利用(-1)的次方决定正负,然后直接sum+就好。
Detail processing:这个题是不是很简单,嘿嘿,如果你把sum定义成了int,一首凉凉送给你,需要保留两位小数,故需定义成double类型,另外补充一下cout保留小数的方法,头文件#include<iomanip>,形式:cout<<fixed<<setprecision(要保留的位数)<<sum;
Original code: #include<iostream>
#include<cstdio>
#include<cmath>
#include<iomanip>
using namespace std;
int main()
{
int m,n;
cin>>m;
for(int i=0;i<m;i++)
{
cin>>n;
double sum=0;
for(int j=1;j<=n;j++)
{
sum+=pow((-1),(j+1))*(1.00/j);
}
cout<<fixed<<setprecision(2)<<sum<<endl;
}
return 0;
}
1006:
Intention:求偶数列的和
Problem solving:庆幸自己高中数列学的好的时候到了,利用等差数列求和公式,首先判断这些项数和所要求平均数的个数的关系,然在利用求和公式S(nm)-S((n-1)m)的计算,即可算出。
Detail processing:一定要注意除数为零的处理,不然你的程序运行时会自动提出要你结束他的生命,他可能无法接受他处理不了的事物的存在,哈哈哈。
Original code:奉上菜鸟的代码:
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int main()
{
int n,m,e,x,av;
while(cin>>n>>m)
{
int count=0,k;
e=n/m;
x=n%m;
for(int i=1;i<=e;i++)
{
count++;
av=((i*m*m*i+i*m)-((i-1)*m*m*(i-1)+(i-1)*m))/m;
if(count==1)
cout<<av;
if(count>1)
cout<<" "<<av;
}
if(x==0)
cout<<endl;
else
{
k=((n*n+n)-(m*e*m*e+m*e))/x;
cout<<" "<<k<<endl;
}
}
return 0;
}
1007:
Intention:一个参赛歌手的命根,(评委的平均评分)
Problem solving:通过循环筛选出最大值和最小值,然后利用循环求均值。
Detail processing:再次告诉像我一样初学代码的同志们一句,需要多组输入数据时,用到求和,一定要在下组数据输入时初始为零,一定要化为零,零,零。
哦,对了还有在筛选时注意下组数据输入时也要化为零哦。
Original code:奉上菜鸟的代码:
#include <iostream>
#include<cstdio>
#include<cmath>
#include<iomanip>
int a[110];
using namespace std;
int main()
{
int n;
double av;
while(cin>>n&&n>2&&n<=100)
{
int max=0;
int min=0;
int sum=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
min=a[i];
}
for(int i=0;i<n;i++)
{
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
}
for(int i=0;i<n;i++)
{
sum+=a[i];
}
av=(sum-max-min)*1.00/(n-2);
cout<<fixed<<setprecision(2)<<av<<endl;
}
return 0;
}
1010:
Intention:对一个有序的数列在插入一个数,使其仍有序。
Problem solving:从前向后筛选,筛选到适当的位置,然后从前向后把每一位数向后移以为,以便新插入的数据可以更好的生存。
Detail processing:多组输入数据,最后需要转行。其他也没啥需要特别注意的。
Original code:奉上菜鸟的代码