文章推荐

  • 精选java等全套学习资源
  • 精选java电子图书资源
  • 精选大数据学习资源
  • java项目练习精选

蓝桥杯练习系统习题-算法训练5

题目搜索方式:Ctrl+F—-> 输入题目名称—>定位到解答.

入门训练(详见 算法-蓝桥杯习题(1-1))

基础练习(详见 算法-蓝桥杯习题(2-1))

基础练习(详见 算法-蓝桥杯习题(2-2))

算法训练(详见 算法-蓝桥杯习题(3-1))

算法训练(详见 算法-蓝桥杯习题(3-2))

算法训练(详见 算法-蓝桥杯习题(3-3))

算法训练(详见 算法-蓝桥杯习题(3-4))

算法训练(详见 算法-蓝桥杯习题(3-5))

算法训练(详见 算法-蓝桥杯习题(3-6))

算法提高(详见 算法-蓝桥杯习题(4-1))

算法提高(详见 算法-蓝桥杯习题(4-2))

历届试题(详见 算法-蓝桥杯习题(5-1))

历届试题(详见 算法-蓝桥杯习题(5-2))

算法训练 输出米字形

根据输入的正整数n (1  米字形由一个(2n-1)*(2n-1)的矩阵组成,矩阵包含从大写A开始的n个字母
  例如:n=3时,包含A,B,C;n=4时,包含A,B,C,D。
  矩阵的正中间为n个字母中字典序最大的那个,从这个字母开始,沿着西北、正北、东北、正西、正东、西南、正南、东南八个方向各有一条由大写字母组成的直线。并且直线上的字母按字典序依次减小,直到大写字母A。
  矩阵的其它位置用英文句号.填充。

  样例输入一
  3

  样例输出一
  A.A.A
  .BBB.
  ABCBA
  .BBB.
  A.A.A

  样例输入二
  4

  样例输出二
  A..A..A
  .B.B.B.
  ..CCC..
  ABCDCBA
  ..CCC..
  .B.B.B.
  A..A..A

 #include <stdio.h>  int main()  {  int n,i,j,k,t;  scanf("%d",&n);  char a[2*n-1][2*n-1];  for(i=0;i<2*n-1;i++)  for(j=0;j<2*n-1;j++)  a[i][j]=0;  k=n;  for(i=0;i<n-1;i++) //行数   {  k--;  //k为字符间隔   t=i;  for(j=1;j<=3;j++)  {  a[i][t]='A'+i;  t+=k;  }  }  for(i=0;i<n;i++)    //中间一行   {  a[n-1][i]='A'+i;  a[n-1][2*n-2-i]='A'+i;  }  for(i=0;i<=n-2;i++)   //填补句号   for(j=0;j<2*n-1;j++)  {  if(a[i][j]==0)  a[i][j]='.';  }  for(i=0;i<=n-2;i++)    //翻转   for(j=0;j<2*n-1;j++)  a[2*n-2-i][j]=a[i][j];  for(i=0;i<2*n-1;i++)  {  for(j=0;j<2*n-1;j++)  printf("%c",a[i][j]);  printf("\n");   }  return 0;  }

算法训练 阶乘

问题描述
  一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积。阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中;而35!就更大了,它已经无法存放在一个浮点型变量中。因此,当n比较大时,去计算n!是非常困难的。幸运的是,在本题中,我们的任务不是去计算n!,而是去计算n!最右边的那个非0的数字是多少。例如,5! = 12345 = 120,因此5!最右边的那个非0的数字是2。再如:7! = 5040,因此7!最右边的那个非0的数字是4。请编写一个程序,输入一个整数n(n<=100),然后输出n! 最右边的那个非0的数字是多少。
  输入格式:输入只有一个整数n。
  输出格式:输出只有一个整数,即n! 最右边的那个非0的数字。
  输入输出样例
样例输入
6
样例输出
2

 #include<stdio.h>  int main(void)  {  int n;  int i;  int sum=1;  scanf("%d",&n);  for(i=n;i>=1;i--)  {  sum = sum*i;  while(sum%10==0)  sum=sum/10;  if(sum/100>0)  sum=sum%100;  }  printf("%d",sum%10);  return 0;  }

算法训练 进制转换

问题描述
  编写一个程序,输入一个二进制的字符串(长度不超过32),然后计算出相应的十进制整数,并把它打印出来。
  输入格式:输入为一个字符串,每个字符都是’0’或’1’,字符串的长度不超过32。
  输出格式:输出一个整数。
  输入输出样例
样例输入
1101
样例输出
13

 #include <stdio.h>  #include <math.h>  #include <string.h>  #define MaxSize 32  void print2Return10(char str[])  {  long long int num=0;  int lenth=strlen(str),i;  for(i=0;i<lenth;i++)  {  if(str[i]!='0')  {  num+=pow(2,lenth-i-1);  }  }  printf("%lld\n",num);  return ;  }  main()  {  char str[MaxSize];  gets(str);  print2Return10(str);  return 0;  }

算法训练 字串统计

问题描述
  给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的。
输入格式
  第一行一个数字L。
  第二行是字符串S。
  L大于0,且不超过S的长度。
输出格式
  一行,题目要求的字符串。

  输入样例1:
  4
  bbaabbaaaaa

  输出样例1:
  bbaa

  输入样例2:
  2
  bbaabbaaaaa

  输出样例2:
  aa
数据规模和约定
  n<=60
  S中所有字符都是小写英文字母。

  提示
  枚举所有可能的子串,统计出现次数,找出符合条件的那个

 #include<stdio.h>  #include<string.h>  char b[60][60];  int c[60];  int main()  {  int l,i1,max=1,now=0,maxn=1,i2,weizhi=0,i3,i4,weizhi1,changdu1=-1;  char a[10000];  scanf("%d",&l);  getchar();  gets(a);  int n=strlen(a);  for(i1=n;i1>=l;i1--)//长度   {  weizhi=0;  for(i3=0;i3<n-i1;i3++)  c[i3]=0;  for(i2=0;i2<n;i2++)//开始位置   {  if(i2+i1>n)   break;  int ok=1;        for(i3=0;i3<weizhi;i3++)//b的位置   {     int ko=1;  for(i4=0;i4<i1;i4++)      {    if(b[i3][i4]!=a[i2+i4])  ko=0;  }  if(ko)  {  ok=0;  c[i3]++;  if(c[i3]>max)  {max=c[i3];  changdu1=i1;  weizhi1=i2;  }  break;  }  }  if(ok)  {  for(i4=0;i4<i1;i4++)  {  b[weizhi][i4]=a[i2+i4];  }  c[weizhi]=1;  weizhi++;  }  }  }  for(i1=weizhi1;i1<weizhi1+changdu1;i1++)  printf("%c",a[i1]);  printf("\n");  return 0;  }

算法训练 字符删除

问题描述
  编写一个程序,先输入一个字符串str(长度不超过20),再输入单独的一个字符ch,然后程序会把字符串str当中出现的所有的ch字符都删掉,从而得到一个新的字符串str2,然后把这个字符串打印出来。
  输入格式:输入有两行,第一行是一个字符串(内部没有空格),第二行是一个字符。
  输出格式:经过处理以后的字符串。
  输入输出样例
样例输入
123-45-678

  • 样例输出
    12345678
#include <stdio.h>  #include <string.h>  #define MaxSize 20+5  void printResult(char str[],char ch)  {  int i;  for(i=0;i<strlen(str);i++)  {  if(str[i]!=ch)  {  printf("%c",str[i]);  }  }  printf("\n");  }  main()  {  char ch,str[MaxSize];  //if(scanf("%s %c",str,&ch)!=EOF)  if(gets(str)!=NULL)  {  scanf("%c",&ch);  printResult(str,ch);  }  return 0;  }

算法训练 反置数

问题描述
  一个整数的“反置数”指的是把该整数的每一位数字的顺序颠倒过来所得到的另一个整数。如果一个整数的末尾是以0结尾,那么在它的反置数当中,这些0就被省略掉了。比如说,1245的反置数是5421,而1200的反置数是21。请编写一个程序,输入两个整数,然后计算这两个整数的反置数之和sum,然后再把sum的反置数打印出来。要求:由于在本题中需要多次去计算一个整数的反置数,因此必须把这部分代码抽象为一个函数的形式。
  输入格式:输入只有一行,包括两个整数,中间用空格隔开。
  输出格式:输出只有一行,即相应的结果。
  输入输出样例
样例输入
435 754
样例输出
199

 #include <stdio.h>  #include <math.h>  int getTheNumber(int num)  {  int number=1,i,j=1,flag=0;  if(!num)  return 0;  while(num)  {  i=num%10;  if(i||flag)  {  if(!flag)  {  number=i;  }  else  {  number=number*10+i;  }  flag=1;  }  num/=10;  }  return number;  }  main()  {  int n,m;  scanf("%d%d",&n,&m);  printf("%d\n",getTheNumber(getTheNumber(n)+getTheNumber(m)));  return 0;  }

算法训练 新生舞会

问题描述
  新生舞会开始了。n名新生每人有三个属性:姓名、学号、性别。其中,姓名用长度不超过20的仅由大小写字母构成的字符串表示,学号用长度不超过10的仅由数字构成的字符串表示,性别用一个大写字符‘F’或‘M’表示。任意两人的姓名、学号均互不相同。换言之,每个人可被其姓名或学号唯一确定。给出m对两人的信息(姓名或学号),判断他们是否能共舞。两人能共舞的充要条件为两人性别相异。
输入格式
  第一行一个整数n(2<=n<=1000),表示学生人数。接下来的n行每行依次包含一名新生的姓名、学号、性别,分别用一个空格隔开。
  之后的一行是一个整数m(1<=m<=1000),表示询问的数目。接着的m行每行包含两个信息(姓名或学号),保证两个信息不属于同一人,中间用一个空格隔开。
输出格式
  对于每个询问输出一行,如果两人可以共舞,输出一个大写字母‘Y’,否则输出一个大写字母‘N’。
样例输入
4
John 10 M
Jack 11 M
Kate 20 F
Jim 21 M
3
John 11
20 Jack
Jim Jack
样例输出
N
Y
N

提示
可以把名字和学号都当成字符串处理。可以按以下流程实现。

 #include<iostream> #include<cstring> using namespace std; struct tstudent { char name[21]; char num[21]; char sex; }; void readdata(tstudent student[], int n) { 输入N个学生的信息 } int findstudent(tstudent student[], int n, char* data) { if (data == NULL) return -1; 判断是否有某个学生的学号或名字等于data,如果有,函数返回该学生在student数组中的序号,否则返回-1 } void solve(tstudent student[], int n, int m) { char x[21], y[21]; for (int i=0; i<m; i++) { 输入两个人的信息X、Y。通过调用findstudent函数判断这两个人能否成为舞伴 } } int main() { int n, m; tstudent student[1010]; cin>>n; readdata(student, n); cin>>m; solve(student, n, m); } #include <stdio.h>  #include <string.h>  #define MaxSize 1000+5  typedef struct  {  char name[21];  char num[21];  char sex;  }tstudent;  void readdata(tstudent student[], int n)  {  int i;  //输入N个学生的信息  for(i=0;i<n;i++)  {  scanf("%s %s %c",student[i].name,student[i].num,&student[i].sex);  }  }  int findstudent(tstudent student[], int n, char* data)  {  int i;  if (data == NULL)   {  return -1;  }  //判断是否有某个学生的学号或名字等于data,如果有,函数返回该学生在student数组中的序号,否则返回-  for(i=0;i<n;i++)  {  if(!strcmp(data,student[i].name)||!strcmp(data,student[i].num))  return i;  }  return -1;  }  void solve(tstudent student[], int n, int m)  {  char x[21], y[21];  int i,a,b;  for (i=0; i<m; i++)   {  //输入两个人的信息X、Y。通过调用findstudent函数判断这两个人能否成为舞伴  scanf("%s %s",x,y);  if((a=findstudent(student,n,x))!=-1&&(b=findstudent(student,n,y))!=-1)  {  if(student[a].sex!=student[b].sex)  printf("Y\n");  else  printf("N\n");  }  else  {  printf("N\n");  }  }  }  int main()  {  int n, m;  tstudent student[MaxSize];  scanf("%d",&n);  readdata(student, n);  scanf("%d",&m);  solve(student, n, m);  return ;  }

算法训练 Hello World!

描述
  本题定义本学期作业题的输出格式,请认真阅读。
  如无特殊说明,开头无空格,间隔符为1个空格,答案最后必须输出换行符("\n")。
输入格式
  无
输出格式
  Hello World!

 #include <stdio.h>  main()  {  printf("Hello World!\n");  return 0;  }

算法训练 数位分离

问题描述
  编写一个程序,输入一个1000 以内的正整数,然后把这个整数的每一位数字都分离出来,并逐一地显示。
  输入格式:输入只有一行,即一个1000以内的正整数。
  输出格式:输出只有一行,即该整数的每一位数字,之间用空格隔开。
  输入输出样例
样例输入
769
样例输出
7 6 9

 #include <stdio.h>  void getResult(int num)  {  //出口   if(num<10)  {  printf("%d ",num);  return ;  }  //递归   getResult(num/10);  printf("%d ",num%10);  }  main()  {  int n;  scanf("%d",&n);  getResult(n);  printf("\n");   return 0;  }

算法训练 薪水计算

问题描述
  编写一个程序,计算员工的周薪。薪水的计算是以小时为单位,如果在一周的时间内,员工工作的时间不超过40 个小时,那么他/她的总收入等于工作时间乘以每小时的薪水。如果员工工作的时间在40 到50 个小时之间,那么对于前40 个小时,仍按常规方法计算;而对于剩余的超额部分,每小时的薪水按1.5 倍计算。如果员工工作的时间超过了50 个小时,那么对于前40 个小时,仍按常规方法计算;对于40~50 个小时之间的部分,每小时的薪水按1.5 倍计算;而对于超出50 个小时的部分,每小时的薪水按2 倍计算。请编写一个程序,输入员工的工作时间和每小时的薪水,然后计算并显示他/她应该得到的周薪。
  输入格式:输入只有一行,包括一个整数和一个实数,分别表示工作时间和每小时薪水。
  输出格式:输出只有一个实数,表示周薪,保留小数点后2位。
  输入输出样例
样例输入
40 50
样例输出
2000.00

 #include <stdio.h>  main()  {  int time;  float money,sum;  scanf("%d%f",&time,&money);  if(time<=40)  {  sum=time*money;  printf("%.2f\n",sum);  }  else  {  time-=40;  if(time<=10)  {  sum=time*money*1.5+40*money;  printf("%.2f\n",sum);  }  else  {  time-=10;  sum=time*money*2+10*money*1.5+40*money;  printf("%.2f\n",sum);  }  }  return 0;  }

算法训练 整除问题

问题描述
  编写一个程序,输入三个正整数min、max和factor,然后对于min到max之间的每一个整数(包括min和max),如果它能被factor整除,就把它打印出来。
  输入格式:输入只有一行,包括三个整数min、max和factor。
  输出格式:输出只有一行,包括若干个整数。
  输入输出样例
样例输入
1 10 3
样例输出
3 6 9

 #include <stdio.h>  void getResult(int min,int max,int factor)  {  int i;  for(i=min;i<=max;i++)  {  if(i%factor==0)  {  printf("%d ",i);  }  }  printf("\n");  return ;  }  main()  {  int min,max,factor;  scanf("%d%d%d",&min,&max,&factor);  getResult(min,max,factor);  return 0;  }

蓝桥杯练习系统习题-算法训练5相关推荐

  1. 蓝桥杯练习系统习题-算法训练6

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法训练6 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

  2. 蓝桥杯练习系统习题-算法训练3

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法训练3 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

  3. 蓝桥杯练习系统习题-算法训练2

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法训练2 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

  4. 蓝桥杯练习系统习题-算法训练1

    蓝桥杯练习系统习题-算法训练1 题目搜索方式:Ctrl+F--> 输入题目名称->定位到解答. 入门训练(详见 算法-蓝桥杯习题(1-1)) 基础练习(详见 算法-蓝桥杯习题(2-1)) ...

  5. 蓝桥杯练习系统习题-算法提高2

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法提高2 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

  6. 蓝桥杯练习系统习题-算法提高1

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法提高1 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

  7. 蓝桥杯练习系统习题解答-入门训练

    点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了 3 个月总结的一线大厂 Java 面试总结,本 ...

  8. 蓝桥杯练习系统习题-历年真题解析2(完整版)

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-历年真题解析2 题目搜索方式:Ctrl+F--> 输入题目名称-&g ...

  9. 蓝桥杯练习系统习题-历年真题解析1(完整版)

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-历年真题解析1 题目搜索方式:Ctrl+F--> 输入题目名称-&g ...

最新文章

  1. Java-ReentrantLock初探
  2. PPT学习资源(总)
  3. 月球计划—ESP8266接入小爱同学控制彩灯
  4. iOS 网络输入流提供请求体(适用于大容量内容)
  5. 【C语言】删除元素(函数,数组的扫描)
  6. 修改本机域名服务器为Google Public DNS或者OpenDNS
  7. 安全行业最全防火墙产品全家福
  8. 上海智能网联汽车规模化示范应用启动 滴滴上线自动驾驶服务
  9. hdb3编码规则波形_(完整word版)AMI与HDB3码波形与功率谱密度实验
  10. python while循环例题鸡兔同笼_使用函数嵌套和循环枚举解决鸡兔同笼问题(解数学题学Python编程)...
  11. 全面解读“资金二清”与“信息二清”
  12. hihocoder1498 Diligent Robots
  13. MySQL之——基本操作汇总
  14. 我是如何走进黑客世界的?
  15. MATLAB中Simulink创建与运行
  16. AsyncTask介绍
  17. 脑裂问题以及如何避免
  18. 七年老安卓的九十月小结
  19. 史上最人性化的U型枕,再也不用担心睡不好了!
  20. 冲出好咖啡前,关键是先了解萃取

热门文章

  1. logwrapper的作用
  2. AB1601GPIO不支持较高频率的脉冲中断
  3. python 异步编程——asyncio
  4. 计算机游戏88关,天天象棋88关怎么过 闯关模式第88关图文攻略
  5. Boost Asio总结(16)例子
  6. MySQL的索引及优化方案
  7. 树莓派3b+在tf卡配置wifi连接+ssh
  8. 2020-10-27(汇编收获)
  9. 【网络安全】xhCMS代码审计思路
  10. 1、CSS 定位 (Positioning)