水仙花数--转载

 一、水仙花数(初级)1131
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: 
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 
现在要求输出所有在m和n范围内的水仙花数。


Input 


输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。


Output 


对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开; 
如果给定的范围内不存在水仙花数,则输出no; 
每个测试实例的输出占一行。 




Sample Input 




100 120
300 380


Sample Output 




no
370 371






#include
using namespace std;
int main()
{
    int m,n,i,a,b,c,g=0;
    while(cin>>m>>n)
    {
      for(i=m;i<=n;i++)
      {
         a=i/100;
         b=(i/10)%10;
         c=i%10;
         if(i==a*a*a+b*b*b+c*c*c)
         {
            cout<             g=1;
         }
      }
      if(g==0)                 
        cout<<"no"<     }
        return 0;
}




#include
using namespace std;
int main()
{
    int m,n,i,a,b,c,g=0;
    while(cin>>m>>n)
    {
      for(i=m;i<=n;i++)
      {
         a=i/100;
         b=(i/10)%10;
         c=i%10;
         if(i==a*a*a+b*b*b+c*c*c)
         {
            cout<             g=1;
         }
      }
      if(g==0)                 
        cout<<"no"<     }
        return 0;
}


二、因子之和1132
数论中有这样一个数,这个数恰好等于它的因子之和。称为“完数”。现在要求输出所有在m和n范围内的完数。 




Input 


输入数据有多组,每组占一行,包括两个整数m和n(1<=m<=n<=9999)


Output 


对于每个测试实例,要求输出所有在给定范围内的完数,就是说,输出的完数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开; 
如果给定的范围内不存在完数,则输出no; 
每个测试实例的输出占一行。 




Sample Input 




1 100
100 200


Sample Output 




6 28
no


#include
using namespace std;
int main()
{
    int m,n,flag=0;
    while(cin>>m>>n)
    {
        for(int i=m;i<=n;i++)
        {
             int sum=0;
             for(int k=1;k              {
                 if(i%k==0)
                 {
                    sum=sum+k;
                 }
             }
             if(i==sum)
             {
             flag=1;
             cout<              }
        }
        if(flag==0)
        {
           cout<<"no";
        }
        cout<     }
    return 0;
}
    


三、数字求和1135
从键盘任意输入一个4位数n,编程计算n的每一位数字相加之和(忽略整数前的正负号)。


Input 


有多个测试用例,每行一个4位数。


Output 


对应输入的每个用例,输出数字位数之和。


Sample Input 




1234
-5678


Sample Output 




10
26
  
#include
using namespace std;
int main()
{
    int n;
    int sum=0;
    while(cin>>n)
    {
       sum=n%10+(n/10)%10+(n/100)%10+(n/1000)%10;
       if(n<0)
       sum=-sum;
       cout<     }
    return 0;
}




四、爱因斯坦的数学题1136


爱因斯坦曾出过这样一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,最后剩下5阶;只有每步跨7阶,最后才正好1阶不剩。请你写程序帮助爱因斯坦大师计算一下这条楼梯至少有多少阶。


Input 


输入一个不等于0的正整数,当等于0时结束。 
注意:该数字与运算结果无关。


Output 


输出楼梯至少有的台阶数。


Sample Input 




10
0


Sample Output 




119


 


#include
#include
using namespace std;
int main()
{
    int a,b,c,d,e,n,i,x;
    while(cin>>n&&n)
    {
        for(x=1;;x++)
        {         
            a=x%2;
            b=x%3;
            c=x%5;
            d=x%6;
            e=x%7;
        if((a==1)&&(b==2)&&(c==4)&&(d==5)&&(e==0))
           {         
            cout<             break;
             
           } 
            
        }
           
    }
    //system("pause");
    return 0;
}


五、固定位数的制数转换1142


在计算机导论中,我们学习了手工计算数制之间的转换。现在需要您编制一个程序,将任一正整数转换为 16 位二进制形式。


Input 


由键盘输入至少一组测试数据,每组测试数据包括一个正整数n(1<=n<=65535),当遇到0时结束并不做处理。 




Output 


输出正整数n所对应的 16 位二进制数。


Sample Input 




144
100
0


Sample Output 




0000000010010000
0000000001100100




#include
using namespace std;
int main()
{
   int n,i,j;
   
   while(cin>>n&&n)
   {
       bool a[1000]={0,};
       i=n;
       j=0;
       while(i)
       {
        a[j]=i%2;
        i/=2;
        j++;
       }
       for(i=15;i>=0;i--)
        cout<        cout<    }
   //system("pause");
   return 0;
}


             
六、数字游戏1143


对于任意小于2的32次幂的自然数,你能编写一个程序,各位数字经过重新组合,生成一个新的自然数,使得该自然数的最大吗?例如,输入 1593 ,则输出为 9531 。


Input 


由键盘输入至少一组测试数据,每组测试数据均包括一个自然数 n(n<=2^32),当遇到0时结束并不做处理。


Output 


输出每组测试数据的各位数字组成的最大自然数。


Sample Input 




40120
123456
654123
2147483646
0


Sample Output 




42100
654321
654321
8766444321




#include
#include
using namespace std;
int main()
{
    long long  n;
    int a[100],i,j,t;
        while(cin>>n,n)
    {
            int k=0;
            while(n!=0)
            {
                a[k]=n%10;
                n=n/10;
                //cout<                 k++;  
            }
          for(i=0;i             for(j=0;j              if(a[j]               {   
                  t=a[j];
                  a[j]=a[i];
                  a[i]=t;
              }
          for(i=0;i           cout<           cout<     }
    //system("pause");
    return 0;    
}


七、轻轻松松背单词1144
现在小明本科马上就要毕业了,他不忙着去找工作,想继续学习,出国深造。所以他要把自己记住的英语单词重新整理一下,看自己已经记住了多少,因此他把单词按字母表的顺序排序,由于太多,太复杂,所以想请您帮忙编写一个程序,实现单词按字母表的顺序排序。你能做到吗?


Input 


由键盘输入至少一组测试数据,每组测试数据均包括一个正整数 n 和 n 个字符串,请将n个字符串按从小到大的顺序排列后输出。当输入为0时结束并不做处理。


Output 


对每组测试数据,按从小到大的顺序输出 n 个字符串,每个字符串占一行,每组测试用例之间用空行分隔。


Sample Input 




4
china
beijing
nanjing
shanghai
3
sport
bed
linux
0


Sample Output 




beijing
china
nanjing
shanghai


bed
linux
sport






#include
#include
using namespace std;


struct test
{
char A[50];
};
int main()
{
int n;
test pp[100];
while(cin>>n)
    {
if(n<=0)
{
   break;
}
 for(int i=0;i  {
     cin>>pp[i].A;
 }
 for(int j=0;j  {
     for(int k=0;k  if(strcmp(pp[j].A,pp[k].A)==-1)
 {
    swap(pp[j],pp[k]);
 }
 }
 for(int m=0;m  {
     cout<  }
 cout< }
    return 0;
}




八、插入字符串1146
有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。(字符个数不包括字符串结尾处的'\0'。)将substr插入到str中ASCII码最大的那个字符后面,若有多个最大则只考虑第一个。


Input 


输入包括若干行,每一行为一组测试数据,格式为 
str substr


Output 


对于每一组测试数据,输出插入之后的字符串。


Sample Input 




abcab eee
12343 555


Sample Output 




abceeeab
12345553




#include
using namespace std;
int main()
{
    char str[14],substr[4];
    int l,max,n,i;
    while(cin>>str>>substr)
    {
        l=strlen(str);
        max=str[0];n=0;
        for(i=0;i         {
            if(str[i]>max)
            {
                max=str[i];
                //cout<                 n=i;              
            }         
        }
        for(i=l+3;i>=n+4;i--)
        {
            str[i]=str[i-3];                     
        }
        str[n+1]=substr[0];
        str[n+2]=substr[1];
        str[n+3]=substr[2];
        cout<                 
    }
    return 0;    
}




九、累计求和(初级)1149
在中学时,同学们都学过从1到n求的方法是使用公式:(1+n)*n/2,现在你能自己编程实现求 n 到 m 之间(-1000〈=n〈=m<=+1000),包括n和m)整数的累加和吗?


Input 


由键盘输入至少一组测试数据,每组测试数据均包括一个整数n 和一个整数m,且满足(-1000〈=n〈=m<=+1000),n和m用空格分隔。


Output 


对输入的每一组测试数据,在一行输出从n到m的和,每组输出结果各占一行。


Sample Input 




1 5
1 10
-5 5
-1 3




Sample Output 




15
55
0
5




#include
using namespace std;
int main()
{
    int a,b,sum=0;
    while(cin>>a>>b)
     {
        sum=((a+b)*(b-a+1))/2;
        cout<      }
        return 0;
}


十、
计算球体积(初级)1155
根据输入的半径值,计算球的体积。


Input 


输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。


Output 


输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。


Sample Input 




1
1.5




Sample Output 




4.189
14.137




Hint 


#define PI 3.1415927


#include
#include
#include
#define PI 3.1415927
int  main ()
{
     double r,v;
     while(scanf ("%lf\n",&r)!=EOF)
     {
       v=4.0/3*PI*r*r*r;
       printf("%.3lf\n",v);
     }
 //getch();
 return 0;
}    
十一、菲波那契数列(初级)1259
菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。 
给出一个正整数a,要求菲波那契数列中第a个数是多少。


Input 


第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(1 <= a <= 20)


Output 


输出有n行,每行输出对应一个输入。输出应是一个正整数,为菲波那契数列中第a个数的大小 




Sample Input 




4
5
2
19
1


Sample Output 




5
1
4181
1




#include
using namespace std;
int main()
{
    int i,a[40]={1,1},n,m;
  cin>>m;
  while(m--)
    {
        while(cin>>n)
        {
            for(i=2;i<=39;i++)
            {
                
                a[i]=a[i-1]+a[i-2];                  
            }
           cout<         }
    }    
    //system("pause");
    return 0;
    
}


十二、逆序数字1282
编写一个函数,接收一个整数值,返回这个数中数字逆序后的结果值。例如,给定数7631,函数返回1367. 


Input 


第一行一个正整数T(T<=10),表示有T组测试数据; 以下T行,每行一个非负的整数N。 


Output 


共T行,对于每组输入数据输出一行,即数字逆序后的结果值。 


Sample Input 





7631 
101 
51




Sample Output 




1367 
101 
15 






#include
 using namespace std;
 int main()
 {
    int t,n,i,j;
    cin>>t;
    for(i=1;i<=t;i++)
   {
      int sum = 0;
      cin>>n;
      while(n != 0)
      {
         sum=sum*10+n%10;
          n=n/10;
      }
         cout<        }
   return 0;
}






十三、求最大值(初级)1288
#include
using namespace std;
main()
{
    int i,n,m,a[10],max;
    cin>>m;
    while(m--)
    {
        for(i=0;i<10;i++)
        {
            cin>>a[i];                 
        }
        max=a[0];
        for(i=1;i<10;i++)
        {
        if(a[i]>max)
        max=a[i];                 
        }
        cout<     }
    //system("pause");
    return 0;      
}


十四、ASCII码排序(初级)1290
#include
#include
#include
#include
using namespace std;
 
int cmp(const void*a,const void*b)
{
    return *(char*)a-*(char*)b;    
}
int main()
{
    char ch[10];
    int i,j,p,q,m,n;
    while(cin>>ch)
    {
        qsort(ch,3,sizeof(ch[0]),cmp);
        for(i=0;i<3;i++)
        {
            cout<         }              
        cout<     }    
    //system("pause");
    return 0;
}


十五、计算两点间的距离(初级)1291
#include
#include
#include
using namespace std;
int main()
{
    
    double d,x1,y1,x2,y2;
    while(cin>>x1>>y1>>x2>>y2)
    {
        d = sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
        cout<     }
    cout<     return 0;    
}


十六、成绩转换(初级)1293
#include
#include
  int main()
{
   char grade;
   int score,temp;
   scanf("%d",&score);
   if(score>100||score<0)
    printf("Score is error!\n");
   else
    {
        temp=score/10;
        switch (temp)
        {
          case 10:
          case  9:grade='A';break;
          case  8:grade='B';break;
          case  7:grade='C';break;
          case  6:grade='D';break;
          default: grade='E';
        }
    }
        printf("%c\n",grade);
       
    //getch ();
    return 0;
}
十七、求平均值(初级)1324
#include
#include
using namespace std;
int main()
{
    int i,a[10000];
    double s,m;
    double avg;
    while(cin>>m)
    {
        s=0;
        for(i=0;i         {
            cin>>a[i];
            s=s+a[i];              
        }
        cout<     }
       return 0;
}


十八、首字母大写1401


#include
using namespace std;
int main()
{
    char ch[10000];
int i,j,m,n,l;
while(gets(ch))
{
l=strlen(ch);
if(ch[0]>='a'&&ch[0]<='z')
{
ch[0]=ch[0]-32;
}
for(i=1;i {
if(ch[i]==' '&&(ch[i+1]>='a'&&ch[i+1]<='z'))
{
ch[i+1]=ch[i+1]-32;
}
}
for(i=0;i {
       cout< }
cout< }
}
十九、最大公约数(初级)1410
#include
#include
  int main()
{
     int r,i,j,t;
     while(scanf("%d%d",&i,&j)!=EOF)
   {
      if(i       {
             t=i;
             i=j;
             j=t;
      }
        r=i%j;
        while(r!=0)
      {
             i=j;
             j=r;
             r=i%j;
      }      
   
    printf("%d\n",j); 
   }     
     // getch();
}


二十、最小公倍数(初级)1411
#include
#include
using namespace std;
int main()
{
    int m;
    int n;
    int p,q;
    int t;
    while(cin>>m>>n)
    {
         p=m;
         q=n;
         if(m>n)
         {                          m   n
             t=m;m=n;n=t;           3   7
         }
             while(n%m!=0)          7    3
             {
                 t=n%m;
                 n=m;
                 m=t;
             }
                 cout<<(p*q)/m<      }
    //getch();
    return 0;
}
    
二十一、公共C练习--选择结构--判断偶数
1413
#include
using namespace std;


int main ()
{
    int n;
    cin >>n;
    if (n % 2 == 0)
    {
        cout<<"yes"<     }
    else
        cout<<"no"<     return 0;
}
二十二、新成绩排名1421
#include
using namespace std;
struct student
{
    char num[100];
    int score;
    int paiming;       
}stu[100];
int main()
{
    int m,n,i,j,k;
    char a[100];
    while(cin>>m)
    {
        for(i=0;i         {
            cin>>stu[i].num>>stu[i].score;
            stu[i].paiming=i+1;                
        }        
        for(i=0;i         {
            for(j=0;j             {
                if(stu[j].score                 {
                    k=stu[j].score;
                    stu[j].score=stu[i].score;
                    stu[i].score=k;
                    strcpy(a,stu[j].num);//a=stu[j].num;
                    strcpy(stu[j].num,stu[i].num);//stu[j].num=stu[i].num;
                    strcpy(stu[i].num,a);//stu[i].num=a;
                }               
            }                  
        }
        for(i=0;i         {
            cout<         }             
    }
    //system("pause");
    return 0;    
}


二十三、统计大写字母(初级)1423
#include
using namespace std;
int main()
{
    char ch[100];
    int b,l,i;
        while(gets(ch))
        {
            l=strlen(ch);
            b=0;
            for(i=0;i             {
                if(ch[i]>='A'&&ch[i]<='Z')
                b++;                
            }
            cout<         }
        //system("pause");
        return 0;
}


二十四、删除字符
1432
#include
using namespace std;
int main()
{
    char a[10],b;
    int i;
    cin>>a;
    cin>>b;
    for(i=0;i     {
        
         if(a[i]!=b)
         cout<     }
    cout<    
}




二十五、[:字母重排1434
#include
#include
using namespace std;
int cmp(const void*a,const void*b)
{
    return *(char *)a- *(char*)b;    
}
int main()
{
    char ch[10000],ch1[10000];
    int i,j,m,n,p,q;
    while(gets(ch))
    {
        p=0;
        int l=strlen(ch);
        for(i=0;i         {
            if(ch[i]>='a'&&ch[i]<='z')
            {
                ch1[p]=ch[i];
                p++;              
            }                
        }    
        qsort(ch1,p,sizeof(ch1[0]),cmp);
        cout<     }   
    //system("pause");
    return 0;
}


二十六、统计元音字母1438
#include
#include
#include
int main ()
{
  int a,e,i,o,u,k,j;   
  char ch[1025];
  gets (ch);
  a=0;e=0;i=0;o=0;u=0;k=0;j=0;
  while(ch[k]!='\0')
  {
    if (ch[k]=='a')
    a++;
    else if(ch[k]=='e')
    e++;
    else if (ch[k]=='i')
    i++;
    else if (ch[k]=='o') 
    o++;
    else if (ch[k]=='u')
    u++; 
    k++;
    j=a+e+i+o+u;
}
printf("%d\n",j);
//getch();
return 0;             
  
}      


二十七、平方和与立方和1443
#include
using namespace std;
int main()
{
    int x,y,i,s1,s2;
    while(cin>>x>>y,x+y)
    {
        s1=0,s2=0;
        for(i=x;i<=y;i++)
        {
            if(i%2 == 0)
            {
                s1=s1+i*i;          
            }           
            if(i%2 == 1)
            {
                s2=s2+i*i*i;
            }      
        } 
        cout<     } 
    return 0;   
}


二十八、找最大最小整数(初级)1459
#include
#include
int main()
{
    int i,n,max,min;
    int num[100];
      scanf("%d",&n);
    for(i=0;i       scanf("%d",&num[i]);
    //for(i=1;i        //printf("%5d",num[i]);
    max=num[0];
    min=num[0];
    for(i=1;i     {
        if(num[i]>max)
           max=num[i];
        if(num[i]            min=num[i];      
    }
    printf("%d %d\n",max,min);
    //getch();
    return 0;
}

















你可能感兴趣的:(水仙花数--转载)