【C语言牛客刷题1】BC39 牛牛的水杯

题目描述

牛客网题目描述

代码

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
    int h, r;
    float a, b;
    scanf("%d %d", &h, &r);
    a = 10000 / (3.14 * h * r);
    b = 10000.0 % (3.14 * h * r);
    if (b == 0)
        printf("%d", (int)a);
    else
        printf("%d", (int)a + 1);
    return 0;
}

报错

报错

犯了一个最基本的错误------%的用法
使用%求余数时,应当保证它的左右两侧的数都是整数

下面我们可以来复习一下%在C语言中常见的用法

%的常见用法

取余运算

使用时,记住:“%”两边均为整数。
但我们使用除法时,如果“/”两边,有一边是小数,则结果为小数,否则为整数。

作为C语言格式符的组成部分

常见的有:

占位符作用
%c字符
%s字符串
%d十进制的整数
%f小数

%与#相结合

可以使输出保留进制的前缀符号

代码示例

#include <stdio.h>
//%#再加上相应的前缀符号
int main()
{
	int a = 014;
	int b = 0xae;
	printf("a1 = %o\n",a);
	printf("a2 = %#o\n",a);
	
	printf("b1 = %x\n",b);
	printf("b2 = %#x\n",b);
	return 0;
}

运行结果

%#

%与*结合

说明:
(1)主要在 scanf( ) 函数起到了,跳过对应的输入的作用,使得%这次的输入跳过不被输入执行。
(2)在 printf( ) 函数中应用同理,会跳过对应的输出对象。

代码示例

#include <stdio.h>
int main()
{
	int a = 100;
	scanf("%*d",&a);//%*跳过了输入的数据
	printf("a = %d\n",a);//仍然打印100
	return 0;
}

运行结果

%*

拓展了这么多知识,接下来回归这道题目本身

解题

解法一:

牛牛一杯一杯喝,则对应的变量一次一次加

//一杯一杯喝,d++
#include <stdio.h>

int main(void)
{
    int h = 0, r = 0;
    scanf("%d%d", &h, &r);
    float v = h * 3.14 * r * r;
    int c = 10000;
    int d = 0;
    while (c > 0)
    {
        c = c - v;
        d++;
    }
    printf("%d", d);
    return 0;
}

解法二:

用除法

第一种表达

#include <stdio.h>
int main()
{
    int h, r, c;
    scanf("%d%d", &h, &r);
    float v = h * 3.14 * r * r;
    c = (int)10000 / v;
    if (c * v == 10000)
        printf("%d\n", c);
    else
        printf("%d\n", c + 1);
    return 0;
}

第二种表达

#include<stdio.h>
int main()
{
    int h, r,c;
    scanf("%d%d", &h, &r);

    float v = h * 3.14 * r * r;
    c = (int)10000 / v;
    if(10000/v==c)
        printf("%d\n", c);
    else
        printf("%d\n", c + 1);
    return 0;
}

解法三(ceil):

用数学函数中的ceil

#include<math.h>
#include<stdio.h>
int main()
{
    int h, r, c;
    scanf("%d%d", &h, &r);
    float v = h * 3.14 * r * r;
    c = ceil(10000 / v);
    printf("%d\n", c);

    return 0;
}

拓展:ceil—计算不小于变量的最小整数值

定义

ceil

典型示例
#include <math.h>
#include <stdio.h>
int main(void)
{
    printf("ceil(+2.4) = %+.1f\n", ceil(2.4));
    printf("ceil(-2.4) = %+.1f\n", ceil(-2.4)); 
}

运行结果

总结

不仅仅是会写这道题目了,并且我们也复习了“%”的常见用法和函数ceil的基本用法。
感谢大家观看,希望也能得到大家的一键三连。
谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邹小白的学习笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值