蓝桥杯练习系统习题-算法训练5
文章推荐
- 精选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相关推荐
- 蓝桥杯练习系统习题-算法训练6
文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法训练6 题目搜索方式:Ctrl+F--> 输入题目名称-> ...
- 蓝桥杯练习系统习题-算法训练3
文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法训练3 题目搜索方式:Ctrl+F--> 输入题目名称-> ...
- 蓝桥杯练习系统习题-算法训练2
文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法训练2 题目搜索方式:Ctrl+F--> 输入题目名称-> ...
- 蓝桥杯练习系统习题-算法训练1
蓝桥杯练习系统习题-算法训练1 题目搜索方式:Ctrl+F--> 输入题目名称->定位到解答. 入门训练(详见 算法-蓝桥杯习题(1-1)) 基础练习(详见 算法-蓝桥杯习题(2-1)) ...
- 蓝桥杯练习系统习题-算法提高2
文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法提高2 题目搜索方式:Ctrl+F--> 输入题目名称-> ...
- 蓝桥杯练习系统习题-算法提高1
文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法提高1 题目搜索方式:Ctrl+F--> 输入题目名称-> ...
- 蓝桥杯练习系统习题解答-入门训练
点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了 3 个月总结的一线大厂 Java 面试总结,本 ...
- 蓝桥杯练习系统习题-历年真题解析2(完整版)
文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-历年真题解析2 题目搜索方式:Ctrl+F--> 输入题目名称-&g ...
- 蓝桥杯练习系统习题-历年真题解析1(完整版)
文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-历年真题解析1 题目搜索方式:Ctrl+F--> 输入题目名称-&g ...
最新文章
- Java-ReentrantLock初探
- PPT学习资源(总)
- 月球计划—ESP8266接入小爱同学控制彩灯
- iOS 网络输入流提供请求体(适用于大容量内容)
- 【C语言】删除元素(函数,数组的扫描)
- 修改本机域名服务器为Google Public DNS或者OpenDNS
- 安全行业最全防火墙产品全家福
- 上海智能网联汽车规模化示范应用启动 滴滴上线自动驾驶服务
- hdb3编码规则波形_(完整word版)AMI与HDB3码波形与功率谱密度实验
- python while循环例题鸡兔同笼_使用函数嵌套和循环枚举解决鸡兔同笼问题(解数学题学Python编程)...
- 全面解读“资金二清”与“信息二清”
- hihocoder1498 Diligent Robots
- MySQL之——基本操作汇总
- 我是如何走进黑客世界的?
- MATLAB中Simulink创建与运行
- AsyncTask介绍
- 脑裂问题以及如何避免
- 七年老安卓的九十月小结
- 史上最人性化的U型枕,再也不用担心睡不好了!
- 冲出好咖啡前,关键是先了解萃取