您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > C语言程序设计期末考试试题及答案
C语言程序设计试题(2008/2009学年第二学期)一二三四五六七八九十总分一.选择题(满分30分,每题2分)1.若a、b、c都定义为int类型且初值为0,则以下不正确的赋值语句是D。A.a=b=c+8;B.a+=y+3;C.c++;D.a+b+c2.已知intj,i=1;执行语句“j=i++;”后,变量i的值是B。A.1B.2C.–1D.-23.执行下面程序:#includestdio.hvoidmain(){inta=1,b=2,c=3;c=(a+=a+2),(a=b,b+3);printf(“%d,%d,%d”,a,b,c);}则输出结果是:A。A.2,2,4B.4,2,3C.5,5,3D.4,2,54.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为D。A.a0B.!aC.a=0D.a5.for(j=0;j11;j++);循环结束后,j的值是B。A.12B.11C.10D.96.C语言中函数返回值的类型由D决定的。A.return语句中的表达式类型B.调用该函数的主调函数的类型C.调用函数时临时决定D.定义函数时所指定的函数类型7.下列说法中正确的是B。A在调用用户自定义函数时,必须对其进行声明。B函数可以返回一个值,也可以什么值也不返回。C说明函数时,必须明确参数的类型和返回值。D在程序设计中空函数没有什么作用。8.若inti=10;执行下列程序后,变量i的正确结果是D。switch(i){case0:i+=1;case10:i+=1;case11:i+=1;default:i+=1;}A.10B.11C.12D.139.下列语句中不正确的字符串赋值或初始化的是C。A.charstr[10]={strings};B.charstr[8]={'s','t','r','i','n','g','s','\0'};C.charstr[10];str=strings;D.charstr[]=strings;10.有如下程序:#includestdio.hvoidmain(){inta=1,b=0,c=0;if(ab)if(b0)c=0;elsec++;printf(“%d\n”,c);}该程序的运行结果是D。A.3B.2C.1D.011.在函数调用,对参数传递的说法正确的是A。A实参和形参各占一个独立的存储单元。B实参和形参始终共用一个相同的存储单元。C可以由用户指定实参和形参是否共用一个存储单元。D可以由系统指定实参和形参是否共用一个存储单元12.以下正确的程序段是C。A.charstr1[]=12345,str2[]=abcdef;strcpy(str1,str2);B.charstr[10],*st=abcde;strcat(str,st);C.charstr[10]=,*st=abcde;strcat(str,st);D.char*st1=12345,*st2=abcde;strcat(st1,st2);13.若有定义:int*p[4];则标识符pB。A.是一个指向整型变量的指针B.是一个指针数组名C.是一个指针,它指向一个含有四个整型元素的一维数组D.说明不合法班级学号姓名得分装订线14.以下程序的运行结果是C。typedefunion{longa[1];intb[2];charc[8];}TEST;TESTm;main(){printf(“%d\n”,sizeof(m));}A.32B.16C.8D.2415.设有以下结构体类型:structst{charname[8];intnum;floats[4];}student[50];并且结构体数组student中的元素都已有值,若要将这些元素写到硬盘文件t中,以下不正确的形式是C。A.fwrite(student,sizeof(structst),50,fp);B.fwrite(student,50*sizeof(structst),1,fp);C.fwrite(student,25*sizeof(structst),25,fp);D.for(i=0;i50;i++)fwrite(student+i,sizeof(structst),1,fp);二、填空题(满分20分,每空2分)1.每个C语言编写的程序必须有一个,并且只能有一个主函数。2.设x和y均为int型变量,且x=1,y=2,则表达式3+x/y的值为3。3.若有定义:inta[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是4。4.设x=0xAB,若要通过x|y使x低4位置1,高4位不变,则y=0x0F。5.测试char型变量m的最高位数据是否为1的表达式是a&0x80。6.若x=2,y=-3则x&&y的结果是1。7.与二进制数101等值的十进制数为5。8.定义inti=1;执行语句while(i++5);后,i的值为6。9.下面程序的运行结果为22222。#includestdio.hvoidmain(){inti=2,j=5,s;s=i;for(;--j;)s=s*10+i;printf(“%d”,s);}10.写出程序的执行结果:i=10,j=11main(){inti=0,j=0;while(i10)i++;while(j++10);printf(“i=%d,j=%d\n”,i,j);}三、读程序写结果(满分16分,每题4分)1.判断下面程序的运行结果。#includestdio.hvoidmain(){inta=0,b=1;intfun(inta,intb);printf(%d\n,fun(a,b));printf(%d\n,fun(a,b));}intfun(intm,intn){statics=1;s++;return(s*(m+n));}2程序运行的结果为:3。班级学号姓名得分得分装订线2.以下程序的输出结果是3,2。#includestdio.hstructchain{intx;inty;structchain*p;}m[2];voidmain(){m[0].x=1;m[0].y=2;m[1].x=3;m[1].y=4;m[0].p=&m[1];m[1].p=m;printf(%d,%d\n,(m[0].p)-x,(m[1].p)-y);}3.下面程序的运行结果是。#includestdio.h#includestring.hvoidfun(char*w,intn){chart,*s1,*s2;s1=w;s2=w+n-1;while(s1s2){t=*s1;*s1=*s2;*s2=t;s1++;s2--;}}voidmain(){charp[]=1234567;fun(p,strlen(p));puts(p);}4.下面程序的输出结果为4,2。#includestdio.hstructks{inta;int*b;}s[4],*p;voidmain(){intn=1,i;printf(\n);for(i=0;i4;i++){s[i].a=n;s[i].b=&s[i].a;n=n+1;}p=&s[0];p++;printf(%d,%d\n,(++p)-a,(p++)-a);}四、程序设计(满分34分)1.编写一个程序,判断某一年是否为闰年。(6分)#includestdio.hvoidmain(){intyear;printf(“inputyear=”);scanf(“%d”,&year);if((year%4==0&&year%100!0)||year%400==0)printf(“%4disaleapyear\n”,year);elseprintf(“%4disnotaleapyear\n”,year);}班级学号姓名得分装订线装订线2.用公式求的近似值,直到最后一项的绝对值小于为止,请编程实现。(8分)#include“math.h”voidmain(){ints;floatn,t,pi;t=1;pi=0;n=1.0;s=1;while((fabs(t))1E-6){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;printf(“pi=%10.6f\n”,pi);}3.编写程序,利用子函数实现计算字符串的长度。(10分)#includestdio.hintlength(char*s);voidmain(){chara[100];inti;printf(Pleaseinputthestring:\n);gets(a);i=length(a);printf(\nThelengthofstringis%d,i);}intlength(char*s){char*p=s;while(*p)p++;return(p-s);}4.将一个整数字符串转换为一个整数,如-1234转换为-1234。(10分)#includestdio.h#includestring.hintchnum(char*p);voidmain(){chars[6];intn;gets(s);if(*s=='-')n=-chnum(s+1);elsen=chnum(s);printf(%d\n,n);}chnum(char*p){intnum=0,k,len,j;len=strlen(p);for(;*p!='\0';p++){k=*p-'0';j=(--len);while(j--0)k=k*10;num=num+k;}return(num);}班级学号姓名装订线
本文标题:C语言程序设计期末考试试题及答案
链接地址:https://www.777doc.com/doc-6190176 .html