• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

博客园    首页    新随笔    联系   管理    订阅  订阅
第四章

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\n",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\n",total/num);
        printf("Number of failures is 0\n");
    }
    else
        printf("Grade average is 0\n");

    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.\n",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!\n",m);
        else
            printf("No!\n");

        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!\n");
            break;
        }
            else
                    if(yournumber>mynumber)
                        printf("Sorry!your number is bigger than my number!\n");
                    else
                        printf("Sorry!your number is smaller than my number!\n");
            }
            printf("Game is over!\n");

            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\n",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\n",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\n",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\n",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("\n");
            }
    }
            printf("\n");
            
            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("\n");

    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\n",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\n",men,women,child);
        }
        return 0;
}

posted on 2013-10-05 16:52  Der.  阅读(170)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3