IOS开发之路-C 学习笔记7.13

有了昨天的经验今天想去解决很多以前解决不了的,于是百度了下C经典题.

一个一个做.

1.马克思手稿中有一道趣味数学题:有30个人,其中有男人,女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人,女人和小孩各有几人?

void macs()
{
    int sum = 50;
    int man ;
    int woman ;
    int child ;
    for ( man=1; man<29; man++)
    {
        for ( woman=1; woman<29; woman++)
        {
            for( child=1;child<29;child++)
            {
                if(((man*3)+(woman*2)+(child*1))==sum && (man + woman + child ==30))
                 printf("%d %d %d\n",man,woman,child);    
            }
        }
    }
}

我个人是这样写的,但是出来了好多种方案.也不知道是不是这样写的额.

2.打印个上下金字塔

void printGraph()
{
    for(int i=1;i<=10;i++)
    {
        for(int j=i;j<10;j++)
        {
            printf(" ");
        }
        for(int j=1;j<i*2;j++)
        {
            printf("★");
        }
        printf("\n");
        
    }
    for(int i = 9; i>=1;i--)
    {
        for(int j =i;j<10;j++)
        {
            printf(" ");
        }
        for(int j =1; j<=2*i-1;j++)
        {
            printf("★");
        }
        printf("\n");
    }

  }

3.根据输入的高度打印圣诞树

void christmas_trees()
{
    int heigh;
    pus:
    printf("请输入要打印圣诞树的高度:");
    scanf("%d",&heigh);
    if(heigh >= 40 || heigh <= 10)
    {
        goto pus;
    }
    int top = heigh/3;
    int center = heigh/3+heigh/6;
    int foot = heigh-center-top;

    for(int i=0; i<top;i++)
    {
        for(int i=0;i<center-top;i++)
        {
            printf(" ");
        }
        for(int j=i;j<top;j++)
        {
            printf(" ");
        }
        for(int j=0;j<2*(i+1)-1;j++)
        {
            printf("★");
        }
        printf("\n");
    }
    for(int i=0;i<center;i++)
    {
        for(int j=i;j<center-1;j++)
        {
            printf(" ");
        }
        for(int j=0;j<3*(i+1)-i;j++)
        {
            printf("★");
        }
        printf("\n");
    }
    for(int i=0;i<foot;i++)
    {
        for(int j =0 ; j<center-2;j++)
        {
            printf(" ");
        }
        for(int j = 0; j<foot; j++)
        {
            printf("★");
        }
        printf("\n");
    }
    //printf("%d %d %d\n",top,center,foot);
}

4.键盘中输入一个数字(不限位数),用循环语句编程判断并输出这个数字的位数。

void digit()
{
    long int number;
    int count = 0;
    printf("请输入一个数字(不限位数):");
    scanf("%ld",&number);
    int num=0;
    while(number>10)
    {
        num = number/10;
        //printf("%d",num);
        number = num;
        count++;
    }
    printf("位数:%d",count+1);
}

5.青年歌手参加歌曲大奖赛,有10个评委打分,试编程求选手的平均得分(去掉一个最高分和一个最低分)。

void grade()
{
    srand((unsigned)time(NULL));
    float num[10];
    float max =0 ;
    float min =0 ;
    float sum =0 ;
    float avg =0 ;
    for(int i=0;i<10;i++)
    {
        num[i] = rand()/((float)(RAND_MAX)/10);
        max = min = num[0];
        //rand()%(b-a)+a 求A-B之间的随机数
        printf("评委[%d]打分:%.1f\t",(i+1),num[i]);
        sum += num[i];
        if(i==4)
        {
            printf("\n");
        }
    }
    for(int i=1;i<10;i++)
    {
        max = max<num[i]?num[i]:max;
        min = min>num[i]?num[i]:min;
       
    }
    avg = (sum - (max+min))/10;
    printf("\n最高分:%.1f\t 最低分:%.1f",max,min);
    printf("\n总分:%.1f",sum);
    printf("\n去掉一个最高分和一个最低分后总分:%.1f",sum-(max+min));
    printf("\n平均分:%.1f",avg);
}

就这些了,进度确实有点小.(因为昨晚跟朋友打了一晚上LOL)下午4点到的机房...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值