一.水仙花数 (题目来源:SDAU课程设计一Problem B)
- 题意: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如153=1^3+5^3+3^3,要求输出某两个数范围内的水仙花数。
- 解决思路:对给定区间内每个数进行处理,判断是否为水仙花数,并用将水仙花数用数组储存,再依次输出。若无水仙花数,输出no。
- 细节处理:处理多组数据;输出最后一个数后面不能有空格,故最后一个数要单独输出;
- 源代码
#include<iostream>
#include<cstdio>
using namespace std;
int p[1001];//数组要全局定义
int main(){
int b=0,c=0,d=0,m,n,s=0;
while(cin>>m>>n){
s=0;
for(int a=m;a<=n;a++){
b=a/100;//百位
c=a/10%10;//十位
d=a%10;//个位
if(a==b*b*b+c*c*c+d*d*d)p[++s]=a;
}
if(s==0)cout<<"no"<<endl;
else
for(int i=1;i<=s;i++){
if (i==s)cout<<p[i]<<endl;
else cout<<p[i]<<" ";//重点注意
}
}
return 0;
}
二.素数判定(题目来源:SDAU课程设计一Problem D)
- 题意:表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。
- 解题思路:当x=0,y=0时,表示输入结束,该行不做处理;数组储存表达式的值,后判断该值是否为素数,根据要求相应输出,换行。
- 细节处理:全局定义数组;理清各个循环范围。
- 源代码
#include <stdio.h>
int a[11000];//全局定义数组
int main(){
int b,c,e,i,m,n,j;
while(scanf("%d%d",&m,&n)!=-1)
{
c=0;
if(m==0&&n==0) return 0;
else{
j=0;
for(i=m;i<=n;i++)
{
j++;
a[j]=i*i+i+41;
}
for(i=1;i<=j;i++)
{for(b=2;b*b<=a[i];b++)
{ if(a[i]%b==0) c++;}}//判断素数
if(c==0) printf("OK\n");
if(c!=0) printf("Sorry\n");
}
}
return 0;
}
三.偶数求和(题目来源:SDAU课程设计一Problem F)- 题意:长度为n(n<=100)的从2开始的递增有序偶数数列,要求按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值,编程输出该平均值序列。
- 解题思路:若n能整除m,则求n/m个平均值,先储存后输出,输出最后一个的后面没有空格,若不能,则输出前n/m个平均值,再输出最后数的平均值,不加空格。
- 细节处理:注意空格的处理,输出最后一个的后面没有空格;while循环的内部注意变量的初始化。
- 源代码
#include<iostream>
#include<cstdio>
using namespace std;
int a[110];
int main()
{
for(int i=1;i<=100;i++)
a[i]=i*2;
int n,m;
while(cin>>n>>m)//while循环
{
int sum=0;//变量初始化