第页(共3页)1学院:________专业:________入学年月:________姓名:________学号:________………………………………………………装…………………………订…………………………线………………………………………………东北师范大学2011年春季学期期末考试试卷课程名称:C语言程序设计试卷类型:A卷考试时间:90分钟考试方式:闭卷(卷面总分100分,占总成绩的50%)题号一二三四总分得分评卷人复核人得分一、单项选择题(每小题3分,共30分)12345678910得分二、阅读程序题(每小题5分,共20分)1234得分三、程序填空题(每空3分,共30分)12345678得分四、编程题(1小题8分,2小题12分,共20分)1.2.第页(共3页)2………………………………………………装…………………………订…………………………线………………………………………………一、单项选择题(每小题3分,共30分)1.有inta=5,b=6,c=7,表达式!(a+b)+c-1&&b+c/2________。A.1B.4C.9D.202.有int型变量a=20;b=18;执行a=(a--==b++)?a%5:a/5;后a的结果是________。A.0B.3.8C.4D.33.有intx=5,y=7,z;z=xy?53?++x+y:x:++x-y++则z的值为________。A.-3B.-2C.-1D.04.下列程序段执行后s值为:________。inti=6,s=1;doif(i%3)continue;elses+=i;while(--i);A.13B.10C.7D.以上均不是5.对于以下递归函数f,调用f(2)的返回值________。intf(intx){return((x=0)?x:f(x-1)+f(x-2));}A.-1B.0C.1D.36.下列程序的输出结果main(){char*str=abcde;printf(%c,*str);printf(%c,*str++);printf(%c,*++str);}A.aabB.aacC.abbD.abc7.已知有inta[3][4]={{1,3,5,7},{2,4,6,8},{3,6,9,12}},*p=&a[0][0];则表达式(*p+3)+*(p+3)的值为________。A.14B.11C.8D.68.设有以下定义的语句:inta[3][2]={10,20,30,40,50,60},(*p)[2];p=a;则*(*(p+2)+1)值为________。A.30B.40C.50D.609.以下程序的正确运行结果是________。f(inta){inti=0;staticintc=5;i++;c++;return(a+i+c);}main(){inta=5,i;for(i=0;i3;i++)printf(%4d,f(a));}A.121212B.121517C.121416D.12131410.对于以下宏定义,宏调用DD(3*3-1,2+3)执行后值为________。#defineSQ(x)x*x-3#defineDD(x,y)SQ(x)-SQ(y)A.39B.33C.0D.-4二、阅读程序题(每小题5分,共20分)1.下述程序运行后,将输出______________________。main(){inta,b;for(a=1,b=1;a=100;a=a+3){if(b=20)break;if(b%3==1){b+=3;continue;}}printf(%d\n,a);}2.下述程序运行后,将输出______________________。#defineN7main(){inti,j,temp,a[N]={1,2,3,4,5,6,7};for(i=0;iN/2;i++){j=N-1-i;temp=a[i];a[i]=a[j];a[j]=temp;}for(i=0;iN;i++)printf(%5d,a[N-i-1]);}3.以下程序运行后的输出结果是______________。#includestdio.hvoidfun(int*a,intn,intm){intt;while(nm){t=*(a+n);*(a+n)=*(a+m);*(a+m)=t;n++;m--;}}voidmain(){inti;staticints[]={0,1,2,3,4,5};fun(s,0,3);fun(s,2,5);for(i=0;i6;i++)printf(%5d,s[i]);}第页(共3页)3………………………………………………装…………………………订…………………………线………………………………………………4.以下程序运行后的输出结果是_____________。#defineN50main(){inti,j,k,a[N+1],*p;for(i=0,p=a;p=a+N;i++,p++)*p=i;p=a+1;k=N;for(i=0,j=1;k!=1;j++){if(p(a+N))p=a+1;if(*p!=0)i++;if((i-3)==0){*p=0;i=0;k--;}p++;}for(i=1;i=N;i++)if(a[i]!=0)printf(%d\n,a[i]);}三、程序填空题(每空3分,共30分)1.由键盘输入N名学生姓名,再按字典排列输出结果。#includestring.hmain(){charname[10][13],temp[13];inti,k,j,ch;for(i=0;_______①_______;i++){printf(请输入第%d名学生的姓名:\n,i+1);_______②_______;}for(i=0;i9;i++){k=i;for(_______③_______;j10;j++)if(_______④_______)k=j;if(k!=i){strcpy(temp,name[k]);strcpy(name[k],name[i]);strcpy(name[i],temp);}}printf(10名学生的姓名按字典排列结果:\n);for(i=0;i10;i++)printf(\n%s,name[i]);}2.创建链表,并输入数据。structnode{intdata;structnode*next;};structnode*creatlink()//建立链表;{structnode*head,*p,*t;intnum;head=(structnode*)malloc(sizeof(structnode));_______⑤_______;p=head;while(scanf(%d,&num)!=0){t=(structnode*)malloc(sizeof(structnode));t-data=num;_______⑥_______;p-next=t;_______⑦_______;}return_______⑧_______;}main(){structnode*head,*p;head=creatlink();p=head-next;while(_______⑨_______){printf(%d-,p-data);_______⑩_______;}printf(NULL\n);}四、编程题(1小题8分,2小题12分,共20分)1.判断输入的任意整数x是否为回文数。回文数:顺读与反读都一样的数。2.从number.txt文件中读字符,内有数字和非数字字符,如:a1234c569878?&321wer23将其中连续的数字作为一个整数,依次存放到一维数组a中。例如1234放在a[0]中,56放在a[1]中……统计共有多少个整数,并输出这些数。要求:运用函数调用实现将连续的数字作为一个整数,依次存放到一维数组。