青少年软件编程(C语言)等级考试试卷(2级)-2021年6月-含参考答案和解析.docx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 青少年 软件 编程 语言 等级 考试 试卷 2021 参考答案 解析
- 资源描述:
-
青少年软件编程(C语言)等级考试试卷(二级)2021年6月 分数:100.00 题数:5—、编程题 (共5题,共100分) 1. 数字放大给定一个整数序列以及放大倍数X,将序列中每个整数放大X倍后输出。 时间限制:1000内存限制:65536 输入包含三行:第一行为N,表示整数序列的长度(NW100);第二行为N个整数(不超过整 型范围),整数之间以一个空格分开;第三行包含一个整数(不超过整型范围),为指定的 整数X。 输出N个整数,为原序列放大之后的序列,整数之间以一个空格分开。 样例输入3 1572 样例输出2 10 14 提示注意答案的数据范围 /*少年软件编程(C语言)等级考试试卷(二级)2021年6月-数字放大*/ #include<stdio.h> int main(){ int n, bei_shu; 〃数列的长度n和倍数bei_shu int arr[100]; 〃保存数列的数组 int i; scanf("%d; &n);〃输入数列的长度 〃输入数列数据 for(i=0; i<n; i ++){scanf("%d",&arr[i]); } scanf(”%d”, &bei_shu); 〃输入倍数 printfC'Xn"); for(i=0; ivn; i ++){printf("%ld ",arr[i]*bei_shu); }整数排序 给定10个整数的序列,要求对其重新排序。排序要求: 1. 奇数在前,偶数在后;奇数按从大到小排序; 2. 偶数按输入顺序逆序排序。 时间限制:1000内存限制:65536 输入输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等 于 100o 输出按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。 样例输入 4 7 3 13 11 12 0 47 34 98样例输出 47 13 11 7 3 98 34 0 12 4 【解析】 本题的难度较大,需要分而治之。 首先需要找到所有奇数进行排序,由于要从大到小排序,在不改变原数组的情况下,需 要两个变量,一个为max记录已排序的最小奇数,每次循环找到的奇数大于等于max时, 就认为是已排序过的奇数,不需要再处理。另一个变量t记录在一次寻找过程中找到的最大 奇数,也就是剩余未排序的数列中最大的奇数。 偶数的处理就比较容易,直接从尾到头扫描数列,找到偶数后保存即可。 /*少年软件编程(C语言)等级考试试卷(二级)2021年6月一整数排序大/ #include<stdio.h>int main(){ //nums -输入的原始数组,result -排序后的结果数组 int nums[10], result[10]; int i;〃循环变量 int flag = 1; 〃标识是否存在有奇数未排序。 int idx = 0;〃用于保存现在已排序的元素数量 /大用于保存已找到的最小奇数, 题目要求输入的数小于等于100, 所以一开始用101代表最小的奇数。V int max = 101; intt = -1;〃在寻找奇数里临时保存找到的未排序过的最大奇数 〃输入数据,10个整数 for(i=0;i<10;i ++){scanf(”%cT,&nums[i]); 〃逐个寻找最大的奇数,放入结果数组中。 while(flag)(t=-l; for(i=0;i<10;i ++){ if(nums[i]%2!二0){ 〃奇数〃比t大的数并且小于max的数,就是这次要找到的最大奇数。 if(nums[i]>t && nums[i]<max)( t=nums[i];} }) if(t! = -l)( 〃如果t二二-1,那么就是没有未排序的奇数了 result[idx]=t; //保存找到的最大奇数 idx++; 〃下次要保存奇数的位置 max=t; 〃记录已找到的最大奇数) else { flag=0; 〃没有未排序的奇数了 } }〃从后往前找,找到偶数后直接放入结果数组 for(i二9;i>二0;i--){ 〃数组的下标是0开始,所以循环从9开始 if(nums[i]%2==0){ 〃偶数 result[idx]=nums[i]; 〃保存偶数idx+ + ; }for(i=0;i<10;i ++){ printf("%d ",result[i]); }) 2. 内部元素之和输入一个整数矩阵,计算位于矩阵内部的元素之和。所谓矩阵内部的元素,不在第一行和最 后一行的元素以及第一列和最后一列的元素。 时间限制:1000内存限制:65536 输入第一行分别为矩阵的行数m和列数n (m < 100, n < 100),两者之间以一个空格分开。接 下来输入的m行数据中,每行包含n个整数(每个数大于等于0,小于1000),整数之间以 —个空格分开。 输出输出对应矩阵的内部元素和 样例输入 331 3712 0 1 样例输出7 【解析】这道题主要检查二维数组的赋值和遍历,注意行、列在求和时去头去尾就可以了。 /夫少年软件编程(C语言)等级考试试卷(二级)2021年6月-内部元素之和大/ #include<stdio.h>int main()( int m, n; //行数,列数 int ij; int arr[100][100]; int sum=0;//保存求和结果 scanf("%d 〃用双重循环一行行为矩阵赋值 for(i=0;i<m;i++){for(j=0;j<n;j++)( scanf(n%d",&arr[i][j]);) } 〃循环计算 〃要去头去尾,所以第1行和最后一行不参与求和 〃i=1排除第1行,i<(m-l)排除最后1行。 //j二1排除第1列,j<(n-l)排除最后1列。 for(pl;j<(n-l);j ++){sum+=arr[i]|j]; } printf("%d",sum);} 3. 统一文件名小A在命名文件的时候经常不注意大小写,格式比较混乱。现要求你写一个程序将目录下 的文件统一规范的格式,即文件名的第一个字符如果是字母要大写,其他字母小写。如将 Test、test 整理成 Test。 时间限制:1000内存限制:65536 输入第一行一个数字n,表示有n个文件名要统一,n不超过100。接下来n行,每行一个单词, 长度不超过20,表示文件的名字。文件名由字母、数字和一组成。 输出n行,每行一个单词,对应统一后的文件名。 样例输入4 Testdata 2-TESTproblem-6 样例输出Test Data2-test Problem-6 【解析】本题考查字符串数组的赋值和遍历。解题的关键点是判断是否已存在大写字母。 /*少年软件编程(C语言)等级考试试卷(二级)2021年6月-统一文件名大/ #include<stdio.h>int main(){ intn;〃有多少文件名要统一 chararr[100][20]; int ij; scanf(”%d”,&n); int flag=0;//本轮是否已转换过了 〃循环输入文件名 for(i=0;i<n;i++)( scanf("%s”,&arr[i]); for(i=0;i<n;i++){flag=0;//每轮的转换状态 for(j = 0;jv20;j++){ if(arr[i][j]>=65 && arr[i][j]<=90)(//大写字母 if(flag){ 〃转换过,则转换 arr[i]U]=arr[i]U]+32;}else{ flag=l;//未转换过,保留1个大写字母 } } if(arr[i][j]>=97 && arr[i][j]<=,z,){ 〃小写字母 if(!flag){arr[i][j]=arr[i]D]-32; flag 二 1; }} )for(i=0;i<n;i++)( printf("%s\n",arr[i]); )} 4. 计算好数若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数 的这类二进制数称为好数。 例如: (13)10 = (1101)2,其中1的个数为3,。的个数为1,则此数是好数;(10)10 = (1010)2,其中1的个数为2, 0的个数也为2,则此数不是好数; (24)10 = (11000)2,其中1的个数为2,。的个数为3,则此数不是好数;对于给定的N,写程序求出1-N之中(包括1与N)中的好数个数。 时间限制:1000内存限制:65536 输入—个整数,题目中的N(N W 1000) 输出—个整数,表示1~N之中(包括1与N)中的好数个数 样例输入10 样例输出5 【解析】本题主要考查进制转换。 十进制转成二进制的过程是:逐次模2得到对应二进制位的值,直到原数为0,把各二进制 位反转就得到转换结果。 例如:10逐位模2的过程是: 10%2 = 0, 10 / 2 = 5 5%2 = 1, 5 /2 =2; 2 % 2=0, 2/2=1 1%2=1, 1/2=0 得到的结果是0101,反转后变成1010,即对应的2进制数。 /*少年软件编程(C语言)等级考试试卷(二级)2021年6月-计算好数*/ #include<stdio.h>int main()( int n; int count二0; //保存每个数转成二进制后0的个数 int good_count=0;//保存好数的个数 int i,t; int temp; scanf(”%cT,&n); for(i = l;i<=n;i ++){〃分解成二进制数,逐次整除2,直到数字等于0 temp=i; while(temp)( 〃非 0 为真 t=temp%2; temp/=2; if(t=O){ 〃当前位是0count++; }) if(count%2==0)( //0的数量是偶数 good_count+ + ; printf(”%cr,good_coiint);展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




青少年软件编程(C语言)等级考试试卷(2级)-2021年6月-含参考答案和解析.docx



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4511951.html