高考C语言题.docx

上传人:b****5 文档编号:4372723 上传时间:2022-12-01 格式:DOCX 页数:36 大小:22.15KB
下载 相关 举报
高考C语言题.docx_第1页
第1页 / 共36页
高考C语言题.docx_第2页
第2页 / 共36页
高考C语言题.docx_第3页
第3页 / 共36页
高考C语言题.docx_第4页
第4页 / 共36页
高考C语言题.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

高考C语言题.docx

《高考C语言题.docx》由会员分享,可在线阅读,更多相关《高考C语言题.docx(36页珍藏版)》请在冰豆网上搜索。

高考C语言题.docx

高考C语言题

试卷编号:

8258

所属语言:

计算机基础

试卷方案:

111

试卷总分:

400分

共有题型:

3种

一、程序填空共5题(共计100分)

第1题(分)题号:

650难度:

中第1章

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

函数intchange(chars[])将s中的数字字符串转换成整数,

并返回该数。

例如s[]中为"123",转换后为123。

函数intmulti(chars[],chart[])将s字符串转换的整数乘

以t字符串转换的整数,并返回乘积。

---------------------------------------------------------

注意:

请勿改动程序中的其他内容。

-------------------------------------------------------*/

#include<>

intchange(chars[])

{

inti,sum;

sum=0;

for(i=0;s[i];i++)

/**************************SPACE*************************/

sum=sum*10+【】-'0';

returnsum;

}

intmulti(chars[],chart[])

{

intmul;

/**************************SPACE*************************/

mul=【】;

returnmul;

}

intmain()

{

chars1[]="123",s2[]="56";

intmst;

mst=multi(s1,s2);

printf("%d\n",mst);

return0;

}

答案:

=======(答案1)=======

s[i]

=========或=========

*(s+i)

=======(答案2)=======

change(s)*change(t)

=========或=========

change(t)*change(s)

第2题(分)题号:

651难度:

中第1章

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

函数voidcheck(longn,intc[])检测长整型正整数n是几

位数,同时找出最小的数字。

将位数和最小的数字存放在数

组c中。

例如n=1256044时,n是7位数,最小的数字是0。

---------------------------------------------------------

注意:

请勿改动程序中的其他内容。

-------------------------------------------------------*/

#include<>

/**************************SPACE*************************/

voidcheck(longn,int【】)

{

intmin,p,k;

min=9;

p=0;

do{

k=n%10;

min=(min>k)k:

min;

n/=10;

p++;

}while(n);

c[0]=p;

c[1]=min;

}

intmain()

{

longn;

intc[2];

printf("输入长整型正整数:

");

scanf("%ld",&n);

check(n,c);

/**************************SPACE*************************/

printf("%ld是%d位数,最小数字是%d\n",【】);

return0;

}

答案:

=======(答案1)=======

c[]

=========或=========

c[2]

=======(答案2)=======

n,c[0],c[1]

第3题(分)题号:

652难度:

中第1章

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

函数intconvert(inta,intnsys)将nsys(nsys<10)进制数a,

转换成十进制数并返回。

---------------------------------------------------------

注意:

请勿改动程序中的其他内容。

---------------------------------------------------------*/

#include<>

#defineN5

intconvert(inta,intnsys)

{

intt,p;

if(a

returna;

t=0;

p=1;

while(a!

=0)

{

t=t+a%10*p;

/**************************SPACE*************************/

【】;

p*=nsys;

}

returnt;

}

intmain()

{

inti,d;

intnum[N][2]={{704,8},{10011,2},{266,7},{3,5},{22110,3}};

for(i=0;i

{

d=convert(num[i][0],num[i][1]);

/**************************SPACE*************************/

printf("%d进制数的%d\t=十进制数的%d\n",【】);

}

return0;

}

答案:

=======(答案1)=======

a/=10

=========或=========

a=a/10

=======(答案2)=======

num[i][1],num[i][0],d

第4题(分)题号:

653难度:

中第1章

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

函数voidrearr(inta[],intn)将已经升序排列的一维数

组a中的n个元素重新排列,重新排列的规则是:

将a数组中的最小元素放到a[0],最大元素放到a[1],

将次小元素放到a[2],次大元素放到a[3],...,

以此类推。

例如:

原a数组各元素为:

-11-703815162038

重新排列后a数组各元素为:

-1138-7200163158

---------------------------------------------------------

注意:

请勿改动程序中的其他内容。

-------------------------------------------------------*/

#include<>

#defineN9

voidrearr(inta[],intn)

{

intleft,right,i;

intb[N];

left=0;

right=N-1;

for(i=0;left

{

b[i]=a[left++];

/**************************SPACE*************************/

b[i+1]=a[【】];

}

if(left==right)

b[i]=a[left];

for(i=0;i

/**************************SPACE*************************/

a[i]=【】;

}

intmain()

{

inti,a[N]={-11,-7,0,3,8,15,16,20,38};

rearr(a,N);

for(i=0;i

printf("%3d",a[i]);

printf("\n");

return0;

}

答案:

=======(答案1)=======

right--

=======(答案2)=======

b[i]

第5题(分)题号:

654难度:

中第1章

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

函数voidchange(chars[],chart[])将s字符串中字母和数

字字符按以下规则转换,并将其保存在t中。

其他字符则不作

转换。

大写字母转换规则:

'A'->'z','B'->'y',...,'Z'->'a'

小写字母转换规则:

'z'->'A','y'->'B',...,'a'->'Z'

数字字符转换规则:

'0'->'9','1'->'8',...,'9'->'0'

---------------------------------------------------------

注意:

请勿改动程序中的其他内容。

-------------------------------------------------------*/

#include<>

#include<>

voidchange(chars[],chart[])

{

inti;

for(i=0;s[i];++i)

{

if(isalpha(s[i]))

t[i]=(isupper(s[i])'Z'-s[i]+'a':

'z'-s[i]+'A');

elseif(isdigit(s[i]))

t[i]='9'-s[i]+'0';

else

/**************************SPACE*************************/

【】;

}

t[i]=0;

}

intmain()

{

chart[100]="7984RHhSVVKBVZI,dRHSBLFTLLWOFXP!

";

chars[100];

/**************************SPACE*************************/

【】;

printf("%s\n",s);

return0;

}

答案:

=======(答案1)=======

t[i]=s[i]

=======(答案2)=======

change(t,s)

二、程序改错共5题(共计150分)

第1题(分)题号:

575难度:

中第1章

/*-------------------------------------------------------

【程序改错】

---------------------------------------------------------

题目:

intsort(inta[],intn)函数将n个元素的数组a中互不相

同的元素按升序排列,重新存入数组a中,函数返回按升序

排列后互不相同元素的个数。

例如:

数组a中元素为6,2,7,5,4,3,4,6,5,4,调用sort函数后,

函数值为6,主函数中输出排序后的数组a元素为

2,3,4,5,6,7。

请改正程序中的错误,使它能得出正确的结果。

---------------------------------------------------------

注意:

不得增行或删行,也不得更改程序的结构。

--------------------------------------------------------*/

#include<>

intsort(inta[],intn)

{

inti,j,k,low,high,mid,t;

for(k=i=1;i

{

low=0;

high=k-1;

while(low<=high)

{

mid=(low+high)/2;

if(a[mid]>=a[i])high=mid-1;

elselow=mid+1;

}

if(low>=k||a[low]!

=a[i])

{

/*******************FOUND*******************/

t=a[i]-1;

/*******************FOUND*******************/

for(j=k;j>=low;j--)

a[j+1]=a[j];

a[low]=t;

k++;

}

}

returnk;

}

intmain()

{

inta[]={6,2,7,5,4,3,4,6,5,4};

inti,n;

n=sizeof(a)/sizeof(int);

for(i=0;i

printf("%d\t",a[i]);

/*******************FOUND*******************/

sort(a,n);

printf("\nAftersorting:

\n");

for(i=0;i

printf("%d\t",a[i]);

printf("\n");

return0;

}

答案:

=======(答案1)=======

t=a[i];

=======(答案2)=======

for(j=k-1;j>=low;j--)

=======(答案3)=======

n=sort(a,n);

第2题(分)题号:

576难度:

中第1章

/*-------------------------------------------------------

【程序改错】

---------------------------------------------------------

题目:

函数unsigneddelbits(unsignedx,unsignedp,unsignedn)

把非负整数x从左端第p(p>1)位开始的n位删除,形成新的数

返回。

例如:

若x为12345,p为3,n为2,形成新的数为125。

若x为12345,p为6,n为2,形成新的数为12345。

若x为12345,p为3,n为4,形成新的数为12。

请改正程序中的错误,使它能得出正确的结果。

---------------------------------------------------------

注意:

不得增行或删行,也不得更改程序的结构。

--------------------------------------------------------*/

#include<>

unsigneddelbits(unsignedx,unsignedp,unsignedn)

{

inta[10],i,j,k;

i=0;

while(x)

{

/*******************FOUND*******************/

a[i]=x%10;

x/=10;

}

k=i;

for(i=0;i

{

a[i]+=a[k-i-1];

a[k-i-1]=a[i]-a[k-i-1];

a[i]=a[i]-a[k-i-1];

}

j=p-1;

/*******************FOUND*******************/

for(i=p+n;i<=k-1;i++)

{

a[j]=a[i];

j++;

}

k=j;

for(i=0;i

/*******************FOUND*******************/

x+=a[i]*10;

returnx;

}

intmain()

{

unsignedx,p,n;

printf("Inputx(unsignedint):

\n");

scanf("%u",&x);

printf("Inputp(unsignedint):

\n");

scanf("%u",&p);

printf("Inputn(unsignedint):

\n");

scanf("%u",&n);

x=delbits(x,p,n);

printf("Afterdeletingx=%u\n",x);

return0;

}

答案:

=======(答案1)=======

a[i++]=x%10;

=========或=========

a[i]=x%10,i++;

=========或=========

a[i]=x%10,++i;

=========或=========

a[i]=x%10,i=i+1;

=========或=========

a[i]=x%10,i=1+i;

=========或=========

a[i]=x%10,i+=1;

=========或=========

a[i]=x%10;i++;

=========或=========

a[i]=x%10;++i;

=========或=========

a[i]=x%10;i=i+1;

=========或=========

a[i]=x%10;i=1+i;

=========或=========

a[i]=x%10;i+=1;

=======(答案2)=======

for(i=p+n-1;i<=k-1;i++)

=========或=========

for(i=p-1+n;i<=k-1;i++)

=======(答案3)=======

x=x*10+a[i];

=========或=========

x=10*x+a[i];

=========或=========

x=a[i]+x*10;

=========或=========

x=a[i]+10*x;

第3题(分)题号:

577难度:

中第1章

/*-------------------------------------------------------

【程序改错】

---------------------------------------------------------

题目:

voidmove(inta[],intn,intm)函数将n个元素的一维

数组a循环左移m个位置,

voidchange(inta[],intn,intb[][N])函数将数组a按

行存入二维数组b,然后将b按列重新存入数组a。

例如:

数组a的元素为1,2,3,4,5,6,7,8,9,10,11,12,调用move函

数将a循环左移3个位置后,a的元素为

4,5,6,7,8,9,10,11,12,1,2,3,调用change函数后,a的元

素为4,8,12,5,9,1,6,10,2,7,11,3。

请改正程序中的错误,使它能得出正确的结果。

---------------------------------------------------------

注意:

不得增行或删行,也不得更改程序的结构。

--------------------------------------------------------*/

#include<>

#defineM3

#defineN4

voidmove(inta[],intn,intm)

{

inti,t;

while(m)

{

t=a[0];

for(i=0;i

/*******************FOUND*******************/

a[i]=a[i+m];

a[n-1]=t;

m--;

}

}

voidchange(inta[],intn,intb[][N])

{

inti,j;

for(i=0;i

/*******************FOUND*******************/

b[i/M][i-i/N]=a[i];

for(i=0;i

for(j=0;j

/*******************FOUND*******************/

a[j*M+i]=b[i][j];

}

intmain()

{

inta[M*N]={1,2,3,4,5,6,7,8,9,10,11,12};

intb[M][N],i,j,m;

printf("Beforemoving\nArraya:

\n");

for(i=0;i

printf("%d",a[i]);

printf("\nInputm:

\n");

scanf("%d",&m);

move(a,M*N,m);

printf("\nAftermoving\nArraya:

\n");

for(i=0;i

printf("%d",a[i]);

change(a,M*N,b);

printf("\n\nAfterchanging\nArrayb:

\n");

for(i=0;i

for(j=0;j

printf("%d\t",b[i][j]);

printf("\n");

}

printf("Arraya:

\n");

for(i=0;i

printf("%d",a[i]);

printf("\n");

return0;

}

答案:

=======(答案1)=======

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1