1、高考C语言题试卷编号:8258所属语言:计算机基础试卷方案:111试卷总分:400分共有题型:3种一、程序填空 共5题 (共计100分)第1题 (20.0分) 题号:650 难度:中 第1章/*-【程序填空】- 函数int change(char s)将s中的数字字符串转换成整数, 并返回该数。例如s中为123,转换后为123。 函数int multi(char s,char t)将s字符串转换的整数乘 以t字符串转换的整数,并返回乘积。-注意:请勿改动程序中的其他内容。-*/#includeint change(char s) int i,sum; sum=0; for(i=0;si;i+)
2、/*SPACE*/ sum=sum*10+【?】-0; return sum;int multi(char s,char t) int mul;/*SPACE*/ mul=【?】; return mul;int main() char s1=123,s2=56; int mst; mst=multi(s1,s2); printf(%dn,mst); return 0;答案:=(答案1)=si=或=*(s+i)=(答案2)=change(s)*change(t)=或=change(t)*change(s)第2题 (20.0分) 题号:651 难度:中 第1章/*-【程序填空】- 函数void c
3、heck(long n, int c)检测长整型正整数n是几 位数,同时找出最小的数字。将位数和最小的数字存放在数 组c中。 例如n=1256044时,n是7位数,最小的数字是0。-注意:请勿改动程序中的其他内容。-*/#include /*SPACE*/void check(long n, int 【?】) int min,p,k; min=9; p=0; do k=n%10; min=(mink)? k: min; n/=10; p+; while(n); c0=p; c1=min;int main() long n; int c2; printf(输入长整型正整数:); scanf(%l
4、d,&n); check(n, c);/*SPACE*/ printf(%ld是%d位数,最小数字是%dn,【?】); return 0;答案:=(答案1)=c=或=c2=(答案2)=n,c0,c1第3题 (20.0分) 题号:652 难度:中 第1章/*-【程序填空】- 函数int convert(int a,int nsys)将nsys(nsys10)进制数a, 转换成十进制数并返回。-注意:请勿改动程序中的其他内容。-*/#include#define N 5int convert(int a,int nsys) int t,p; if(ansys) return a; t=0; p=1
5、; while(a!=0) t=t+a%10*p;/*SPACE*/ 【?】; p*=nsys; return t;int main() int i,d; int numN2=704,8,10011,2,266,7,3,5,22110,3; for(i=0;iN;i+) d=convert(numi0,numi1);/*SPACE*/ printf(%d进制数的%dt = 十进制数的%dn,【?】); return 0;答案:=(答案1)=a/=10=或=a=a/10=(答案2)=numi1,numi0,d第4题 (20.0分) 题号:653 难度:中 第1章/*-【程序填空】- 函数void
6、 rearr(int a, int n)将已经升序排列的一维数 组a中的n个元素重新排列,重新排列的规则是: 将a数组中的最小元素放到a0,最大元素放到a1, 将次小元素放到a2,次大元素放到a3,., 以此类推。 例如: 原a数组各元素为: -11 -7 0 3 8 15 16 20 38 重新排列后a数组各元素为: -11 38 -7 20 0 16 3 15 8-注意:请勿改动程序中的其他内容。-*/#include#define N 9void rearr(int a, int n) int left,right,i; int bN; left=0; right=N-1; for(i=
7、0; leftright; i+=2) bi=aleft+;/*SPACE*/ bi+1=a【?】; if(left=right) bi=aleft; for(i=0;iN;i+)/*SPACE*/ ai=【?】;int main() int i,aN=-11,-7,0,3,8,15,16,20,38; rearr(a,N); for(i=0;iz,B-y,.,Z-a 小写字母转换规则:z-A,y-B,.,a-Z 数字字符转换规则:0-9,1-8,.,9-0-注意:请勿改动程序中的其他内容。-*/#include#includevoid change(char s,char t) int i;
8、 for(i=0;si;+i) if(isalpha(si) ti=(isupper(si) ? Z-si+a : z-si+A); else if(isdigit(si) ti=9-si+0; else/*SPACE*/ 【?】; ti=0;int main() char t100=7984 RH hSVVK BVZI,dRHS BLF TLLW OFXP!; char s100;/*SPACE*/ 【?】; printf(%sn,s); return 0;答案:=(答案1)=ti=si=(答案2)=change(t,s)二、程序改错 共5题 (共计150分)第1题 (30.0分) 题号:5
9、75 难度:中 第1章/*-【程序改错】-题目:int sort(int a,int n)函数将n个元素的数组a中互不相 同的元素按升序排列,重新存入数组a中,函数返回按升序 排列后互不相同元素的个数。例如:数组a中元素为6,2,7,5,4,3,4,6,5,4,调用sort函数后, 函数值为6,主函数中输出排序后的数组a元素为 2,3,4,5,6,7。 请改正程序中的错误,使它能得出正确的结果。-注意:不得增行或删行,也不得更改程序的结构。-*/#include int sort(int a,int n) int i,j,k,low,high,mid,t; for(k=i=1;in;i+) l
10、ow=0; high=k-1; while(low=ai) high=mid-1; else low=mid+1; if(low=k|alow!=ai) /*FOUND*/ t=ai-1;/*FOUND*/ for(j=k;j=low;j-) aj+1=aj; alow=t; k+; return k; int main() int a =6,2,7,5,4,3,4,6,5,4; int i,n; n=sizeof(a)/sizeof(int); for(i=0;in;i+) printf(%dt,ai);/*FOUND*/ sort(a,n); printf(nAfter sorting:n
11、); for(i=0;i=low;j-)=(答案3)=n=sort(a,n);第2题 (30.0分) 题号:576 难度:中 第1章/*-【程序改错】-题目:函数unsigned delbits(unsigned x,unsigned p,unsigned n) 把非负整数x从左端第p(p1)位开始的n位删除,形成新的数 返回。例如:若x为12345,p为3,n为2,形成新的数为125。 若x为12345,p为6,n为2,形成新的数为12345。 若x为12345,p为3,n为4,形成新的数为12。 请改正程序中的错误,使它能得出正确的结果。-注意:不得增行或删行,也不得更改程序的结构。-*/
12、#include unsigned delbits(unsigned x,unsigned p,unsigned n) int a10,i,j,k; i=0; while(x) /*FOUND*/ ai=x%10; x/=10; k=i; for(i=0;ik/2;i+) ai+=ak-i-1; ak-i-1=ai-ak-i-1; ai=ai-ak-i-1; j=p-1;/*FOUND*/ for(i=p+n;i=k-1;i+) aj=ai; j+; k=j; for(i=0;ik;i+) /*FOUND*/ x+=ai*10; return x;int main() unsigned x,p
13、,n; printf(Input x(unsigned int):n); scanf(%u,&x); printf(Input p(unsigned int):n); scanf(%u,&p); printf(Input n(unsigned int):n); scanf(%u,&n); x=delbits(x,p,n); printf(After deleting x=%un,x); return 0;答案:=(答案1)=ai+= x%10;=或=ai=x%10,i+;=或=ai=x%10,+i;=或=ai=x%10,i=i+1;=或=ai=x%10,i=1+i;=或=ai=x%10,i+=
14、1;=或=ai=x%10;i+;=或=ai=x%10;+i;=或=ai=x%10;i=i+1;=或=ai=x%10;i=1+i;=或=ai=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+ai;=或=x=10*x+ai;=或=x=ai+x*10;=或=x=ai+10*x;第3题 (30.0分) 题号:577 难度:中 第1章/*-【程序改错】-题目:void move(int a,int n,int m)函数将n个元素的一维 数组a循环左移m个位置, void change(int a,in
15、t n,int bN)函数将数组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 #define M 3#define N 4void move(int a,int n,int m) int i,t; while
16、(m) t=a0; for(i=0;in-1;i+)/*FOUND*/ ai=ai+m; an-1=t; m-; void change(int a,int n,int bN) int i,j; for(i=0;in;i+)/*FOUND*/ bi/Mi-i/N=ai; for(i=0;iN;i+) for(j=0;jM;j+)/*FOUND*/ aj*M+i=bij;int main() int aM*N=1,2,3,4,5,6,7,8,9,10,11,12; int bMN,i,j,m; printf(Before movingnArray a:n); for(i=0;iM*N;i+) printf(%d ,ai); printf(nInput m:n); scanf(%d,&m); move(a,M*N,m); printf(nAfter movingnArray a:n); for(i=0;iM*N;i+) printf(%d ,ai); change(a,M*N,b); printf(nnAfter changingnArray b:n); for(i=0;iM;i+) for(j=0;jN;j+) printf(%dt,bij); printf(n
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1