蓝桥杯练习题笔记--1016~1030

2024-02-03 02:08

本文主要是介绍蓝桥杯练习题笔记--1016~1030,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

二、1016~1030

1016: [编程入门] 水仙花数判断

题目:打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。 例如:153是一个水仙花数,因为153=111+555+333。

代码如下(C):

#include <stdio.h>
#include<math.h>int main()
{for (int i = 100; i <= 999; i++){if (i == (pow(i / 100, 3) + pow(i % 10, 3) + pow(i / 10 % 10, 3)))printf("%d\n", i);}return 0;
}

代码如下(C++):

#include<iostream>
using namespace std;int main()
{int i, a, b, c;for (i = 100; i <= 999; i++){a = i / 100;b = i / 10 % 10;c = i % 10;if (i == a*a*a + b*b*b + c*c*c)cout << i << " ";}
return 0;
}

1018: [编程入门] 有规律的数列求和

题目:有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13… 求出这个数列的前N项之和,保留两位小数。

代码如下(C):

#include<stdio.h>int main()
{int n=10;double a,b,c;scanf("%d",&n);a=1;//第n项b=0;//前n项和c=2;//第n项的值while(a<=n){b=b+c; //将数列的前n项和+第n+1的项的值赋值给数列的前n项和c=1+(1/c);//将第 n+1的项的值的倒数+1赋值给第n+2的项的值a=a+1;//将第n项+1项赋值给第n+1项}printf("%.2f",b);return 0;
}

代码如下(C++):

#include<iostream>
#include<iomanip>
using namespace std;int main()
{double a=1,b=1,c=0,sum=0;int i,N;cin>>N;for(i=0;i<N;i++){sum+=(a+b)/a;c=b;b=a;a=a+c;}cout<<fixed<<setprecision(2)<<sum<<endl;return 0;
}

1019: [编程入门] 自由下落的距离计算

题目:一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数

代码如下(C):

#include"stdio.h"
int main()
{int num;                           //次数double iterm=0,sum=0,high;         //一定要初始化,不然后果不堪设想                             scanf("%lf %d", &high, &num);for(int i = 0; i < num; i++)       //循环的开始和结束注意一下{ if(i==0)                       sum+=high;                //加上最后一次反弹               else sum+=2*high;              //中间过程high=high/2.0;                //下次反弹前面的二分之一;//printf("%0.2lf %0.2lf\n",high,sum);  //high=(double)high/2;强制转换}printf("%0.2lf %0.2lf\n",high,sum); //注意格式别错了return 0;
}

代码如下(C++):

/*****************************************************
cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2);
:输出一个右对齐的小数点后两位的浮点数。
setiosflags(ios::fixed):用定点方式表示实数
setiosflags(iso::right):在指定区域内右对齐输出
setprecision(n):控制输出流显示浮点数的数字个数setiosflags(ios::skipws):忽略前导空白
setiosflags(ios::uppercase):16进制数大写输出
setiosflags(ios::lowercase):16进制数小写输出
setiosflags(ios::showpoint):强制显示小数点
*****************************************************/
#include<iostream>
#include<iomanip>//引入setprecision的头文件
#include<math.h>//引入pow函数的头文件
using namespace std;int main()
{double m,n;//声明初始小球高度m和弹跳次数ndouble h,s=0.0;//声明小球第n次弹跳高度h和总路程scin>>m>>n;h=m/pow(2.0,n);//每次弹跳高度减半m*0.5^nfor(int i=0;i<n-1;i++){s+=(pow(1.0/2.0,i)*m);//第一次只有下落高度没有上升高度,计算除第一次弹跳路程之和}cout << setiosflags(ios::fixed) << setprecision(2); //保留两位小数cout << h <<" "<< s+m;//加上第一次下落高度并保留两位小数输出//cout<<fixed<<setprecision(2)<<h<<" "<<s+m;//加上第一次下落高度并保留两位小数输出return 0;
}

1020: [编程入门] 猴子吃桃的问题

题目:猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。

代码如下(C):

# include <stdio.h>int main()
{int sum=1,N;scanf("%d",&N);while(--N)sum=(sum+1)*2;printf("%d",sum);return 0;
}

代码如下(C++):

#include<iostream>
using namespace std ;int main()
{int n ; cin>>n ;int sum= 1 ;//桃子总和 for(int i = 1;i <= n - 1;i++)//ps:是循环n-1次 {sum += 1 ;//多吃的桃子 sum *= 2 ;//加一倍 }cout << sum << endl ;return 0 ;
}

1022: [编程入门]筛选N以内的素数

题目:用简单素数筛选法求N以内的素数。

代码如下(C):

#include<stdio.h>
int main()
{int num;               scanf("%d", &num);for(int i=2; i <= num; i++)     //因为 1 不是素数,所以 i 要从 2 开始{int count=0;                // a 必须在for循环中重新赋值,否则会出错for(int j=2; j < i; j++)    //第二个循环判断 i 能否能被其它数整除{if(i%j == 0)            //如果 i 能被其它数整除,a 就自增count++;    }if(count==0)            //判断 a=0 如果这个数除了本身和 1 没有数能整除它就输出printf("%d\n",i);   //输出这边注意要换行}return 0;
}

代码如下(C++):欧拉筛

#include<bits/stdc++.h>
using namespace std;
int p[50000];
int ans[50000];
int t=0;
void getans(int n)
{memset(p,0,sizeof(p)); for(int i=2;i<=n;i++){if(!p[i]) ans[t++]=i;//将素数存入ans中 for(int j=0;j<t&&i*ans[j]<=n;j++){p[i*ans[j]]=1;//关键循环,把所有素数的n倍都标记为非素数,这就是筛法 if(i%ans[j]==0) break;//欧拉筛法关键步骤,详情搜索欧拉函数 }}
}
int main()
{int n;cin>>n;getans(n);for(int i=0;i<t;i++) cout<<ans[i]<<endl;
}

1024: [编程入门]矩阵对角线求和

题目:求一个3×3矩阵对角线元素之和。

代码如下(C):

#include<stdio.h>
int main()
{int sum1=0, sum2=0, a[3][3];for(int x=0; x<3; x++){for(int y=0; y<3; y++) {scanf("%d", &a[x][y]);//怎么敢放在这?if(x == y)sum1 += a[x][y];if(x+y == 2)sum2 += a[x][y];}}printf("%d %d", sum1, sum2);return 0;
}

代码如下(C++):

#include<iostream>
using namespace std;
int main() 
{int a[9] = { 0 };for (int i = 0; i < 9; i++) cin >> a[i];cout << a[0] + a[4] + a[8] << " " << a[2] + a[4] + a[6] << endl;
}

1025: [编程入门]数组插入处理

题目:已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。

代码如下(C):

#include <stdio.h>int main()
{int a[10];int i=0;int t;for(i=0;i<9;i++){scanf("%d",&a[i]);}a[9]=0;int x;scanf("%d",&x);for (i=0;i<10;i++){if(x>=a[i] && x<=a[i+1])//缺点:插入的数在其中间{t=i+1;break;}}
//  printf("%d\n",t);for (i=9;i>t;i--){a[i]=a[i-1];}a[t]=x;for (i=0;i<10;i++){printf("%d\n",a[i]);}return 0;
}

代码如下(C++):

/***********************************************************************lower_bound:从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回endupper_bound:从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end
***********************************************************************/#include<bits/stdc++.h>
using namespace std;int main(void)
{vector<int> array;     //array是一个二维的int型的vector(实际上相当于一个二维数组)int t, num;for(int i = 0; i < 9; i++){cin >> t;array.push_back(t);//将一个新的元素加到vector的最后面,未排序}  cin >> num;            //回车后输入auto pos = upper_bound(array.begin(), array.end(), num);array.insert(pos, num);for(int i = 0; i < 10; i++)cout << array[i] << " ";cout << endl;return 0;
}

1026: [编程入门]数字逆序输出

题目:输入10个数字,然后逆序输出。

代码如下(C):

#include<stdio.h>
int main()
{int a[10],i,j;for(i=0;i<10;i++)        //注意这边是从i=0开始,到i<10scanf("%d",&a[i]);for(j=9;j>=0;j--)        //数组逆序输出,我们可以从j=9开始,一直做到j<0,就结束循环printf("%d ",a[j]);  //注意这边输出要空格隔开return 0;
}

代码如下(C++):入栈 出栈

#include<iostream>
using namespace std;
int main()
{int j[11],top=1;//如果是大神可以用10个数组,但初学者还是用11个好了,这样可以一一对应。while(top!=11){cin>>j[top];top++;//输入各个数据并入栈,并且将输入的号码+1}top-=1;//让top=10,否则之后的输出会出错while(top!=0){cout<<j[top]<<" ";top--;//各个数据出栈,依次是号码为10,9,8,7,6......}return 0;//最后结束
}

1028: [编程入门]自定义函数求一元二次方程

题目:求方程 的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。

代码如下(C):

#include<stdio.h>
#include<math.h>double over(double a,double b,double c);
double below(double a,double b,double c);int main()
{double a,b,c;scanf("%lf%lf%lf", &a, &b, &c);double del = b*b-4*a*c;if(del>=0)over(a,b,c);else below(a,b,c);return 0;
}double over(double a,double b,double c)
{double del=sqrt(b*b-4*a*c);printf("x1=%.3lf x2=%.3lf",(-b+del)/(2*a),(-b-del)/(2*a));//大于等于0都可以调用这个函数return 0;
}double below(double a,double b,double c)
{double del=sqrt((4*a*c-b*b)/(4*a*a));printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi",-b/(2*a),del,-b/(2*a),del);return 0;
}

代码如下(C++):

#include"iostream" 
#include"cmath"   //调用sqrt()开平方函数
#include"cstdio"  //调用printf()控制格式化输出
using namespace std;float x1,x2,a,b,c,z;void func1(){  //大于零 x1=( -b+sqrt(z) )/( 2*a );x2=( -b-sqrt(z) )/( 2*a );
}void func2(){  //等于零 x1=x2=( -b )/( 2*a );
}void func3(){  //小于零 z=sqrt(-z);printf("x1 = %.3f+%.3fi\nx2 = %.3f-%.3fi\n", -b/(2*a), z/(2*a), -b/(2*a), z/(2*a));
}int main()
{cin >> a >> b >> c;z = b*b-4*a*c;if(z>0)func1();else if(z=0)func2(); else{func3();return 0; }               printf("x1 = %.3f x2 = %.3f\n", x1, x2);return 0;
}

1030: [编程入门]二维数组的转置

题目:写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。

代码如下(C):

#include<stdio.h>int main()
{int a[3][3],i,j;for(i=0; i<3; i++){for(j=0; j<3; j++){scanf("%d",&a[i][j]);}}for(i=0; i<3; i++){for(j=0; j<3; j++){printf("%d ",a[j][i]);}printf("\n");}return 0;
}

代码如下(C++):

#include<iostream>
using namespace std;int transform(int a[3][3]);//声明函数int main()
{int a[3][3];for(int i=0; i<3; i++){for(int j=0; j<3; j++)cin>>a[i][j];}transform(a);return 0;
}int transform(int a[3][3])//自定义数组转置的函数
{for(int i=0; i<3; i++){for(int j=0; j<3; j++)cout<<a[j][i]<<" ";cout<<endl;}return 0;
}

这篇关于蓝桥杯练习题笔记--1016~1030的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/672686

相关文章

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

dp算法练习题【8】

不同二叉搜索树 96. 不同的二叉搜索树 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n = 3输出:5 示例 2: 输入:n = 1输出:1 class Solution {public int numTrees(int n) {int[] dp = new int

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个