C语言经典编程题一

 

1.题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

/*分解质数*/
#include<iostream>
using namespace std;
void Divide(int num)
{
    int numcopy =num;
    for(int i=2;i<=numcopy;)
    {

           if(numcopy==i)
           {
               printf("%d",i);
               return ;
           }
            if(numcopy%i==0&&numcopy!=i)
            {
                printf("%d*",i);        
                numcopy=numcopy/i;
            }
            else
            {
                i++;
            }
    

    }
}

2.题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
   本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

/*水仙*/
#include<iostream>
using namespace std;

int IsShuiXian(int num)
{
    int i,j,k,numcopy=num;
    if(numcopy>999||numcopy<100)
    {
        return -1;
    }
    i=numcopy%10;
    j=numcopy/10%10;
    k=numcopy/100;
    numcopy=i*i*i+j*j*j+k*k*k;
    if(numcopy==num)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}


int main(void)
{
    
    for(int i=101;i<=999;i++)
    {
        int j=IsShuiXian (i);
        if(j)
        {
            printf("%d\n",i);
        }
    }
    system("pause");
    return 0;
}

3.判断101-200之间有多少个素数,并输出所有素数。

void PrintSushu(int num,int num2)
{
    int count=0;
    int k,leap;
    for(int i=num;i<=num2;i++)
    {
        leap=1;
        k=sqrt(i);

        for(int j=2;j<=k;j++)
        {
            if(0==i%j)
            {
                leap=0;
                break;
            }
        }
        if(1==leap)
        {
            count++; 
            printf("%d ",i);
        }
    }

    printf("%d",count );
}

4.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
   后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....

long CalTuzi(int mouth)
{
    long f1=1;
    long f2=1;
    long temp;
    if(mouth<=0)
    {
        return -1;
    }
    if(mouth<=2)
    {
        return 1;

    }
    for(int i=2;i<mouth;i++)
    {
        temp=f2;
        f2=f1+f2;    
        f1=temp;
    }
    return f2;
}

5.输入一个数判断是不是回文

int IsHuiwen(int i)
{
    int a=0;
    int m=i;
    while(m)
    {
        a=(a*10)+(a%10);
        m=m/10;
    }
    if(i==a)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

6.字符串有小写变为大写

void  ChangBig(char *str)
{
    while(*str!='\0')
    {
        if((*str>='a')&&(*str<='z'))
        {
            *str=*str-32;
        }
        str++;
    }
}

 

posted @ 2015-11-09 21:02  Lucky-小王子  阅读(313)  评论(0编辑  收藏  举报