高考C语言题.docx
- 文档编号:26046845
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:43
- 大小:22.18KB
高考C语言题.docx
《高考C语言题.docx》由会员分享,可在线阅读,更多相关《高考C语言题.docx(43页珍藏版)》请在冰豆网上搜索。
高考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"); re
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高考 语言