• C语言经典例题100(8~16)


    八、输出9*9口诀。

    #include<stdio.h>
    
    int main()
    {
        int r[9]={1,2,3,4,5,6,7,8,9};
        int c[9]={1,2,3,4,5,6,7,8,9};
        int i,j;
    
        printf("0	1	2	3	4	5	6	7	8	9
    ");
        for(i=1;i<10;i++)
        {
            printf("%d",i);
            for(j=1;j<10;j++)
                printf("	%d",r[i-1]*c[j-1]);
            printf("
    ");
        }
        getch();
        return 0;
    }

    十一、古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

    程序分析:每个月新增的兔子对数取决于上上个月的兔子对数;假设第i月有x只兔子,设第(i+1)个月有y只兔子,则第(i+2)个月比第(i+1)个月新增兔子数量为x,即(x+y)只兔子;

    归纳为:F(i+2)=F(i+1)+F(i);

    同时本题中F(1)=F(2)=2;因此本题可用递归方法解决。

    #include<stdio.h>
    
    int F_rabbit(unsigned int x)
    {
        if(x==0) return 0;
        if(x==1||x==2) return 2;
        else return F_rabbit(x-1)+F_rabbit(x-2);
    }
    int main()
    {
        int month_num;
        printf("请输入第几个月:
    ");
        scanf("%d",&month_num);
        printf("第%d个月总共有%d只兔子。
    ",month_num,F_rabbit(month_num));
        getch();
        return 0;
    }

    十二、判断101-200之间有多少个素数,并输出所有素数。

    #include<stdio.h>
    
    int Is_Prime(int x)
    {
        int i;
        for(i=2;i<=(x/2);i++)
            if(x%i==0)
                break;
        if(i==x/2+1)
            return 1;
        else
            return 0;
    }
    
    int main()
    {
        int x,n=0;
        int Is_Prime(int);
        for(x=101;x<201;x++)
        {
            if(Is_Prime(x))
            {
                printf("	%d",x);
                n++;
                if(n%5==0)
                    printf("
    ");
            }
        }
        printf("
    101~200之间共有%d个素数。
    ",n);
        getch();
        return 0;
    }

    十三、打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

    #include<stdio.h>
    
    int main()
    {
        int a,b,c;
        for(a=1;a<10;a++)
            for(b=1;b<10;b++)
                for(c=1;c<10;c++)
                    if((a*a*a+b*b*b+c*c*c)==(100*a+10*b+c))
                        printf("	%d",100*a+10*b+c);
        getch();
        return 0;
    }

    十四、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

    程序分析:非质数的正整数的最小因数必为其最小的质因数,先求其最小质因数,在求原数除去这个最小质因数的最小质因数,以此类推,直至除运算后商为质数为止。

    因此,设计一个可以返回最小质因数的函数,并循环调用它。

    #include<stdio.h>
    
    int min_pfactor(int x)
    {
        int i;
        if(x<=3)
            return 0;
        for(i=2;i<=x/2;i++)
            if(x%i==0)
                break;
        if(i==(x/2+1))
            return 0;
        else 
            return i;
    }
    
    int main()
    {
        int x,a;
        printf("请输入一个正整数:
    ");
        scanf("%d",&x);
        if(!min_pfactor(x))
        {
            printf("你输入的是一个素数!
    ");
            getch();
            return 0;
        }
        else
        {
            printf("分解质因数为:%d=",x);
            while(a=min_pfactor(x))
            {
                printf("%d*",a);
                x=x/a;
            }
            printf("%d",x);
            getch();
            return 0;
        }
    }
        
                

    十五、利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

    #include<stdio.h>
    
    int main()
    {
        int score;
        printf("please input the score:
    ");
        scanf("%d",&score);
        printf("level is:%c",(score>=90)?'A':((score<60)?'C':'B'));
        getch();
        return 0;
    }

    十六、输入两个正整数m和n,求其最大公约数和最小公倍数。

    #include<stdio.h>
    
    int max_factor(int a,int b)
    {
        if(!b)
            return a;
        else
            return max_factor(b,a%b);
    }
    
    int main()
    {
        int m,n;
        printf("请从大到小依序输入两个正整数:
    ");
        scanf("%d%d",&m,&n);
        printf("%d和%d的最小公约数为%d,最大公倍数为%d",m,n,max_factor(m,n),m*n/(max_factor(m,n)));
        getch();
        return 0;
    }
  • 相关阅读:
    机器码call和jmp地址的计算
    linux下系统对于sigsegv错误时的处理
    elf文件中的.plt .rel.dyn .rel.plt .got .got.plt的关系
    docker随谈
    nginx性能优化技巧
    ubuntu安装php常见错误集锦
    ubuntu php5.6源码安装
    关于mysqld_safe
    ubuntu mysql5.7源码安装
    linux下nginx模块开发入门
  • 原文地址:https://www.cnblogs.com/tsembrace/p/3245319.html
Copyright © 2020-2023  润新知