• 第四章


    4.1例4-1

    /* 用格雷戈里公式计算x的近似值,精度要求:最后一项的绝对值小于0.0001 */
    #include<stdio.h>
    #include<math.h>
    
    int main(void)
    {
        int denominator,flag;
        double item,pi;
    
        flag=1;
        denominator=1;
        item=1.0;
        pi=0;
    
        while(fabs(item)>=0.0001){
            item=flag*1.0/denominator;
            pi=pi+item;
            flag=-flag;
            denominator=denominator+2;
        }
        pi=pi*4;
        printf("pi=%.4f
    ",pi);
    
        return 0;
    }

    4.1例4-2

    /* 输入一批学生的成绩,以负数作为结束标志,计算平均成绩,并统计不及格人数 */
    #include<stdio.h>
    int main(void)
    {
        int count,num;
        double grade,total;
    
        num=0;
        total=0;
        count=0;
        printf("Enter grades:");
        scanf("%lf",&grade);
    
        while(grade>=0){
            total=total+grade;
            num++;
            if(grade<60)
                count++;
            scanf("%lf",&grade);
        }
        if(num!=0){
            printf("Grade average is %.2f
    ",total/num);
            printf("Number of failures is 0
    ");
        }
        else
            printf("Grade average is 0
    ");
    
        return 0;
    }

    4.2例4-3

    /* 统计一个整数的位数 */
    #include<stdio.h>
    int main(void)
    {
        int count,number;
    
        count=0;
        printf("Enter a number:");
        scanf("%d",&number);
        if(number<0)number=-number;
        do{
            number=number/10;
            count++;
        }while(number!=0);
        printf("It contains %d digits.
    ",count);
    
        return 0;
    }

    4.3例4-4

    /* 判断正整数m是否为素数 */
    #include<stdio.h>
    int main(void)
    {
        int i,m;
    
        printf("Enter a number:");
        scanf("%d",&m);
        for(i=2;i<=m/2;i++)
            if(m%i==0)
                break;
            if(i>m/2&&m!=1)
                printf("%d is a prime number!
    ",m);
            else
                printf("No!
    ");
    
            return 0;
    }

     

    4.3例4-5

    /* 简单的猜数游戏 */
    #include<stdio.h>
    int main(void)
    {
        int mynumber=38;
        int count=0,yournumber;
        for(count=1;count<=5;count++)  {
            printf("Input your number:");
            scanf("%d",&yournumber);
            if(yournumber==mynumber){
                printf("Ok!you are right!
    ");
                break;
            }
                else
                        if(yournumber>mynumber)
                            printf("Sorry!your number is bigger than my number!
    ");
                        else
                            printf("Sorry!your number is smaller than my number!
    ");
                }
                printf("Game is over!
    ");
    
                return 0;
            }

    4.4例4-6

    /* 使用函数计算 1!+2!+3!+…+100! */
    #include<stdio.h>
    double fact(int n);
    
    int main(void)
    {
        int i;
        double sum;
        sum=0;
        for(i=1;i<=100;i++)
            sum=sum+fact(i);
        printf("1!+2!+…+100!=%e
    ",sum);
    
        return 0;
    }
    double fact(int n)
    {
        int i;
        double result;
    
        result=1;
        for(i=1;i<=n;i++)
            result=result*i;
    
        return result;
    }

    4.4例4-7

    /* 使用嵌套循环计算 1!+2!+3!…+100! */
    #include<stdio.h>
    int main(void)
    {
        int i,j;
        double item,sum;
    
        sum=0;
        for(i=1;i<=100;i++){
            item=1;
        for(j=1;j<=i;j++)
            item=item*j;
        sum=sum+item;
        }
        printf("1!+2!+…+100!=%e
    ",sum);
    
        return 0;
    }

    4.5例4-8

    /* 从输入的n个成绩中选出最高分,用for语句实现 */
    #include<stdio.h>
    int main (void)
    {
        int i,mark,max,n;
    
        printf("Enter n:");
        scanf("%d",&n);
        printf("Enter %d marks:",n);
        scanf("%d",&mark);
        max=mark;
        for(i=1;i<n;i++){
            scanf("%d",&mark);
            if(max<mark)
                max=mark;
        }
        printf("Max=%d
    ",max);
    
        return 0;
    }

    /* 从输入的一批以负数结束的成绩中选出最高分,用while语句实现 */
    #include<stdio.h>
    int main(void)
    {
        int mark,max;
    
        printf("Enter marks:");
        scanf("%d",&mark);
        max=mark;
    
        while(mark>=0){
            if(max<mark)
                max=mark;
            scanf("%d",&mark);
        };
        printf("Max=%d
    ",max);
    
        return 0;
    }

    4.5例4-9

    /* 逆序输出一个正整数 */
    #include<stdio.h>
    int main(void)
    {
        int x;
    
        printf("Enter x:");
        scanf("%d",&x);
        while(x!=0){
            printf("%d",x%10);
            x=x/10;
        }
    
        return 0;
    }

    4.5例4-10

    /* 使用嵌套循环求100以内的全部系数 */
    #include<stdio.h>
    #include<math.h>
    int main(void)
    {
        int count,i,m,n;
    
        count=0;
        for(m=2;m<=100;m++){
            n=sqrt(m);
            for(i=2;i<=n;i++)
                if(m%i==0)
                    break;
                if(i>n){
                    printf("%6d",m);
                    count++;
                    if(count%10==0)
                        printf("
    ");
                }
        }
                printf("
    ");
                
                return 0;
        }

    4.5例4-11

    /* 输出斐波那契序列:1,1,2,3,5,8…的前10项 */
    #include<stdio.h>
    int main(void)
    {
        int i,x1,x2,x;
    
        x1=1;
        x2=1;
        printf("%6d%6d",x1,x2);
        for(i=1;i<=8;i++){
            x=x1+x2;
            printf("%6d",x);
            x1=x2;
            x2=x;
        }
        printf("
    ");
    
        return 0;
    }

    4.5例4-12

    /* 45人正好搬45块砖,程序版本 1 */
    #include<stdio.h>
    int main(void)
    {
        int child,men,women;
    
        for(men=0;men<=45;men++)
            for(women=0;women<=45;women++)
                for(child=0;child<=45;child++)
                    if(men+women+child==45&&men*3+women*2+child*0.5==45)
                        printf("men=%d,women=%d,child=%d
    ",men,women,child);
    
                        return 0;
    }

    /* 45人正好搬45块砖,程序版本 2 */
    #include<stdio.h>
    int main(void)
    {
        int child,women,men;
    
        for(men=0;men<=15;men++)
            for(women=0;women<=22;women++){
                child=45-women-men;
                if(men*3+women*2+child*0.5==45)
                    printf("men=%d,women=%d,child=%d
    ",men,women,child);
            }
            return 0;
    }

  • 相关阅读:
    谷歌被墙,怎样给谷歌浏览器加入迅雷下载插件
    python文件和文件夹訪问File and Directory Access
    svn简单介绍
    javaproject积累——树形结构的操作
    Android多线程研究(1)——线程基础及源代码剖析
    Android4.4 Telephony流程分析——彩信(MMS)发送过程
    hadoop优质链接
    Android开发系列(二十一):Spinner的功能和使用方法以及实现列表选择框
    锤子Smartisan T1手机官方4.4.2系统内核版本号信息
    深入研究Clang(五) Clang Lexer代码阅读笔记之Lexer
  • 原文地址:https://www.cnblogs.com/jianghaoyu0129/p/3352574.html
Copyright © 2020-2023  润新知