计算机二级编程题的实现
废话不多说,直接上代码。主要用c++实现,不过有的也会有c和c++混着用的情况。
#include<iostream>
#include<string>
#include<vector>
#include<cmath>
#include<iomanip>
using namespace std;
//求100以内能被17整除的最大自然数
void Q1() {
int i = 100;
for (; i > 0; i--) {
if (i % 17 == 0) {
cout << i << endl;
return;
}
}
}
//已知a,b,c都是1位整数,求abc+cba=1333时的abc
void Q2() {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
for (int k = 0; k < 10; k++) {
if ((i * 100 + j * 10 + k) + (k * 100 + j * 10 + i) == 1333) {
cout << i << j << k << endl;
return;
}
}
}
}
}
//200到400之间不能被3整除的整数的和
void Q3() {
int sum = 0;
for (int i = 200; i < 401; i++) {
if (i % 3 != 0) {
cout << i << " ";
sum += i;
}
}
cout << sum << endl;
}
//输入10个数字,统计非负数的个数,计算非负数的和
void Q4(int a[],int len) {
int sum = 0;
int count = 0;
for (int i = 0; i < len; i++) {
if (a[i] < 0) {
count++;
sum += a[i];
}
}
cout << "非负数有" << count << "个,其和为:" << sum << endl;
//测试函数如下
/*
int arr[] = { -1,-2,-3,1,2,4,5,1,-9,-16 };
int len = sizeof(arr) / sizeof(arr[0]);
Q4(arr,len);
*/
}
//100以内自然偶数和
void Q5() {
int sum = 0;
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) {
cout << i << " ";
sum += i;
}
}
cout << sum << endl;
}
//五个数求和并输出
void Q6(int a[]) {
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += a[i];
}
cout << sum << endl;
/*
测试函数:
int a[] = { 1,2,3,4,5 };
Q6(a);
*/
}
//求1到101每三个一乘的和 1*2*3+3*4*5+....+99*100*101
void Q7() {
int sum = 0;
for (int i = 1; i <= 99; i+=2) {
cout << i << "*" << i + 1 << "*" << i + 2;
if (i != 99) cout << "+";
else cout << "=";
sum += i * (i + 1) * (i + 2);
}
cout << sum << endl;
}
//字符串中的所有字符a用*代替
void Q8(char s[]) {
int i = 0;
while (s[i]!='\0') {
if (s[i] == 'a') {
s[i] = '*';
}
i++;
}
/*
* 测试函数:
* char s[] = "I love china aaa a";
Q8(s);
cout << s;
*/
}
//数组[1,2,3,4,5]逆序
void Q9Reverse(int a[], int len) {
int temp=0;
for (int i = 0; i < len / 2; i++) {
temp = a[i];
a[i] = a[len - 1 - i];
a[len - 1 - i] = temp;
}
/*
* 测试函数:
* int a[] = { 1,2,3,4,5 };
Q9Reverse(a,5);
for (int i = 0; i < 5; i++) {
cout << a[i] << " ";
}
*/
}
//第十题丢失
//判断输入正负、奇偶,正数输出z;负数f;偶数o,奇数j
void Q11() {
int a;
cin >> a;
if (a % 2 == 0) cout << "o" << endl;
else cout << "j" << endl;
if (a >= 0) cout << "z" << endl;
else cout << "f" << endl;
}
//1-200之间不能被5整除的整数和
void Q12() {
int sum = 0;
for (int i = 0; i <= 200; i++) {
if (i % 5 != 0) {
cout << i << " ";
sum += i;
}
}
cout << endl;
cout << sum;
}
//输入n,a,计算a+aa+aaa+....+aaaaaa(n个a)
void Q13() {
int n, a;
int temp;
cin >> n >> a;
temp = a;
int sum = 0;
for (int i = 1; i <= n; i++) {
cout << temp<< " ";
sum += temp;
temp = pow(10, i) * a + temp;
}
cout << endl;
cout << sum;
}
//求五个数的最大值和平均值
void Q14() {
int a[] = { 15,231,25,654,33 };
int max = 0;
double sum = 0;
for (int i = 0; i < 5; i++) {
if (a[i] > max) max = a[i];
sum += a[i];
}
cout << "最大值:" << max << ",平均值:" << sum / 5 << endl;
}
//输出200-400能被3整除且个位是6的
void Q15() {
for (int i = 200; i <= 400; i++) {
if ((i % 3 == 0) && (i % 10 == 6)) {
cout << i << " ";
}
}
cout << endl;
}
//去掉字符串之中的'a'
void Q16() {
//真的去掉
char s[] = "aaaaacjdalksbaaa";
int len = strlen(s);
char* s1 = new char;
int i = 0;
int j = 0;
while (s[i]) {
if (s[i] != 'a') {
s1[j++] = s[i];
}
i++;
}
s1[j] = '\0';
cout << s1 << endl;
//假的去掉
i = 0;
while (s[i]) {
if (s[i] != 'a') cout << s[i];
i++;
}
}
//200-400之间不能被7整除的整数和
void Q17() {
int sum = 0;
for (int i = 200; i <= 400; i++) {
if (i % 7 != 0) {
cout << i << " ";
sum += i;
}
}
cout << endl;
cout << sum << endl;
}
//200-400之间不能被5整除的整数和
void Q18() {
int sum = 0;
for (int i = 200; i <= 400; i++) {
if (i % 5 != 0) {
cout << i << " ";
sum += i;
}
}
cout << endl;
cout << sum << endl;
}
//统计十个数中非正数的个数及正数的和
void Q19() {
int count = 0;
int sum = 0;
int a[] = { 1,-23,4,-1,5,-52,1,5,6,7 };
for (int i = 0; i < 10; i++) {
if (a[i] <= 0) {
count++;
sum += a[i];
}
}
cout << "非正数有:" << count << "个,和为:" << sum << endl;
}
//字符串中大写字母变小写字母
void Q20() {
char s1[] = "AaBbCcDd";
char index = 'A' - 'a';
int i = 0;
while (s1[i]) {
if (s1[i] >= 'A' && s1[i] <= 'Z') {
s1[i] -= index;
}
i++;
}
cout << s1 << endl;
}
//打印所有水仙花数
void Q21() {
int a, b, c;
for (int i = 100; i < 1000; i++) {
a = i % 10;
b = i / 10 % 10;
c = i / 100 % 10;
if (pow(a, 3) + pow(b, 3) + pow(c, 3) == i) {
cout << i << endl;
}
}
}
//100米自由落下的球,每次反弹原来高度一半,求第十次共经过多少米,反弹多高
void Q22() {
double sum =0;
double height = 100;
for (int i = 0; i < 10; i++) {
sum += height;
height /= 2;
sum += height;
cout << "总路程:" << sum << "反弹高度:" << height << endl;
}
}
//输出0-200能被3整除且个位是6的
void Q23() {
for (int i = 0; i <= 200; i++) {
if ((i % 3 == 0) && (i % 10 == 6)) {
cout << i << " ";
}
}
cout << endl;
}
//计算一个数的阶乘
int Q24(int n) {
if (n == 1) return 1;
else return n * Q24(n - 1);
}
//判断从键盘输入的字符中数字的个数,大写字母的个数,小写字母的个数,其他字符的个数
//*作为字符输入结束标志
void Q25() {
int UppercaseLetters = 0;
int LowercaseLetters = 0;
int number = 0;
int others = 0;
string s="2021-11-17 Best wishes For YOU*";
//cin >> s;
int i = 0;
while (s[i] != '*') {
if (s[i] >= 'A' && s[i] <= 'Z') UppercaseLetters++;
else if (s[i] >= 'a' && s[i] <= 'z') LowercaseLetters++;
else if (s[i] >= '0' && s[i] <= '9') number++;
else others++;
i++;
}
cout << "大写、小写、数字、其他分别有:" << UppercaseLetters << " "
<< LowercaseLetters << " " << number << " " << others << "个" << endl;
}
//循环打印平行四边形
/* ****
* ****
* ****
* ****
* ****
*/
void Q26() {
int width;
for (int i = 0; i < 5; i++) {
width = 4 - i;
while (width--) cout << " ";
cout << "****" << endl;
}
}
//数组实现字符串逆序输出
void Q27() {
char s1[] = "I love China";
for (int i = strlen(s1); i >= 0; i--) {
cout << s1[i];
}
}
//求1-1/2+1/3-1/4......+1/99-1/100
void Q28() {
double sum = 0;
double n = 1;
double a = 1;
for (int i = 1; i <= 100; i++) {
a = pow(-1, i - 1) * (1 / n);
sum += a;
n++;
}
cout << endl;
cout << sum << endl;
}
//3个学生4门课成绩,输出每个学生总分和平均分并输出,保留一位小数
void Q29() {
int a1[] = { 60,70,65,75 };
int a2[] = { 75,80,75,90 };
int a3[] = { 95,75,90,65 };
double sum1=0, sum2=0, sum3=0;
for (int i = 0; i < 4; i++) {
sum1 += a1[i];
sum2 += a2[i];
sum3 += a3[i];
}
cout << "总分为:" << sum1 << "," << sum2 << "," << sum3 << "," << endl;
printf("平均分为:%.1f,%.1f,%.1f", sum1 / 4, sum2 / 4, sum3 / 4);
}
//求两个正整数的最大公约数
void Q30() {
int a = 50, b = 75;
if (a < b) {
int temp = a;
a = b;
b = temp;
}
for (int i = b; i >= 1; i--) {
if (b % i == 0 && a % i == 0) {
cout << "最大公约数为:" << i << endl;
return;
}
}
}
//100以内自然奇数之和
void Q31() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 != 0) {
cout << i << " ";
sum += i;
}
}
cout << sum << endl;
}
//200到400之间能被3整除且个位是7的整数
void Q32() {
for (int i = 200; i <= 400; i++) {
if (i % 3 == 0 && i % 10 == 7) {
cout << i << endl;
}
}
}
//计算1*2*3+4*5*6+...+97*98*99
void Q33() {
int sum = 0;
for (int i = 1; i <= 97; i += 3) {
sum += i * (i + 1) * (i + 2);
if(i!=97)
cout << i << "*" << i + 1 << "*" << i + 2<<"+";
else
cout << i << "*" << i + 1 << "*" << i + 2 << "=";
}
cout << sum << endl;
}
//输入n,输出1*1+2*2+3*3+4*4+...+n*n,要求编写函数求平方
int MyPow(int a) {
return a * a;
}
void Q34(int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += MyPow(i + 1);
}
cout << sum << endl;
}
//1-200不能被3整除的整数和
void Q35() {
int sum = 0;
for (int i = 1; i <= 200; i++) {
if (i % 3 != 0) {
sum += i;
}
}
cout << sum << endl;
}
//36题和29题重复
//输入华氏温度输出摄氏温度(保留两位)
void Q37(double f) {
double c;
c = (5.0 / 9.0) * (f - 32);
cout << setiosflags(ios::fixed)<<setprecision(2)<<c << "℃" << endl;
}
//输入任意大小三个数降序输出
void Q38(int a,int b,int c) {
cout << (a >= b ? (a >= c ? a : c) : (b >= c ? b : c)) << " ";
cout << (a >= b ? (a >= c ? c : a) : (b >= c ? c : b)) << " ";
cout << (a <= b ? (a <= c ? a : c) : (b <= c ? b : c)) << endl;
/* Q38(16,93,0x2123ACD);*/
}
//1元兑换5分,2分,1分共50个,每种硬币最少一枚,问共有多少种方案?每种方案中三种
//硬币的数量
void Q39() {
int count = 0;
for (int i = 1; i < 20; i++) {
for (int j = 1; j < 50; j++) {
for (int k = 1; k < 100; k++) {
if (i * 5 + j * 2 + k == 100&&i+j+k==50) {
count++;
cout << "5分" << i << "个,2分" << j << "个,1分" << k << "个" << endl;
}
}
}
}
cout << "共" << count << "种方案" << endl;
}
//输入园半径,计算面积周长,保留两位
void Q40(double r) {
double length, area;
area = r * r * 3.14159265358979323846264338;
length = 2 * 3.14159265358979323846264338 * r;
cout << setiosflags(ios::fixed) << setprecision(2) <<"面积:" << area << ",周长:" << length << endl;
}
//输入字符串,整数m,n,输出字符串从m开始的n位
void Q41() {
char s[] = "abcdefg";
int m = 2;
int n = 3;
while (n--) {
cout << s[m - 1];
m++;
}
}
//输入一个不多于5位的正整数,判断它是几位数字并且逆序输出
void Q42(int n) {
int temp;
if (n / 10000 != 0) {
cout << "这是一个五位数" << endl;
for (int i = 0; i < 5; i++) {
temp = n / pow(10, i);
temp %= 10;
cout << temp << " ";
}
}
else if (n / 1000 != 0) {
cout << "这是一个四位数" << endl;
for (int i = 0; i < 4; i++) {
temp = n / pow(10, i);
temp %= 10;
cout << temp << " ";
}
}
else if (n / 100 != 0) {
cout << "这是一个三位数" << endl;
for (int i = 0; i < 3; i++) {
temp = n / pow(10, i);
temp %= 10;
cout << temp << " ";
}
}
else if (n / 10 != 0) {
cout << "这是一个两位数" << endl;
for (int i = 0; i < 2; i++) {
temp = n / pow(10, i);
temp %= 10;
cout << temp << " ";
}
}
else {
cout << "这是一个个位数" << endl;
cout << n << endl;
}
}
//输出Fibonacci的前40项
int Q43(int n) {
if (n == 1 || n == 2) return 1;
else return Q43(n - 1) + Q43(n - 2);
/*for (int i = 1; i <= 40; i++) {
cout << "第" << i << "项:" << Q43(i) << endl;
}
*/
}
//判断是否闰年
void Q44(int year) {
if (year % 400 == 0) {
cout << "yes" << endl;
}
else if (year % 4 && year % 100 != 0) {
cout << "yes" << endl;
}
else cout << "no" << endl;
}
//冒泡排序10个数字 太简单了不写
//判断是否素数
void Q46(int n) {
if (n == 1 || n == 2) {
cout << "yes" << endl;
}
else {
for (int i = 2; i < n; i++) {
if (n % i == 0) {
cout << "no" << endl;
return;
}
}
cout << "yes" << endl;
}
}
//计算1!+2!+...+10!
void Q47() {
//24题写过计算阶乘的方法,直接调用
long long sum = 0;
for (int i = 1; i <= 10; i++) {
sum += Q24(i);
}
cout << sum << endl;
}
//求前15项 1/2 3/2 5/3 8/5 的和
void Q48() {
int i = 2;
int j = 1;
int temp=0;
double sum=0;
for (int k = 0; k < 15; k++) {
sum += i / j;
temp = i;
i += j;
j = temp;
}
cout << sum << endl;
}
//输入圆柱体的高和底面半径,计算表面积体积,保留两位
void Q49(double height, double r) {
double area=2*3.1415926*r*r+3.1415926*2*r*height;
double volume = 3.1415926 * r * r * height;
printf("面积为%.2lf㎡,体积为%.2lfm³。", area, volume);
}
//输入十进制整数,计算各位数字之和
void Q50(int n) {
int count = 0;
int sum=0;
int temp=n;
while (temp) {
count++;
temp /= 10;
}//获取n的位数
for (int i = 0; i < count; i++) {
temp = n / pow(10, i);
temp %= 10;
sum += temp;
}
cout << sum << endl;
}
//51题丢失
//判断字符串是不是回文(正着读和反着读一样)
void Q52() {
string s = "abcdba";
int len = s.length();
for (int i = 0; i < len / 2; i++) {
if (s[i] != s[len - 1 - i]) {
cout << "不是" << endl;
return;
}
}
cout << "是" << endl;
}
//删除字符串中的数字
void Q53() {
string s = "sssabc12138jjkh";
int i = 0;
while (s[i]) {
if (!(s[i] >= '0' && s[i] <= '9')) {
cout << s[i];
}
i++;
}
}
int main() {
cout << "Hello World!" << endl;
return 0;
}