您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C语言程序设计试卷及答案
第1页(共14页)C语言程序设计笔试试题题号一二三四五六笔试(70%)综合(30%)总分分数试卷说明:1.笔试卷面总分100分,取卷面成绩的70%计入总分;2.综合成绩为平时成绩(10%)和实验成绩(20%)之和,占总分的30%;3.答题时禁止拆开试卷钉,试卷背面即为草稿纸;4.答题时间120分钟。一、单项选择题。将正确答案填入下面框中。(本题16分,每小题1分)题号12345678答案题号910111213141516答案1.有以下程序main(){inta=1,b=0;if(!a)b++;elseif(a==0)if(a)b+=2;elseb+=3;printf(“%d\n”,b);}则程序输出(A)。A)0B)1C)2D)32.有以下定义:inta;longb;doublex,y;则下列正确的是(A)。A)a%(int)(x-y)B)a=x!=yC)(a*y)%bD)y=x+y=x3.若有定义int(*p)[3];则下列说法正确的是(C)。号学名姓注意行为规范遵守考试纪律第2页(共14页)A)定义了基类型为int的三个指针变量B)定义了一个名为*pt、具有三个元素的整型数值C)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组D)定义了基类型为int的具有三个元素的整型数组4.有以下程序段main(){intx=10;while(x--);printf(x=%d\n,x);}则最后的输出结果是:(B)。A)x=0B)x=-1C)x=1D)while构成无限循环5.有以下程序:intfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i=2;i++)s=fun();printf(“%d\n”,s);}执行后的输出结果为(D)。A)0B)1C)8D)46.voidmain(){intk=011;printf(%d\n,k++);}}程序输出结果是(D)A)12B)11C)10D)97.以下C语言标识符中,不合法的是(C)。A)_2B)a_bC)a--bD)AaBc8.C语言允许函数类型默认定义,此时该函数值隐含的类型是(B)。A)floatB)intC)longD)double9.以下程序段运行结果是(B)。enumweekday{aa,bb=2,cc,dd,ee}week=ee;第3页(共14页)printf(“%d\n“,week);A)4B)5C)eeD)010.以下对C语言函数的描述中,不正确的是(B)。A)不同函数中可以使用相同名字变量B)函数可以嵌套定义C)函数可以没有返回值D)程序由函数组成11.若有定义语句:doublex[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是(D)。A)*pB)*xC)*(p+1)D)x[5]12.以下程序段运行结果是(B)。inta=6;printf(“%d\n“,a1);A)12B)3C)6D)113.若有定义语句:doublex,y,*px,*py;执行了px=&x;py=&y;之后,正确的输入语句是(B)。A)scanf(“%lf%lf”,x,y);B)scanf(“%lf,%lf”,px,py);C)scanf(“%f%f”,&x,&y);D)scanf(“%f%f”,x,y);14.以下程序运行结果是(D)。charstr[]=“abc“;printf(“%d,%d\n“,strlen(str),sizeof(str));A)6,3B)3,3C)10,10D)3,1015.以下程序段运行结果是(A)。#definef(x)x*x*xmain(){inta=1,b,c;b=f(a+1);c=f((a+1));printf(“%d,%d\n“,b,c);}A)4,8B)8,4C)8,8D)4,416.有以下程序:main(){FILE*f;f=fopen(“fa.txt“,“w“);fprintf(f,“day“);fclose(f);}第4页(共14页)若文本文件fa.txt中原有内容为:hello,则运行以上程序后,文件fa.txt中的内容为(A)。A)dayB)hellodayC)dayloD)dayhello二、填空题。请按序号把答案填入下面框中,不允许出框线。(本题20分,每空2分)题号答案题号答案1a[row][col]6k=n2x%10或x%100%107k++323hE45a8m%i==0&&n%i==04fun()9p=p-next5m++10s[i]或’\0’1.以下fun函数功能是在N行M列的整型二维数组中,选出一个最大值作为函数值返回。intfun(inta[N][M]){inti,j,row=0,col=0;for(i=0;iN;i++)for(j=0;jM;j++)if(a[i][j]a[row][col]){row=i;col=j;}return(【1】);}2.以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位,百位的顺序拆分输出。main(){intx=123;printf(“%d-%d-%d\n”,【2】,x/10%10,x/100);}3.下列程序运行时,若输入23he45a回车,输出结果是【3】#includestdio.hmain(){chara=0;ch;while((ch=getchar())!=’\n’)第5页(共14页){if(a%2!=0&&(ch=’a’&&ch=’z’))ch=ch-‘a’+’A’;a++;putchar(ch);}printf(“\n”);}4.以下程序的功能是,通过函数fun输入字符并统计输入字符个数。用字符$作为输入结束标志。#includestdio.hlong【4】;/*函数声明语句*/main(){longn;n=fun();printf(“n=%ld\n”,n);}longfun(){longm;for(m=0;getchar()!='$';【5】);returnm;}5.有以下程序段,且变量已正确定义和赋值for(s=1.0,k=1;k=n;k++)s=s+1.0/(k*(k+1));printf(s=%f\n\n,s);请填空,是下面程序段的功能与之完全相同s=1.0;k=1;while(【6】){s=s+1.0/(k*(k+1));【7】;}printf(s=%f\n\n,s);6.以下函数的功能是求两个整数的最大公约数。fun(intm,intn){inti=1,t;for(;i=m&&i=n;i++)if(【8】)t=i;return(t);}7.以下程序将三个structnode型变量链接成一个链表,并在while循环中输出链表节点数据域中的数据。structnode{intdata;structnode*next;}main(){structnodea,b,c,*p,*q;第6页(共14页)a.data=10;b.data=20;c.data=30;p=&a;a.next=&b;b.next=&c;c.next=NULL;q=p;while(p){printf(“%d,”,p-data);【9】;}printf(“\n”);}8.以下程序的功能是:删除字符串中所有的空格。main(){chars[20]=”howareyou!”;inti,j;for(i=j=0;s[i]!=’\0’;i++)if(s[i]!=’’){s[j]=s[i];j++;}s[j]=【10】;}三、请把下列程序运行结果填入答案框中,不允许出框线,用“↙”表示回车。(本题24分,每小题3分)1.main(){inti,j,a[][2]={1,2,3,4};for(i=0;i2;i++)for(j=i;j2;j++)printf(“%d”,a[i][j]);printf(“\n”);}2.main(){charch[]=”453cd34”;inti,s=0;for(i=0;ch[i]’0’&&ch[i]’9’;i+=2)s=10*s+ch[i]-’0’;printf(“%d\n”,s);}3.longfib(intn){if(n2)return(fib(n-1)+fib(n-2));elsereturn(2);}voidmain(){printf(“%d\n”,fib(4));}题号12345678答案124436412155555304第7页(共14页)4.main(){unionexample{struct{intx;inty;}in;inta;intb;}e;e.a=2;e.b=1;e.in.x=e.a+e.be.in.y=e.a*e.b;printf(“%d\n”,e.in.y);}5.structNODE{intk;structNODE*link;};voidmain(){structNODEm[3],*p=m,*q=m+2;inti=0;while(p!=q){p-k=++i;p++;q-k=i++;q--;}q-k=i;for(i=0;i3;i++)printf(“%d”,m[i].k);printf(“\n”);}6.main(){intj,a[]={1,3,5,7,9},*p=a+3;for(j=3;j;j--){switch(j){case1:case2:printf(%d,*(p++));case3:printf(%d,*(--p));}}}第8页(共14页)7.main(){intx;for(x=1;x=50;x++)if(x%2==0)if(x%3==0)if(x%5==0)printf(%d,x);}8.main(){inta,b;for(a=1,b=1;a=50;a++){if(b8)break;if(b%3==1){b+=3;continue;}b-=5;}printf(%d\n,a);}四、根据功能描述改正程序中的错误。不得增行或删行,不得更改程序结构。(本题10分)1.下列给定程序中,函数fun的功能是:实现两个整数的交换。例如给a和b分别输入60和65,输出为:a=65b=60。(本小题6分)#includeconio.h#includestdio.hvoidfun(inta,b){intt;t=b;b=a;a=t;}main(){inta,b;printf(Entera,b:);scanf(%d%d,a,b);fun(&a,&b);printf(a=%db=%dn,a,b);}第9页(共14页)答案:scanf(%d%d,a,b);改为:scanf(%d%d,&a,&b);------2分fun(inta,b)改为:fun(int*a,int*b)------2分t=b;b=a;a=t;改为:t=*b;*b=*a;*a=t;------2分2.下述代码定义了一个结构体STRU,用其声明指针变量*s,并完成对这个指针变量的赋值、输出的任务。请指出下列程序的错误,并予以更正(本小题4分)structSTRU{intnum;charname[20];floatscore;*p1;};main(){STRU*s=(structSTRU*)malloc(sizeof(structSTRU));s.num=123;s-name=”zhang”;s-score=61.5;printf(“num=%d,name=%s,score=%f”,s-num,s-name,s-score);}答案:s.num=123;改为:s-num或(*s).sum------2分s-name=”zhang”;改为:strcpy(s-name,”zhang”)------2分五、请用标准程序流程图描述下列问题的算法(本题10分)依次从键盘输入30个学生的《计算机实用基础》成绩,请分别统计不及格的人数和优秀(成绩不小于90)的人数,并打印输出统计结果。答案:第10页(共14
本文标题:C语言程序设计试卷及答案
链接地址:https://www.777doc.com/doc-7025751 .html