【牛客刷题】带你在牛客刷题第三弹(C/C++语言基础)

192 阅读4分钟

​本文已参与「新人创作礼」活动,一起开启掘金创作之路。

第一题 分钟计算 题目描述 给你同一天里的两个时间(24小时制),求这两个时间内有多少分钟,保证第一个时间在第二个时间之前。

输入描述:

输入两行,每行包含两个整数表示小时与分钟 输出描述:

输出分钟数 示例1

输入

10 10 11 05 输出

55 讲解: 我们来看这道题目,其实这道题目没有太大的坑,题目已经说了保证第一个时间在第二个时间之前,这时我们只需要考虑去计算间隔时间为多少,我们只需要使用使用加减法,在这里我给大家提供两种加减法运算,第一种是将第一个时间和第二个时间的总分钟数算出来,然后再进行相减,样就可以的出来相差的分钟数了。第二种就是我们可以分别对分和时两个进行相加减,这时可能分会出现负数,不过没啥问题,我们就只需用时的数乘以60再加回去就可以啦。就是这两种计算方法。

然后题目输入的是时间,所以为了方便计算我们直接使用int类型去储存就可以了。

AC: C语言:

#include<stdio.h>

int main() { int one_h, one_m ; int two_h, two_m ;

scanf("%d%d%d%d",&one_h, &one_m, &two_h, &two_m) ;

int num1 = two_m - one_m ;
int num2 = two_h - one_h ;

int sum = num2*60+num1 ;

printf("%d\n", sum) ;

return 0 ;

}

运行结果:

C++:

#include

using namespace std ;

int main() { int one_h, one_m ; int two_h, two_m ;

cin >> one_h >> one_m >> two_h >> two_m ;

int num1 = two_m - one_m ;
int num2 = two_h - one_h ;

cout << num2*60+num1 << endl ;

return 0 ;

}

运行结果:

第二题 牛牛学梯形 题目描述 输入梯形的上边和下边边长,以及梯形的高度,求梯形的面积

输入描述:

输入三个整数up,down,height 输出描述:

输出面积,保留三位小数 示例1

输入

1 2 3 输出

4.500 讲解: 来我们看下这道题目,这道题目就是考察我们一个数学公式:梯形的面积 = (上底+下底)×高÷2;我们在编程中去实现即可,不过这道题目我们要输出小数,所以我么你就使用float类型去输入数据即可,当然如果你想要使用int整形输入的话,那么就别忘使用强制转换符吧,也就是我们之前刷题时所讲到的。

AC: C语言:

#include<stdio.h>

int main() { float up, down, height ; scanf("%f%f%f",&up,&down,&height) ;

float sum = (up+down)*height/2 ;

printf("%.3f\n",sum) ;

return 0 ;

} 运行结果:

C++:

#include

using namespace std ;

int main() { double up, down, height ; cin >> up >> down >> height ;

double sum = (up+down)*height/2 ;

printf("%.3f\n",sum) ;

return 0 ;

}

运行结果:

第三题 牛牛学圆 题目描述 已知圆的半径,求它的周长和面积。

此题令pi=3.14159

输入描述:

输入一个实数a 输出描述:

输出两行,每行一个实数,第一行表示周长,第二行表示面积(结果均保留六位小数) 示例1

输入

4 输出

25.132720 50.265440 讲解: 通过读题我们发现这题也是考察了我们浮点数,与上一题相同,这题考察了我们两个关于圆的公式,即:圆的周长 = Π×R×2 ; 圆的面积 = Π××R×R ;

我们了解完这两个公式后,就可以创建浮点型数据进行输入输出了,记得输出的时候要保留六位小数噢。

AC: C语言:

#include<stdio.h>

float pi = 3.14159 ;

int main() { float a ; scanf("%f",&a) ;

double L = pi * a * 2 ;
double S = pi * a * a ;

printf("%.6f\n",L) ;
printf("%.6f",S) ;

return 0 ;

}

运行结果:

C++:

#include

using namespace std ;

double pi = 3.14159 ;

int main() { double a ; cin >> a ;

double L = pi * a * 2 ;
double S = pi * a * a ;

printf("%.6f\n",L) ;
printf("%.6f",S) ;

return 0 ;

}

运行结果:

第四题 牛牛学矩形 题目描述 已知长方形的长和宽,求它的周长和面积。

输入描述:

输入一行,包含两个正整数a, b ,以空格隔开0 <= a, b <= 1000 输出描述:

输出两行,每行一个整数,第一行表示周长,第二行表示面积 示例1

输入

9 19 输出

56 171 讲解: 这道题目依旧考察了我们数学知识即:矩形的面积=长×宽; 矩形的周长 = 2×(长+宽);

对于这个题目,由于其输入输出都要求了整数,所以我们只需使用int即可。

AC: C语言:

#include<stdio.h>

int main() { int a, b ; scanf("%d%d",&a,&b) ;

printf("%d\n%d\n",a+b+a+b, a*b) ;

return 0 ;

} 运行结果:

C++:

#include

using namespace std ;

int main() { int a, b ; cin >> a >> b ; cout << a+b+a+b << endl << a*b << endl ;

return 0 ;

} 运行结果:

第五题 牛牛学立体 题目描述 输入长方体的长、宽、高,计算它的表面积和体积

输入描述:

输入一行,三个整数a,b,c,以空格隔开,分别表示长宽高。

0 <= a, b,c <= 1000 输出描述:

输出两行,每行一个整数,分别表示表面积和体积 示例1

输入

1 1 1 输出

6 1 讲解: 这道题目考察了我们矩形体的面积和体积公式,其表面积=(长×宽+宽×高+长×高)×2 ;其体积 = 长×宽×高 ;

又因为这题输入输出全为整数,所以我们只需要使用int类型存储数据即可。

AC: C语言:

#include<stdio.h>

int main() { int a, b ,c ; scanf("%d%d%d",&a,&b,&c) ;

printf("%d\n", (a*b+b*c+c*a)*2) ;
printf("%d\n", a*b*c) ;

return 0 ;

} 运行结果:

C++:

#include

using namespace std ;

int main() { int a, b ,c ; cin >> a >> b >> c ; cout << (ab+bc+ca)2 << endl ; cout << abc << endl ;

return 0 ;

} 运行结果:

第六题 数字反转之-三位数 题目描述 给定一个三位数的整数。然后提取百位,十位和个位,反转输出。

输入描述:

输入一个3位整数n (100<= n<= 999) 输出描述:

一个正整数 示例1

输入

120 输出

021 讲解: 关于这道题目C语言和C++我给出两个不同解法,C语言解法基础针对次题目,C++解法相对而言高级一些,并且可以适用更多情况 。

先说C语言解法,因为题目中已经提到了三位数,所以我们直接创捷一个char类型的数组存放每个位数的数,之后我么能利用for循环,将数组从下标2-0依次输出即可。

然后我们来看C++这种解法,这种解法就稍微高级一点,他就不限制你输入的位数了,你输入多少位都可以逆转,首先我们创建一个string类型的字符串,并存入字符串,之后我们使用一个size()函数去测量其长度,依旧时for循环反过来输出相应数字即可。

size()函数:size()是取字符串长度的,其具体用法为:

a.size() ; //a为想要测量长度的字符串 。 AC: C语言:

#include<stdio.h>

int main() { char a[3] ;

for(int i=0; i<3; i++)
{
    scanf("%c",&a[i]) ;
}

for(int i=2; i>=0; i--)
{
    printf("%c",a[i]) ;
}

return 0 ;

}

运行结果:

C++:

#include

using namespace std ;

int main() { string a ; cin >> a ;

for(int i=a.size()-1; i>=0; i--)
{
    cout << a[i] ;
    }


return 0 ;

}

运行结果:

第七题 上下取整 题目描述 任意给出一个小数,编程求不小于它的最小整数与不大于它的最大整数。

即求出这个小数往下取整与往上取整的值。

输入描述:

输入一行,包含一个浮点数a,保证a≥0 输出描述:

输出两行,第一行表示a往下取整,第二行表示a往上取整。 示例1

输入

3.5 输出

3 4 备注:

ceil(x)函数返回大于等于x的最小double类型整数 例如:ceil(3.8) 返回 4.0 讲解: 来看这道题,其实我们这道题目需要了解两个函数就是floor()和ceil() ;

我们使用math库去调用这两个函数,而这两个函数分别是向下取整和向上取整,我们只需将想要取整的数填入括号内即可。

是不是发现这样这道题目就简单很多啊,我们在写题的时候要合理利用这些函数去进行解题。这样可以最大效率的去解答题目 。

AC: C语言:

#include<stdio.h> #include <math.h>

int main() { float num; scanf("%f",&num) ; int floor_num = floor(num) ; int ceil_num = ceil(num) ;

printf("%d\n%d\n",floor_num ,ceil_num) ;
return 0;

} 运行结果:

C++:

#include #include

using namespace std;

int main() { double num; cin >> num; int floor_num = floor(num) ; int ceil_num = ceil(num) ; cout << floor_num << endl ; cout << ceil_num << endl ; return 0; }

运行结果:

第八题 求平均值 题目描述 输入三个数,计算并输出它们的平均数。(保留小数点后6位)

输入描述:

输入一行,包含三个整数a, b, c,在int范围内 输出描述:

输出一行, 包含一个浮点数,小数点后保留六位 示例1

输入

4 5 6 输出

5.000000 讲解: 大家应该都不陌生平均值的求法,就是所有的数相加除以其个数就可以了,那我们在写这道题目的时候只需要记得在进行计算的时候,需要使用强制转换类型就可以了,其他的就按正常输入输出即可,并且记得保留6位小数。

AC: C语言:

#include<stdio.h>

int main() { int a, b , c ; scanf("%d%d%d",&a,&b,&c) ;

double sum = (double)(a+b+c)/3 ;
printf("%.6f\n",sum) ;

return 0 ;

} 运行结果:

C++:

#include

using namespace std ;

int main() { int a, b , c ; cin >> a >> b >> c ;

double sum = (double)(a+b+c)/3 ;
printf("%.6f\n",sum) ;

return 0 ;

} 运行结果:

好啦,我们第三弹的题目到这里就讲解完成了,希望你们都可以学会这些题目,在学习C语言的道路上更进一步加油。

文章的末尾想要问大家一个问题你认为当下计算机行业是否已经饱和?是否有学习的必要?