C++基础编程题
一、第一种类型题,普遍是简单运算
- 计算球的体积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; } |
- 计算圆的面积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; } |
- 计算长方体体积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的判断题
- 输入三个整数,输出较大值
#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; } |
- 用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~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; }
|
- 【问题描述】
蜗牛在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; }
|
- 【问题描述】
输入一行字符(长度不超过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; }
|
- 【问题描述】
输入一行字符(长度不超过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; }
|
- 你手上拿着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、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,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; } |