C语言考试题及答案_第1页
C语言考试题及答案_第2页
C语言考试题及答案_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言考试题及答案Last revision date: 13 December 2020.一、单项选择题:(10分,每题2分)1. char*p10;该语句声明了一个:。A) 指向含有10个元素的一维字符型数组的指针变量pB) 指向长度不超过10的字符串的指针变量pC) 有10个元素的指针数组p,每个元素可以指向一个字符串D) 有10个元素的指针数组p,每个元素存放一个字符串2. 若intx;且有下面的程序片断,则输出结果为:。for(x=3;x6;x+)printf(x%2):x);A) #3B)*3 C)*3D)#3*4*4#4#4*水5聊5#5*53. 在while (!x)语句中的!

2、x与下面条件表达式等价的是:。A)x!=0B)x=lC)x!=lD)x=04. 已知structpointintx;inty;;structreetstructpointptl;struetpointpt2;);structrectrt;structrect*rp=&rt;则下面哪一种引用是不正确的。A) rt.ptl.xB) (*rp). ptl. xC) rp->ptl. x D)rt->ptl. x5. 若二维数组d有m行n列,则下面能够正确引用元素的为:。A) (a+j*n+i)B) * (a+i*n+j)C) * (* (a+i) +j)D) * (*a+i) +

3、 jCDDDC二、分析程序并写出运行结果。(25分,每题5分)1 #include<stdio.h>main ()intn;stat i cchar*monthName =Illegalmonth, January, February*,Mairch > April , M&y > June , July , August ,"September", "October", "November", "December"for(n=l;n<=12;n 卄)printf ("

4、;%sn", monthName n); 运行结果是: January February Marchriynelygu APMaJUJUAUSeptemberOctoberNovemberDecember2. #include<stdio. h>#defineARR_SIZE7voidYH(inta ARILSIZE, intn); voidPrintYH(inta ARR_SIZE, intn); main ()intaARILSIZEARR_SIZE;YH(a,ARR_SIZE-l);Print YH(a,ARR_SIZE-l);voidYH(inta ARRSIZE

5、, intn)inti, j;for(i=l;i<=n;i+) for(j=l;j<=i;j+)if (j=l 11 i=j)aielseai j=ai-lj-l+ai-lj;voidPrintYH(inta ARR_SIZE, intn)inti, j;for(i=l;i<=n:i+)for(j=l;j<=i;j+)printfaij);printf("n");运行结果是:11112113311464115101051ncludestdio h> main ()inti, n;for(i=l;i<=5;i+)printf ("

6、Pleaseentern:"); scanf&n);if (n<=0)continue; printf ("n=%dn", n);printf ("Programisover!n");程序运行时输入:1-23-45/运行结果是:n=lPleaseentern:Pleaseentern:n=3 Pleaseentern:Pleaseentern:n=5 Programisover!#include<stdio. h> voidFunc(intn);main ()inti;for(i=0;i<2;i+)Func(i)

7、;voidFunc(intn)staticintt=l;printf("t=%dn*, t+);运行结果是:t=lt 二25.#include<stdio. h>intFunc(inti);main ()inti;for(i=3;i<5;i+)printfFunc (i);printf CW);intFunc (i nti)staticintk=10;for(;i>0;i)k+;return(k);运行结果是:1317三、阅读并完成程序,在标有下划线的空白处填入适当的表达式或语句,使程 序完整并符合题目要求。(20分,每空2分)I. 下面程序用于读入10个字符

8、串,然后找出最大的字符串并打印。#include<stdio. h>#include<string h>main()charstr10 80, maxstring80;inti;printf("Entertenstrings:n"); for(i=0;i<10;i+)scanf (”s", stri); strcpy (maxstring,str0);for(i=l;i<10;i+)if (strcmp(iDaxstring, stri)O)或strcmp (stri, maxstring)>0strcpy(maxstri

9、ng, stri);printf("Themaxstringis:%sn", maxstring); 2. 下面这个程序用于交换两个数组的对应元素的值。#include<stdio. h>#defineARRAY_SIZE10voidSwap(int*x, int*y); voidExchange(inta, intb, intn); voidinputArray(inta, intn); voidPrintArray(inta, intn);main()intaARRAY_SIZE, bARRAY_SIZE, n; printf (Inputarraylent

10、hn=10:”); scanf&n);printf ("Inputarrdyeu'rT);Input Array (a, n);printf ("Inputarrayb: n");InputArray(b, n);Exchange (a, b, n);printf ("Afterswap:n);printfCArraya:n*);PrintAiray(a, n):printf (Arrayb: n");PrintArray(b, n);voidSwap(int*x, int*y)inttemp; temp=*x;*x=*y;*y

11、=temp;voidExchange(intd, intb, intn)inti;for(i=0;i<n;i+)Swap(&ai, &bi);voidlnputArray(inta, intn)inti;for(i=0;i<n;i+)scanf (”%d",&ai):voidPrintAzray (inta,intn)inti;for(i=0;i<n;i+)printf ai);printf Cn");3从键盘任意输入一个年号,判断它是否是闰年。若是闰年,输岀"YesS否则 输岀"No"。已知符合下列条

12、件之一者是闰年:能被4整除,但不能被100整除。能被400整除。#include<stdio. h>main()intyear, flag;printf("Enteryear:");scanf (”d", ftyear);if (year%4=0&&year%100! =01 I year%400=0)flag=l;elseflag=0;if (flag)printf ("Yes! n");elseprintf ("No!n");四. 在下面给出的4个程序中,共有15处错误(包括语法错误和逻辑错

13、误),请找出其中的错误,并改正之。(在错误的代码下边画一根横线,把正 确的代码写在旁边;漏掉的代码正确插入合适的位置。30分,每找对1个错 误,加1分,每修改正确1个错误,再加1分。)1.编程计算矩阵相乘之积。#include<stdio. h>#defineR0W2#defineC0L3/voidMultiplyMatrix(intaROWCOL, intbCOLROW, intcR0WROW h_ main ()intaEROWlCOL, bCOLROW, cROWROW, i, j; printf Clnputarraya:Xn);for(i=0;i<R0W;i+)fo

14、r(j=0;j<COL;j+)scanf("d", &aij);/%dprintf ("Inputarrayb: n");for(i=0;i<C0L;i+)for(j=0;j<ROW;j+)scanf ("d", &bi j);MultiplyMatrix (a, b, c); printf ("Results:n");for(i=0;i<R0W;i+)for(j=0;j<ROW;j+)printf("%6d", &cij):/cijprin

15、tf Cn*);voidMultiplyMatrix(intaROWCOL, intbCOLROW, intcROWROW) inti, j, k;for(i=0;i<R0W;i 卄)for(j=0;j<ROW;j+)for(k=0;k<C0L;k+) /ci j=O;ci j=cij+ai k*bj k:/bk j 2.编程输入10个数,找出其中的最大值及其所在的数组下标位置。#include<stdio. h>intFindMax(intnum, intn,int*pMaxPos);main ()intnum10, maxValue, maxPos, minV

16、alue, minPos, i/;printf ("Inpu110numbers: n");for(i=0;i<10;i+)scanf(”%d”, numi);/&numi maxValue=FindMax(num, 10, *maxPos):/ftmaxPos printf ("Max=%d, Position=%dn", maxValue, meixPos);intFindMax (intnum, intn, int*pMaxPos)inti, max;max=num0;for(i=l, i<n, i+)/i=l ; i<n

17、;if (numi>max)max=numi;*pMaxPos=i;returnmax;3. 韩信点兵。韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1 至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数 为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数, 最末一个士兵报的数为10。你知道韩信至少有多少兵吗?#include<stdio. h>main()intx;/x=0while(1)辻(x%5=lfe&x%6=5&&x%7=4&&x%l 1=10)/x%5=l&&x%6

18、=5&&x%7=4&&x%l 1=10break; x+/x+;printf ("x=%drT, x);4.下面函数Squeez ()的功能是删除字符串s中所出现的与变量c相同的字 符。voidSqueeze (chars , chare);/voidSqueeze (chars , chare)inti, j;j=0;for(i=0;si!= 0 ;i+)if (si !=, c") /csj=si;j+;si70;/sjY(V;或sji 0;五、编程(15分)从键盘任意输入某班10个学生的成绩,调用save函数把数据存入到以你的学 号命名

19、的磁盘文件中,然后打开该文件读岀数据,对成绩进行山高到低的排 序,并打印成绩不及格的学生人数。最后再次调用save函数把数据存入到原磁 盘文件中。要求按照如下给岀的函数原型进行编程:voidsave(floatscore, intn);voidSort(floatscore, intn);intFail(floatscore, intn);要求用一维数组做函数参数编程实现成绩排序和统讣成绩不及格的学生人 数,然后在主函数中打印这些结果,不能使用全局变量编程。参考程序如下:voidload(floatscore, intn)/3 分FILE*fp;inti;辻(fp二fopen (02406101", rb") =NULL)printf (,zcannotopeninf ilen,z);return;for(i=0;i<n;i+)if(fread(&scorei, sizeof(float),1,fp)!=1)if (feof (fp)fclose(fp);return;printf (z/filereaderrorn,z);fclose(fp);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论