注:牛客网允许使用万能头文件#include<bits/stdc++.h>
1、求类型长度——sizeof()函数
2、将浮点数四舍五入——round()函数——前面如果加上static_cast会更安全一些
在C语言中可以使用printf(“.0lf”)
3、求和——直接输出,没什么好说的
4、两数最大和——max()函数
5、和差积商模——也没什么好说的,可以用max函数判断一下
6、交换两数值——swap()函数
7、三目运算符——?——(如果式子成立)?(输出):(如果式子不成立输出这个)
8、折扣问题——上代码
if(price>=100&&price<500)
cost=price*0.9;
else if(price>=500&&price<2000)
cost=price*0.8;
else if(price>=2000&&price<5000)
cost=price*0.7;
else if(price>=5000)
cost=price*0.6;
cout<<cost;
9、身高体重——简单逻辑判断
double tmp=weight/(height*height);
if(tmp<18.5) cout<<"偏瘦";
else if(tmp>18.5&&tmp<=20.9) cout<<"苗条";
else if(tmp>20.9&&tmp<=24.9) cout<<"适中";
else if(tmp>24.9) cout<<"偏胖";
10、一样
if(score<0||score>100) cout<<"成绩不合法";
else if(score>90&&score<100) cout<<"优秀";
else if(score>80&&score<89) cout<<"良";
else if(score>70&&score<79) cout<<"中";
else if(score>60&&score<69) cout<<"及格";
else if(score>0&&score<59) cout<<"差";
11、一样,但可以练习一下Switch,case,break
if(month>=1&&month<=12)
{
switch(month)
{
case 12:
case 1:
case 2:
cout<<"冬季";
break;
case 3:
case 4:
case 5:
cout<<"春季";
break;
case 6:
case 7:
case 8:
cout<<"夏季";
break;
case 9:
case 10:
case 11:
cout<<"秋季";
break;
}
}
else {
cout<<"不合法";
12、注意边界就行了
for(int i=1;i<=n;i++)
{
if(i%2==0)
{
sum+=i;
}
}
13、递归,或者直接for
// write your code here......
long long int tmp=1;
for(int i=1;i<=n;i++)
{
tmp*=i;
}
cout << tmp << endl;
14、分解,然后判断。依稀记得这是当年难住我的一道题
for(int i=100;i<=999;i++)
{
int bai=i/100;
int shi=i%100/10;
int ge=i%10;
if(bai*bai*bai+shi*shi*shi+ge*ge*ge==i)
{
cout<<i<<endl;
}
}
15、不难,但是相当烦的一道题
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
cout<<j<<" * "<<i<<" = "<<j*i<<" ";
}
cout<<endl;
}
return 0;
16、9到9999999999的和——不难,但要注意int的范围
int i=10;
long long int tmp=0;
long long int n=9;
while(i--)
{
tmp+=n;
n=n*10+9;
//cout<<n<<endl;
}
cout<<tmp;
return 0;
17、只需要注意输出,使用printf比较方便
if(n>1)
{
for(int i=2;i<=n;i++)
{
h/=2;
sum+=h*2;
}
printf("%.1f ",sum);
printf("%.1f",h/2);
}
else if(n==1)
{
high=h/2.0;
printf("%.1f ",h);
printf("%.1f",high);
}
return 0;
18、质数只有自己本身和1为因数。所以只需要判断到根号n就行。但是不能再循环中写i<sqrt(n),这样会导致循环无法进行
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n;
cin >> n;
if (n <= 1) {
cout << "不是质数";
} else if (n == 2) {
cout << "是质数";
} else if (n % 2 == 0) {
cout << "不是质数";
} else {
bool is_prime = true;
// 优化循环条件:使用i*i避免浮点误差
for (int i = 3; i*i <= n; i += 2) {
if (n % i == 0) {
is_prime = false;
break;
}
}
cout << (is_prime ? "是质数" : "不是质数");
}
return 0;
}
19、虽然是数组题,但是可以阶级复习一下vector
vector<int>v;
for (int i = 0; i < 6; i++) {
int n;
cin >> n;
v.push_back(n);
}
sort(v.begin(),v.end());
cout << v[0] << " ";
cout << v[v.size()-1];
20、同理(牛客这种格式题真的好烦)
vector<int>v;
for(int i=0;i<6;i++)
{
int n;
cin>>n;
v.push_back(n);
}
cout<<"[";
for(int i=0;i<=4;i++)
{
cout<<v[i]<<", ";
}
cout<<v[5];
cout<<"]";
cout<<endl;
cout<<"[";
for(int i=5;i>=1;i--)
{
cout<<v[i]<<", ";
}
cout<<v[0];
cout<<"]";
21、冒泡排序,不难,但是容易忘
#include <iostream>
using namespace std;
void Bubble(int arr[], int len)
{
for (int i = 0; i < len - 1; i++)
{ //轮数
for (int j = 0; j < len - i - 1; j++)
{ //每一轮的操作
if (arr[j] > arr[j + 1])
{
swap(arr[j+1], arr[j]);
}
}
}
}
int main() {
int arr[6] = { 0 };
int len = sizeof(arr) / sizeof(int);
for (int i = 0; i < len; i++) {
cin >> arr[i];
}
// write your code here......
Bubble(arr,len);
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
return 0;
}
21、选择排序
for(int i=0;i<len-1;i++)
{
int tmp=i;
for(int j=i+1;j<len;j++)
{
if(arr[j]<arr[tmp])
{
tmp=j;
}
}
swap(arr[tmp],arr[i]);
}
for(int i=0;i<len;i++)
{
cout<<arr[i]<<" ";
}
22、二维数组求和
int arr[4][3] = {{22,66,44},
{77,33,88},
{25,45,65},
{11,66,99}};
// write your code here......;
int sum = 0;
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 3; j++) {
sum += arr[i][j];
}
}
cout << sum << endl;