作业题解

大象喝水

题目描述

一只大象口渴了,要喝20升水才能解渴,但现在只有一个深h厘米,底面半径为r厘米的小圆桶(h和r都是整数)。问大象至少要喝多少桶水才会解渴。

输入

输入有一行:包行两个整数,以一个空格分开,分别表示小圆桶的深h和底面半径r,单位都是厘米。

输出

输出一行,包含一个整数,表示大象至少要喝水的桶数。

输入数据 1

23 11

输出数据 1

3

 

思路:

大象要喝20升水,我们有一种水桶,我们知道水桶的底面半径和水桶的高,那么我们就可以求出水桶的容积(或者体积)。圆柱的容积公式 V = ∏  * r * r * h。

我们知道常量Π = 3.1415926   应为他是一个浮点数,我们将其用double(或者float)变量存储。

double v = 3.1415926 * r * r * h;

然后我们是不是可以求几桶水才能达到20升了。这里面有一个小细节,当我们求出的桶数不是一个整数的时候,那么我们需要的数量就是向上取整了。也就是说我们求出是 比如是2.3,那我们需要的桶数就是3通。

先看下求桶数代码:

double t1 = 20000 / v;

为什么是20000呢?注意看题,题目说的桶的单位是厘米。知道了吧。那接下来的任务就是如何判断他是不是一个整数了。我给出我的判断方法:

    double t1 = 20000 / v;
    int t2 = (int)t1;
    double t3 = (double)t2;
    if (t1 == t3)
        printf("%d", t2);
    else
        printf("%d", t2 + 1);

这里面用到是数据类型的强制转换,不知道没有关系,点这里了解一下C语言数据类型强制转换

下面给出AC代码

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int h, r;
 6     scanf("%d %d", &h, &r);
 7     double v = 3.1415926 * r * r * h;
 8     double t1 = 20000 / v;
 9     int t2 = (int)t1;
10     double t3 = (double)t2;
11     if (t1 == t3)
12         printf("%d", t2);
13     else
14         printf("%d", t2 + 1);
15     return 0;
16 }

 

这是用到数组的AC代码:

 1 #include<stdio.h>
 2 
 3 int f[10010];
 4 int main()
 5 {   
 6     int n;
 7     scanf("%d",&n);
 8 
 9     for(int i = 0; i < n; i ++)
10     {
11         scanf("%d", &f[i]);
12     }
13 
14     int sum = 0;
15     for(int i = 0; i < n; i ++)
16     {
17         sum += f[i];
18     }
19 
20     double v;
21     v = sum * 1.0 / n;
22 
23     printf("%d %.5f", sum, v);
24 
25     return 0;
26 }

 

 

 

 

判断闰年

题目描述

判断某年是否是闰年。如果公元a年是闰年输出Y,否则输出N。

输入

输入只有一行,包含一个整数a。

输出

一行,如果公元a年是闰年输出Y,否则输出N。

输入数据 1

2006

输出数据 1

N



思路:

首先我们要知道什么是闰年。闰年的定义就是

  1. 年份是400的整数倍
  2. 年份是4的倍数,但不是100的整数倍

现在是不是知道了,我们直接看AC代码:

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int a;
 6     scanf("%d", &a);
 7     if(!(a % 400) || (!(a % 4) && a % 100)) printf("Y");
 8     else printf("N");
 9 
10     return 0;
11 }

 

 

最大数输出

题目描述

输入三个整数,数与数之间以一个空格分开。 输出一个整数,即最大的整数。

输入

输入为一行,包含三个整数,数与数之间以一个空格分开。

输出

输出一行,包含一个整数,即最大的整数。

输入数据 1

10 20 56

输出数据 1

56


思路:

控制台输入3个数,输出其中最大的一个数。这是不是要用到我们的判断语句了。

我们这样:定义一个新的变量t,我们先将a, b进行比较,将较大的赋值给t:

1     int t;
2     if(a > b) t = a;
3     else t = b;

然后将t与c进行比较:

1 f(t < c) t = c;

 

这样是不是可以找到最大值了,

下面看完整AC代码:

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int a, b, c;
 6     scanf("%d%d%d", &a, &b, &c);
 7     int t;
 8     if(a > b) t = a;
 9     else t = b;
10 
11     if(t < c) t = c;
12     printf("%d", t);
13     return 0;
14 }

 

 

字符菱形

题目描述

给定一个字符,用它构造一个对角线长 5 个字符,倾斜放置的菱形。

输入格式

只有一行,一个字符

输出格式

按规则输出菱形

输入数据 1

*

输出数据 1

  *
 ***
*****
 ***
  *

提示

不一定要使用 for 循环哦

 

思路:

输入一个字符,然后我们以这个字符输出一个图形。有什么需要想的吗?没有。我们就输入一个数据,然后printf();注意格式就行了。

我们看下代码:

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     char a;
 6     scanf("%c", &a);
 7     printf("  %c  \n", a);
 8     printf(" %c%c%c \n", a, a, a);
 9     printf("%c%c%c%c%c\n", a, a, a, a, a);
10     printf(" %c%c%c \n", a, a, a);
11     printf("  %c  \n", a);
12     return 0;
13 }

输出第二个整数

题目描述

输入三个整数,整数之间由一个空格分隔,整数是32位有符号整数。把第二个输入的整数输出。

输入格式

只有一行,共三个整数,整数之间由一个空格分隔。整数是32位有符号整数。

输出格式

只有一行,一个整数,即输入的第二个整数。

输入数据 1

123 456 789

输出数据 1

456

 

思路:

输入3个数,输出第二个输入的数。 对,就这意思。

AC代码:

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int a, b, c;
 6     scanf("%d%d%d", &a, &b, &c);
 7     printf("%d", b);
 8 
 9     return 0;
10 }

 

 

求整数的和与均值

题目描述

读入n(1≤n≤10000)个整数,求它们的和与均值。

输入

输入第一行是一个整数n,表示有n个整数。

第2~n+1行每行包含1个整数。每个整数的绝对值均不超过10000。

输出

输出一行,先输出和,再输出平均值(保留到小数点后5位),两个数间用单个空格分隔。

输入数据 1

4
344
222
343
222

输出数据 1

1131 282.75

 

思路:

我们输入n, 然后再输入n个数,求出他们的和与平均值。这里就需要我们讲的循环了。还记得for循环的格式吗?

1     for(初始化 ;运行条件 ;变化 ){
2     执行语句
3   }

我们定义一个ans对他们进行求和可以把?看下可以看的懂吗?

1     int ans = 0;
2     for (int i = 1; i <= n; i++)
3     {
4         int x;
5         scanf("%d", &x);
6         ans += x;
7     }

 

然后就是输出了,他们的和不就是ans嘛。那平均值呢?看题,他们要的是保留5位小数,那不就是浮点数吗?我们再定义一个double(或者float)型的变量存储起来,然后再输出。这里也有类型转化,在上面有个链接,你不会点进去看看就可以了。

1     double v;
2     v = ans * 1.0 / n;

 

那剩下的就是输出了:

下面是AC代码

 1 #include <stdio.h>
 2 int f[10010];
 3 int main()
 4 {
 5     int n;
 6     scanf("%d", &n);
 7     int ans = 0;
 8     for (int i = 1; i <= n; i++)
 9     {
10         int x;
11         scanf("%d", &x);
12         ans += x;
13     }
14     double v;
15     v = ans * 1.0 / n;
16     printf("%d %.5f", ans, v);
17     return 0;
18 }

 

 

 

posted @ 2022-09-21 22:55  Luli&  阅读(759)  评论(0)    收藏  举报