浙江省计算机二级c语言上机考试真题版.docx
- 文档编号:27068567
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:67
- 大小:29.85KB
浙江省计算机二级c语言上机考试真题版.docx
《浙江省计算机二级c语言上机考试真题版.docx》由会员分享,可在线阅读,更多相关《浙江省计算机二级c语言上机考试真题版.docx(67页珍藏版)》请在冰豆网上搜索。
浙江省计算机二级c语言上机考试真题版
浙江省二级c语言上机考试真题
介绍:
浙江省二级c语言考试分为笔试和上机考试两块.取笔试和上机中分数较低的那个作为计算机二级的最终成绩,最后证书上按档次划分等级,其中60-79及格,80-89良好,90-100优秀。
笔试部分分两块,一块是24道选择题(六道程序题,每题中间有四个空,每空有四个选项供选择),浙江省的计算机笔试选择题不考概念性内容,所以大家不用费心,另一块是程序编写,手写两个完整程序,一道循环数组(结合),一道是函数或指针。
上机部分分两块,一块是计算机基本操作,即从access,ppt,excel,outlook,word,网页制作,文件夹操作中随机选择四道,另一块是编程,编程题可以打开编程软件c-free来做,编程中共五道题,一道改错,两道填空,最后两道是编写程序。
(一)程序改错:
1,10个数求最大最小值
该程序中“/*****N*****/”的下一行中有错误,
请改正(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
运行时输入10个数,然后分别输出其中的最大值、最小值。
#include
voidmain()
{floatx,max,min;inti;
/********1*******/
for(i=0;i<=10;i++){
scanf("%f",&x);
/*******2********/
if(i=1){max=x;min=x;}
if(x>max)max=x;
if(x
}
printf("%f,%f\n",max,min);
}
∙#include
∙intmain()
∙{floatx,max,min;inti;
∙/********1*******/
∙for(i=1;i<=10;i++){
∙scanf("%f",&x);
∙/*******2********/
∙if(i==1){max=x;min=x;}
∙if(x>max)max=x;
∙if(x ∙} ∙printf("%f,%f\n",max,min); ∙} 2,字符串反序连接 下面程序中“*****N*****”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 输入一个字符串,将组成字符串的所有字符先按顺序存放到字符串t中,再将字符串中的字符按逆序连接到字符串t的后面。 例如: 输入"ABCD",则字符串t为"ABCDDCBA"。 #include #include voidfun(char*s,char*t) { inti,sl; sl=strlen(s); for(i=0;i t[i]=s[i]; for(i=0;i /********1********/ t[sl+i]=s[sl-i]; /********2********/ t[sl]="\0"; } voidmain() { chars[100],t[100]; scanf("%s",s); fun(s,t); printf("%s",t); } ∙#include ∙#include ∙voidfun(char*s,char*t) ∙{ ∙inti,sl; ∙sl=strlen(s); ∙for(i=0;i ∙t[i]=s[i]; ∙for(i=0;i ∙t[sl+i]=s[sl-1-i]; ∙/********2********/ ∙t[2*sl]='\0'; ∙} ∙voidmain() ∙{ ∙chars[100],t[100]; ∙scanf("%s",s); ∙fun(s,t); ∙printf("%s",t); ∙} 3,求n的所有质数因子 下面程序中“/*****N*****/”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 运行时输入n,输出n的所有质数因子(如n=13860,则输出2、2、3、3、5、7、11)。 #include voidmain() {intn,i; scanf("%d",&n); /******1******/ i=1; while(n>1) if(n%i==0){ printf("%d\t",i); n/=i; } else /********2*******/ n++; } ∙#include ∙voidmain() ∙{intn,i; ∙scanf("%d",&n); ∙/******1******/ ∙i=2; ∙while(n>1) ∙if(n%i==0){ ∙printf("%8d",i); ∙n/=i; ∙} ∙else ∙/********2*******/ ∙i++; ∙} 4,数字转字符 下面程序中“/*****N*****/”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 用递归法将一个六位整数n转换成字符串,例如输入123456,应输出字符串"123456"。 #include voiditoa(longi,char*s) { if(i==0) return; /******1******/ *s='1'+i%10; itoa(i/10,s-1); } voidmain() { longn; charstr[7]=""; scanf("%ld",&n); /******2******/ itoa(n,str+6); printf("%s",str); } ∙#include ∙voiditoa(longi,char*s) ∙{ ∙if(i==0) ∙return; ∙/******1******/ ∙*s='0'+i%10; ∙itoa(i/10,s-1); ∙} ∙intmain() ∙{ ∙longn; ∙charstr[7]=""; ∙scanf("%ld",&n); ∙/******2******/ ∙itoa(n,str+5); ∙printf("%s",str); ∙} 6,删除非英文字母 下面程序中“*****N*****”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。 例如: 输入"abc123+xyz.5",应输出"abcxyz"。 #include #include voidmain() { charstr[256]; inti,j,k=0,n; gets(str); n=strlen(str); for(i=0;i /********1********/ if(str[i]>='a'&&str[i]<='z') { /********2********/ str[k]=str[i];i++; } str[k]='\0'; printf("%s\n",str); } ∙#include ∙#include ∙voidmain() ∙{charstr[256]; ∙inti,j,k=0,n; ∙gets(str); ∙n=strlen(str); ∙for(i=0;i ∙/********1********/ ∙if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) ∙{ ∙str[k]=str[i];k++; ∙} ∙str[k]='\0'; ∙printf("%s\n",str); ∙} 7,距离坐标原点 下面程序中“/*****N*****/”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 输入n,再输入n个点的平面坐标,然后输出那些距离坐标原点不超过5的点的坐标值。 #include"stdio.h" #include"math.h" #include"stdlib.h" voidmain() { inti,n; /*****1*****/ structaxy{floatx;floaty;}a[n]; scanf("%d",&n); a=(float*)malloc(n*2*sizeof(float)); for(i=0;i /*****2*****/ scanf("%f,%f",a[i].x,a[i].y); for(i=0;i if(sqrt(a[i].x*a[i].x+a[i].y*a[i].y)<=5) printf("%f,%f\n",a[i].x,a[i].y); } #include #include #include voidmain() { inti,n; /*****1*****/ structaxy{floatx,y;}a; scanf("%d",&n); a=(float*)malloc(n*2*sizeof(float)); for(i=0;i /*****2*****/ scanf("%f%f",a[i].x,a[i].y); for(i=0;i if(sqrt(a[i].x*a[i].x+a[i].y*a[i].y)<=5) printf("%f,%f\n",a[i].x,a[i].y); } **试题本身有错误,a=(structaxy*)malloc(n*2*sizeof(float)); 8,多项式值 下面程序中“/*****N*****/”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 输入x和正数eps,计算多项式1-x+x*x/2! -x*x*x/3! +...的和直到末项的绝对值小于eps为止。 #include #include voidmain() {floatx,eps,s=1,t=1,i=1; scanf("%f%f",&x,&eps); do{ /*****1*****/ t=-t*x/++i; s+=t; /*****2*****/ }while(fabs(t) printf("%f\n",s); } ∙#include ∙#include ∙intmain() ∙{floatx,eps,s=1,t=1,i=1; ∙scanf("%f%f",&x,&eps); ∙do{ ∙/*****1*****/ ∙t=-t*x/i++; ∙s+=t; ∙/*****2*****/ ∙}while(fabs(t)>=eps); ∙printf("%f\n",s); ∙} 9,n个3和 下面程序中“/*****N*****/”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 运行时若输入a、n分别为3、6,则输出下列表达式的值: 3+33+333+3333+33333+333333 #include voidmain() {inti,a,n;longt=0; /*********1*******/ ints=0; scanf("%d%d",&a,&n); for(i=1;i<=n;i++){ /*******2******/ t=(i-1)*10+a; s=s+t; } s=s*a; printf("%ld\n",s); } ∙#include ∙intmain() ∙{inti,a,n;longt=0; ∙/*********1*******/ ∙longs=0; ∙scanf("%d%d",&a,&n); ∙for(i=1;i<=n;i++){ ∙/*******2******/ ∙t=t*10+1; ∙s=s+t; ∙} ∙s=s*a; ∙printf("%ld\n",s); ∙} 10,10升排序 下面程序中“/*****N*****/”的下一行中有错误,请改正(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 用选择法对10个整数按升序排序。 #include"stdio.h" #defineN10 voidmain() { inti,j,min,temp; inta[N]={5,4,3,2,1,9,8,7,6,0}; printf("\nThearrayis: \n");/*输出数组元素*/ for(i=0;i printf("%5d",a[i]); for(i=0;i { min=i; for(j=i+1;j /******1******/ if(a[min]<=a[j]){ /******2******/ temp=a[min];a[min]=a[j];a[j]=temp;}/*数据交换*/ } printf("\nThesortednumbers: \n");/*输出排序结果*/ for(i=0;i printf("%5d",a[i]); printf("\n"); } ∙#include"stdio.h" ∙#defineN10 ∙intmain() ∙{ ∙inti,j,min,temp; ∙inta[N]={5,4,3,2,1,9,8,7,6,0}; ∙printf("\nThearrayis: \n");/**/ ∙for(i=0;i ∙printf("%5d",a[i]); ∙for(i=0;i ∙{ ∙min=i; ∙for(j=i+1;j ∙/******1******/ ∙if(a[min]>=a[j]){ ∙/******2******/ ∙temp=a[min];a[min]=a[j];a[j]=temp;}/**/ ∙} ∙printf("\nThesortednumbers: \n");/**/ ∙for(i=0;i ∙printf("%5d",a[i]); ∙printf("\n"); ∙} (二)程序填空 1,求最大公约数 下面程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 输入m、n(要求输入数均大于0),输出它们的最大公约数。 #include voidmain() {intm,n,k; while(scanf("%d%d",&m,&n),_______1______); for(____2____;n%k! =0||m%k! =0;k--); printf("%d\n",k); } ∙#include ∙voidmain() ∙{intm,n,k; ∙while(scanf("%d%d",&m,&n)! =EOF&&m<=0||n<=0); ∙{for(k=m;n%k! =0||m%k! =0;k--); ∙printf("%d\n",k); ∙} ∙} 2,分别统计字符串中各字符 下面程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 分别统计字符串中英文字母、数字和其他字符出现的次数。 #include #include voidmain() {chara[80];intn[3]={0},i; gets(a); for(i=0;a[i]! ='\0';i++) {if(/*-------1---------*/)/*统计字母个数*/ n[0]++; elseif(/*------2------*/)/*统计数字个数*/ n[1]++; else n[2]++; } for(i=0;i<3;i++)printf(/*------3------*/); } ∙#include ∙#include ∙intmain() ∙{chara[80];intn[3]={0},i; ∙gets(a); ∙for(i=0;a[i]! ='\0';i++) ∙{if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z') ∙n[0]++; ∙elseif(a[i]>='0'&&a[i]<='9') ∙n[1]++; ∙else ∙n[2]++; ∙} ∙for(i=0;i<3;i++)printf("%d\n",n[i]); ∙} 3,求相邻两元素和 下面程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 求出a中各相邻两个元素的和,并将这些和存放在数组b中,按每行3个元素的形式输出。 例如: b[1]=a[1]+a[0],…………,b[9]=a[9]+a[8]。 #include voidmain() { inta[10],b[10],i; printf("\nInput10numbers: "); for(i=0;i<10;i++)/*数组输入*/ scanf("%d",&a[i]); for(i=1;i<10;i++) b[i]=_______1_____;/*计算b数组中的元素*/ for(i=1;i<10;i++) { printf("%3d",b[i]); if(_____2_______)printf("\n");/*每行打印3个数据*/ } } ∙#include ∙voidmain() ∙{ ∙inta[10],b[10],i; ∙printf("\nInput10numbers: "); ∙for(i=0;i<10;i++) ∙scanf("%d",&a[i]); ∙for(i=1;i<10;i++) ∙b[i]=a[i]+a[i-1]; ∙for(i=1;i<10;i++) ∙{ ∙printf("%3d",b[i]); ∙if(i%3==0)printf("\n"); ∙} ∙} 4求数字和 下面程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。 #include #include voidmain() { intn,s=0; scanf("%d",&n); ______1______ while(n! =0){ ______2______ n=n/10; } printf("%d\n",s); } ∙#include ∙#include ∙voidmain() ∙{ ∙intn,s=0; ∙scanf("%d",&n); ∙if(n<0){n=-n;} ∙while(n! =0){ ∙s=s+n%10; ∙n=n/10; ∙} ∙printf("%d\n",s); ∙} 5,求整数位数 下面程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 输入1个整数后,输出该数的位数(若输入3214则输出4,输入-23156则输出5)。 #include voidmain() {intn,k=0; scanf("%d",&n); while(n! =0){ k++; n=n/10; } printf("%d\n",k); } ∙#include ∙voidmain() ∙{intn,k=0; ∙scanf("%d",&n); ∙while(n! =0){ ∙k++; ∙n=n/10; ∙} ∙printf("%d\n",k); ∙} 6,数列2项和 下面程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能: 数列的第1、2项均为1,此后各项值均为该项前二项之和。 计算数列第30项的值。 #include longf(intn); voidmain() { printf("%ld\n",_____1____); } longf(intn) { if(_______2______) return1; else return______3_____; } ∙#include ∙longf(intn); ∙intmain() ∙{ ∙printf("%ld\n",f(30)); ∙} ∙longf(intn) ∙{ ∙if(n==1||n==2) ∙return1; ∙else ∙returnf(n-1)+f(n-2); ∙} 7,数倒置 下面程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意: 不得加行、减行、加句、减句,否则后果自负)。 该程序功能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙江省 计算机 二级 语言 上机 考试 真题版