2014年第五届蓝桥杯C/C++组真题补充训练(一,未完待续,2017.3.6)

编程入门 行业动态 更新时间:2024-10-05 17:17:33

2014年<a href=https://www.elefans.com/category/jswz/34/1761205.html style=第五届蓝桥杯C/C++组真题补充训练(一,未完待续,2017.3.6)"/>

2014年第五届蓝桥杯C/C++组真题补充训练(一,未完待续,2017.3.6)

1. (C组T1 2')武功秘籍

    小明到X山洞探险,捡到一本有破损的武功秘籍(2000多页!当然是伪造的)。他注意到:书的第10页和第11页在同一张纸上,但第11页和第12页不在同一张纸上。

    小明只想练习该书的第81页到第92页的武功,又不想带着整本书。请问他至少要撕下多少张纸带走?

    这是个整数,请通过浏览器提交该数字,不要填写任何多余的内容。

【分析】与正常书本的标页码方式不同,这本武功秘籍的标页码方式是 1 23 45 67 89 1011 1213……(两数字挨着说明这两个页码在书的同一页),可以笔算模拟求解,也可编程。

源代码:

#include <stdio.h>
int main()
{int start,end;                            //起始页码与终止页码 int i,count;                              //count记录所需纸张数 while(scanf("%d %d",&start,&end)!=EOF){count=1;                          //count赋初值1,表示起始页码所在页为第1页for(i=start+1;i<=end;i++)         //遇到偶数页码,纸张数+1{if(i%2==0)count++;}printf("%d\n",count);}return 0;
}
程序截图:


【答案】7

2. (C组T2 4')等额本金


    小明从银行贷款3万元。约定分24个月,以等额本金方式还款。


    这种还款方式就是把贷款额度等分到24个月。每个月除了要还固定的本金外,还要还贷款余额在一个月中产生的利息。


    假设月利率是:0.005,即:千分之五。那么,


    第一个月,小明要还本金 1250, 还要还利息:30000 * 0.005,总计 1400.00
    第二个月,本金仍然要还 1250, 但利息为:(30000-1250) * 0.005 总计 1393.75


    请问:小明在第15个月,应该还款多少(本金和利息的总和)?


    请把答案金额四舍五入后,保留两位小数。注意:32.5,一定要写为:32.50


    通过浏览器提交答案,这是一个含有小数点和两位小数的浮点数字。不要写多余内容(例如:多写了“元”或添加说明文字)

【分析】推出公式直接求解

源代码:

#include <stdio.h>
int main()
{int i,n;                 //n-第n个月 double money=1250,sum;while(scanf("%d",&n)!=EOF){sum=money+(30000-(n-1)*money)*0.005;printf("%.2lf\n",sum);}return 0;
}
程序截图:


【答案】1312.50

3. (C组T3 6')猜字母


    把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。


    接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。


    得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。


    答案是一个小写字母,请通过浏览器提交答案。不要填写任何多余的内容。

【分析】串操作

源代码:

#include <stdio.h>
#include <string.h>
#define maxlen 2015
int main()
{int i;int j=0,k,time=0;           //time记录拼接次数 char str[maxlen];while(time<106)             //j记录"a~s"串拼接106次后的字符串的长度及其后续变化过程 {for(i=0;i<19;i++)str[j++]='a'+i;time++;}str[j]='\0';//printf("%d\n",j);         //(测试用)输出拼接106次后的串 //printf("%s\n",str);while(j!=1)                 //串长不为1时,取串中所有偶数位置的字母 {k=0;for(i=0;i<j;i++){if(i%2!=0)str[k++]=str[i];}str[k]='\0';j=k;                    //把新的串长k赋值给j,继续循环,直到串长为1时结束 //printf("%d\n",j);     //(测试用)输出每一步删除操作后的串 //printf("%s\n",str);} printf("%s\n",str);         //输出最后剩下的一个字母 return 0;
}
程序截图:




【答案】q

另:参考自csdn,补充一种解

更多推荐

2014年第五届蓝桥杯C/C++组真题补充训练(一,未完待续,2017.3.6)

本文发布于:2024-03-12 20:43:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1732379.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:第五届   真题   未完   蓝桥杯

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!