题目不难,主要注意输出格式即可。

#include <iostream>
#include <cstdio>//有此头文件才可以用printf输出方式。
#include<iomanip>//包含cout输出格式的头文件
using namespace std;
int main()
{
int i,n,a[120];
printf("PERFECTION OUTPUT\n");
while(scanf("%d",&n))
{
int sum=0;
if(n==0)
{
cout<<"END OF OUTPUT"<<endl;
break;//n为0跳出循环
}
if(n==1)
{
printf("%5d DEFICIENT\n",n);
continue;//继续输入,直到输入为0为止
}
for(i=1;i<n;i++)
if(n%i==0) sum+=i;
if(sum<n)
<span style="white-space:pre"> </span>printf("%5d DEFICIENT\n",n);//因为printf控制输出格式比较方便,所以一般不用cout,直接定义头文件#include<cstdio>
/* {
cout<<setw(5)<<n<<" ";
cout<<"DEFICIENT"<<endl; 这两行语句和上面的printf效果一样
}*/
else if(sum==n)
printf("%5d PERFECT\n",n);//前5位相应的整数向右对齐,只要确保所有整数输出5位即可
else
printf("%5d ABUNDANT\n",n);
}
return 0;
}