一、第一种类型题,普遍是简单运算

  1. 计算球的体积V=4/3πr^3,输入球的半径r,求出体积保留3位小数
#include<bits/stdc++.h>
using namespace std;
int main()
{
double pi = 3.14,r,v;
cin>>r;
v = 4/3.0*pi*r*r*r;
printf("%.3f",v);
  return 0;
}
  1. 计算圆的面积s = pi*r^2,输入半径r,求出面积保留2位小数
#include<bits/stdc++.h>
using namespace std;
int main()
{
double pi = 3.14,r,s;
cin>>r;
s = pi*r*r;
printf("%.2f",s);
  return 0;
}
  1. 计算长方体体积v = 长*宽*高,长宽高分别用a,b,c代替并输入,保留两位小数

如输入1.2 4.5 3.7,输出19.98

#include<bits/stdc++.h>
using namespace std;
int main()
{
double a,b,c,v;
cin>>a>>b>>c;
v = a*b*c;
printf("%.2f",v);
  return 0;
}

二、if-else的判断题

  1. 输入三个整数,输出较大值
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
if(a>b&&a>c)cout<<a;
else if(b>a&&b>c)cout<<b;
else cout<<c;
  return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
cout<<max(a,max(b,c));
  return 0;
}
  1. 用C++编写程序判断一个正整数54是否是两位数(即大于等于10小于等于99)。若该正整数是两位数,则输出1,否则输出0。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n=54;
if(n>=10&&n<=99)cout<<1;
else cout<<0;
  return 0;
}
  1. 【问题描述】

贝贝约晶晶下周一起去看展览,但晶晶每周的周二和周五有课必须上课,请帮晶晶判断她能否接受贝贝的邀请。

【输入】

一个整数,贝贝邀请晶晶去看展览的日期,数字1~7分别表示周一至周日。

【输出】

一行,如果晶晶可以接受贝贝的邀请,输出YES,否则,输出NO。

【样例输入】

3

【样例输出】

YES

【参考答案】

#include <iostream>
using namespace std;
int main(){
int day;
cin >> day;
if(day==2||day==5){
   cout << "NO";
}else{
cout << "YES";
}
return 0;
}

 

 

三、循环类型题目,需要使用循环来计算

1.水仙花数是一个特殊的三位数,它们的每一位数的立方和恰好等于它们本身,如153 = 1^3+5^3+3^3,请你用编程写出100-999以内的水仙花数并输出

#include<bits/stdc++.h>
using namespace std;
int main()
{
for(int i=100;i<=999;i++)
{
int a = i/100; //获取i的百位数
int b = i/10%10; //获取i的十位数
int c = i%10; //获取i的个位数
if(i==a*a*a+b*b*b+c*c*c) //满足条件则输出
cout<<i<<endl;
}
  return 0;
}
  1. 【问题描述】

蜗牛在n米深的井底往上爬,每天从白天向上爬x米,夜晚下滑y米,蜗牛需要爬多少天才能爬上井口呢?

【输入】

一行,三个正整数,分别表示井深度n米,蜗牛白天爬x米,夜晚下滑y米。

【输出】

一行,表示爬出井需要的天数。

【输入样例】

  10 5 3

【输出样例】

  4

【参考答案】
#include<iostream>
using namespace std;
int main() {
 int n,x,y;
 cin >> n >> x >> y;
 int sum=0,day=1;
 while(true) {
  sum+=x;
  if(sum>=n) {
    break;
  }
  sum-=y;
  day++;
 }
 cout << day ;
 return 0;
}
  1. 【问题描述】

输入一行字符(长度不超过100字符),统计其中数字字符的个数。

【输入】

一行字符串,总长度不超过100字符。

【输出】

一行,一个整数,表示字符串中数字字符的个数。

【输入样例】

 It'sthe5thofMarch.

【输出样例】

  1

【参考答案】

#include <iostream>
#include <cstring>
using namespace std;
int main(){
 char s[101];
 int num=0;
 cin >> s;
 int len=strlen(s);
 for(int i=0;i<len;i++){
  if(s[i]>='0'&&s[i]<='9'){
    num++;
  }
 }
 cout << num;
 return 0;
}

 

  1. 【问题描述】

输入一行字符(长度不超过100字符),统计其中大写字母和小写字母的个数。

【输入】

一行字符串,总长度不超过100字符。

【输出】

一行,一个整数,表示字符串中大写字母和小写字母的个数。

【输入样例】

 It'sthe5thofMarch.

【输出样例】

2 13

#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[101];
cin>>a;
int x=0,y=0,len = strlen(a);
for(int i=0;i<len;i++)
{
if(isupper(a[i]))x++;
if(islower(a[i]))y++;
}
cout<<x<<" "<<y;
  return 0;
}
  1. 你手上拿着100元钱去买100只鸡,鸡的种类有3种:小鸡,母鸡,公鸡,这3种鸡的价格也有所区别,小鸡是1元3只,母鸡是3元1只,公鸡是5元1只

【输出】所有可能的购买方案。

【样例输出】

0 25 75

4 18 78

8 11 81

12 4 84

【参考代码】

#include<iostream>
using namespace std;
int main(){
    int x,y,z;
    for(x=0;x<=20;x++)
        for(y=0;y<=33;y++){
            z=100-x-y;
            if(5*x+3*y+z/3==100&&z%3==0){
                cout<<x<<" "<<y<<" "<<z<<endl;
            }
        }
 return 0;   
}

 5.输入一个数,判断是否是质数,是输出1,不是输出0

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,sum = 0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        if(n%i==0)sum++;
    }
    if(sum>2)cout<<"no";
    else cout<<"yes";
     return 0;
}

//输入一个数,判断是否是质数,
//质数指的是只有2两个因数的数,如2,3,5,7,11等等
//质数 2 3 5
//非质数 4 6 8

 

四、数组类型题目,需要用到数组的运算,比如数列问题

  1. 有这样一个数列,1、1、2、3、5、8、13... ,同学们请观察这个数列规律,你会发现数列中每个位置(位置>=3)上数字的值等于它前面两个数字之和,现在输入任意整数,求以这个整数为位置,数列中的值。(输入的位置最大上限不超过50)

【样例输入】

6

【样例输出】

8

 

【参考代码】

#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[51] = {0,1,1}; //初始化前两位
int n;
cin>>n;
for(int i=3;i<=n;i++) //计算从第3位到第n位的值
a[i] = a[i-1]+a[i-2]; //第i位 = 前两位相加
cout<<a[n]; //输出数列的第n项
  return 0;
}
  1. 给定一组数列 1,2,9,33,126,477,...,观察数列规律,请计算第6项的数据及前6项的和

解析:分析数列规律可以得出除了第1,2项是固定为1,2,从第3项开始都等于前两项的和乘以3

#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[51] = {0,1,2}; //初始化前两位
int sum = 1+2; //求和
for(int i=3;i<=6;i++) //计算从第3位到第6位的值
{
a[i] = (a[i-1]+a[i-2])*3;
}
cout<<a[6]; //输出数列的第6项
  return 0;
}