浙江省计算机二级c语言上机考试真题二程序填空.docx
《浙江省计算机二级c语言上机考试真题二程序填空.docx》由会员分享,可在线阅读,更多相关《浙江省计算机二级c语言上机考试真题二程序填空.docx(27页珍藏版)》请在冰豆网上搜索。
![浙江省计算机二级c语言上机考试真题二程序填空.docx](https://file1.bdocx.com/fileroot1/2023-2/22/ab18c121-6364-43b1-91d4-560cc3a9cd85/ab18c121-6364-43b1-91d4-560cc3a9cd851.gif)
浙江省计算机二级c语言上机考试真题二程序填空
(二)程序填空
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____"是根据程序功能需要填充部分,请完成程序填充(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
调用函数f,将1个整数首尾倒置,若程序输入12345,则输出54321;若程序输入-34567,则输出-76543。
#include
#include
longf(longn)
{longm,y=0;
m=fabs(n);
while(m!
=0){
y=y*10+m%10;
______1______;
}
if(_______2_____)returny;
elsereturn-y;
}
intmain()
{
printf("%ld\n",f(12345));printf("%ld\n",f(-34567));
return0;
}
∙#include
∙#include
∙longf(longn)
∙{longm,y=0;
∙m=fabs(n);
∙while(m!
=0){
∙y=y*10+m%10;
∙m=m/10;
∙}
∙if(n>=0)returny;
∙elsereturn-y;
∙}
∙voidmain()
∙{
∙printf("%ld\n",f(12345));printf("%ld\n",f(-34567));
∙}
8,删除数字字符
下面程序中中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
调用函数f,从字符串中删除所有的数字字符。
#include
#include
#include
voidf(char*s)
{inti=0;
while(s[i]!
='\0'){
if(isdigit(s[i]))____1____;
else______2___;}
}
voidmain()
{charstr[80];
gets(str);f(str);puts(str);
}
∙#include
∙#include
∙#include
∙voidf(char*s)
∙{inti=0;
∙while(s[i]!
='\0'){
∙if(isdigit(s[i]))strcpy(s+i,s+i+1);
∙elsei++;}
∙}
∙voidmain()
∙{charstr[80];
∙gets(str);f(str);puts(str);
∙}
9,删除c
下面程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
将字符串s中所有的字符'c'删除。
#include
voidmain()
{
chars[80];
inti,j;
gets(s);
for(i=j=0;str[i]!
='\0';i++)
if(______1_______)
{
s[j]=s[i];
j++
}
______2______;
puts(s);
}
∙#include
∙voidmain()
∙{chars[80];
∙inti,j;
∙gets(s);
∙for(i=j=0;s[i]!
='\0';i++)
∙if(s[i]!
='c')
∙{s[j]=s[i];
∙j++;
∙}
∙s[j]='\0';
∙puts(s);
∙}
10,去数组负数
下面程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
输入数组x[7],调用函数f,去除数组中的负数,输出结果为:
1346
#include
voidf(int*a,int*m)
{inti,j;
for(i=0;i<*m;i++)
if(a[i]<0){
for(j=i--;j<*m-1;j++)a[j]=a[j+1];
_____1_____;
}
}
voidmain()
{inti,n=7,x[7]={1,-2,3,4,-5,6,-7};
_______2_______;
for(i=0;iprintf("\n");
}
∙#include
∙voidf(int*a,int*m)
∙{inti,j;
∙for(i=0;i<*m;i++)
∙if(a[i]<0){
∙for(j=i--;j<*m-1;j++)a[j]=a[j+1];
∙*m=*m-1;
∙}
∙}
∙intmain()
∙{inti,n=7,x[7]={1,-2,3,4,-5,6,-7};
∙f(x,&n);
∙for(i=0;i∙printf("\n");
∙}
11,平均成绩
下面程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
该程序计算四位学生的平均成绩,保存在结构中,然后列表输出这些学生的信息。
#include
structSTUDENT
{
charname[16];
intmath;
intenglish;
intcomputer;
intaverage;
};
voidGetAverage(structSTUDENT*pst)/*计算平均成绩*/
{
intsum=0;
sum=______1______;//pst->math+pst->english+pst->computer
pst->average=sum/3;
}
voidmain()
{
inti;
structSTUDENTst[4]={{"Jessica",98,95,90},{"Mike",80,80,90},
{"Linda",87,76,70},{"Peter",90,100,99}};
for(i=0;i<4;i++)
{
GetAverage(______2______);//st+i
}
printf("Name\tMath\tEnglish\tCompu\tAverage\n");
for(i=0;i<4;i++)
{
printf("%s\t%d\t%d\t%d\t%d\n",st[i].name,st[i].math,st[i].english,
st[i].computer,st[i].average);
}
}
12,后移5位
下面程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
输入的一个小写字母,将字母循环后移5个位置后输出,如’a’变成’f’,‘w’变成’b’。
#include
voidmain()
{
charc;
c=getchar();
if(______1______)
c=c+5;
else
if(c>='v'&&c<='z')
______2______
putchar(c);
}
∙#include
∙intmain()
∙{
∙charc;
∙c=getchar();
∙if(c>='a'&&c<'v')
∙c=c+5;
∙else
∙if(c>='v'&&c<='z')
∙c='a'+'z'-c;
∙putchar(c);
∙}
13,函数最大值
下面程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
对x=1,2,...,10,求f(x)=x*x-5*x+sin(x)的最大值。
#include
#include
#definef(x)x*x-5*x+sin(x)
voidmain()
{
intx;floatmax;
/*----1---*/;
for(x=2;x<=10;x++)
if(max
fprintf(p,"%f\n",max);
}
∙#include
∙#include
∙#definef(x)x*x-5*x+sin(x)
∙intmain()
∙{
∙intx;floatmax;
∙max=f
(1);
∙for(x=2;x<=10;x++)
∙if(max∙printf("%f\n",max);
∙}
14,2n小于m
下面程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
输入整数n(n>0),求m使得2的m次方小于或等于n、2的m+1次方大于或等于n。
#include"stdio.h"
voidmain()
{intm=0,t=1,n;
while(_____1________);
while(!
(t<=n&&t*2>=n)){
_____2_____
m++;
}
printf("%d\n",m);
}
∙#include"stdio.h"
∙intmain()
∙{intm=0,t=1,n;
∙while(scanf("%d",&n),n<=0);
∙while(!
(t<=n&&t*2>=n)){
∙t=t*2;
∙m++;
∙}
∙printf("%d\n",m);
∙}
15,findthe
下面程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
调用find函数在输入的字符串中查找是否出现"the"这个单词。
如果查到返回出现的次数;如果未找到返回0。
#include"stdio.h"
intfind(char*str)
{
char*fstr="the";
inti=0,j,n=0;
while(str[i]!
='\0')
{
for(______1______)
if(str[j+i]!
=fstr[j])break;
if(______2______)n++;
i++;
}
returnn;
}
voidmain()
{chara[80];
gets(a);
printf("%d",find(a));
}
∙#include"stdio.h"
∙intfind(char*str)
∙{
∙char*fstr="the";
∙inti=0,j,n=0;
∙while(str[i]!
='\0')
∙{
∙for(j=0;j<3;j++)
∙{if(str[j+i]!
=fstr[j])break;
∙if(j==2)n++;}
∙i++;
∙}
∙returnn;
∙}
∙
∙main()
∙{chara[80];
∙gets(a);
∙printf("%d",find(a));
∙}
16,ditoh
下面程序中中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符串形式输出。
例如:
输入十进制数79,将输出十六进制4f。
#include"stdio.h"
#include"string.h"
chartrans(intx)
{
if(x<10)return'0'+x;
else_______1________
}
intDtoH(intn,char*str)
{
inti=0;
while(n!
=0)
{
________2________
n/=16;i++;}
returni-1;
}
voidmain()
{
inti,k,n;
charstr[30];
scanf("%d",&n);
k=DtoH(n,str);
for(i=0;i<=k;i++)printf("%c",str[k-i]);
}
∙#include"stdio.h"
∙#include"string.h"
∙chartrans(intx)
∙{
∙if(x<10)return'0'+x;
∙elsereturn'a'+x-10;
∙}
∙
∙intDtoH(intn,char*str)
∙{
∙inti=0;
∙while(n!
=0)
∙{
∙str[i]=trans(n%16);
∙n/=16;i++;}
∙returni-1;
∙}
∙
∙intmain()
∙{
∙inti,k,n;
∙charstr[30];
∙scanf("%d",&n);
∙k=DtoH(n,str);
∙for(i=0;i<=k;i++)printf("%c",str[k-i]);
∙}
17,dec2bin
下面程序中"____N____"是根据程序功能需要填充部分,请完成程序填充(注意:
不得加行、减行、加句、减句,否则后果自负)。
该程序功能:
将输入的十进制正整数n通过函数Dec2Bin转换为二进制数,并将转换结果输出。
#include"stdio.h"
voidDec2Bin(intm)
{
intbin[32],j;
for(j=0;m!
=0;j++)
{
bin[j]=m%2;
m=m/2;
}
for(;j!
=0;j--)
printf("%d",bin[j-1]);
}
voidmain()
{
intn;
scanf("%d",&n);
Dec2Bin(n);
}
∙#include"stdio.h"
∙voidDec2Bin(intm)
∙{
∙intbin[32],j;
∙for(j=0;m!
=0;j++)
∙{
∙bin[j]=m%2;
∙m=m/2;
∙}