您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > 《C语言程序设计》期末考试试卷
安徽大学20-20学年第学期《C语言程序设计》期末考试试卷(B卷120分钟)年级院系专业姓名学号座位号题号一二三四五六七八得分得分得分一.单项选择题:(每题2分,共20分)下列各题A)、B)、C)、D)四个选项中只有一个是正确的,请将正确选项填在答题卡相应题目的横线上。答在试卷上不得分。1.执行程序:inta;printf(%d\n,(a=3*5,a*4,a+5));后,a的值是______。A)60B)20C)15D)102.程序段:intx=023;printf(%d\n,--x);的输出是______。A)19B)18C)23D)223.程序段:staticchars[10]={'C','h','i','n','a'};printf(%d\n,strlen(s));的输出是______。A)6B)5C)11D)104.若fun(intx){printf(“%d\n”,x);},则fun_______。A)返回值为void类型B)返回值类型无法确定C)返回值为int类型D)没有返回值5.有宏定义:#defineMULT1(a,b)a*b#defineMULT2(a,b)(a)*(b)且引用宏:y=MULT1(3+2,5+8);z=MULT2(3+2,5+8);则y和z的值是______。A)y=65,z=65B)y=21,z=65C)y=65,z=21D)y=21,z=216.程序段chars[]=Hello,*p;p=s;执行后,*(p+5)的值是______。A)'o'B)'\0'C)'o'的地址D)不确定的值7.程序段:char*s=”ABCD”,*p;for(p=s;*p;p++)printf(%s\n,p);的输出是______。A)ABCDB)AC)DD)ABCDBCDBCABCCDCBABDDAA8.若定义:int(*p)[3];则标识符p______。A)定义不合法。B)是一个指针数组名,每个元素是一个指向整型变量的指针。C)是一个指针,它指向一个具有三个元素的一维数组。D)是一个指向整型变量的指针。9.定义:structsk{inta;floatb;}data,*p;且p=&data;则正确引用成员a的方式是______。A)p.data.aB)(*p).aC)p-data.aD)(*p).data.a10.以二进制只读方式打开一个已有的文本文件file1,正确调用fopen函数的方式是______。A)FILE*fp;B)FILE*fp;fp=fopen(file1,rb);fp=fopen(file1,r+);C)FILE*fp;D)FILE*fp;fp=fopen(file1,r);fp=fopen(file1,rb+);得分二.填空题:(每空1分,共20分)请将正确答案填在答题卡相应题目的横线上。答在试卷上不得分。1.C程序一个函数的定义由__________和____________两部分组成。2.C语言的整型变量可分为基本型、短整型、________和________。3.C语言在判断一个量是否为“真”时,以____代表“假”,以____代表“真”。4.C语言中的break语句只能用于______和______语句。5.对________和________型数组不赋初值,系统会对所有元素自动赋以0值。6.C语言中“文件包含”是通过____________命令完成的,而符号常量是通过____________命令定义的。7.对于数组x[5][5],*(x+2)+3表示__________,*(x[3]+2)表示__________。8.若定义:struct{inty,m,d;}today,*pdata;则为today分配内存____字节,为pdata分配内存____字节。9.C语言文件按数据的存放形式可分为________文件和_________文件。10.C语言文件是一个________序列,这类文件称为_________文件。得分三.程序归纳题(每题2分,共10分)阅读下列函数,总结其主要功能填在答题卡相应的横线上。答在试卷上不得分。1.intfun1(char*str){char*ptr=str;while(*ptr++);returnptr-str-1;}2.doublefun2(doublex,doubley,doublez){returnx(yz?y:z)?x:(yz?y:z);}3.voidfuns3(intnum[],intsize){inti=0,tmp;while(isize/2)tmp=num[i],num[i]=num[size-i-1],num[size-i-1]=tmp,i++;}4.voidfun4(char*f,char*t){for(;*f!='\0';f++,t++)*t=*f;*t='\0';}5.voidfun5(char*ps){inta1=0,a2=0;while(*ps!='\0'){if(*ps='a'&&*ps='z')a1++;elseif(*ps='0'&&*ps='9')a2++;p++;}printf(%d,%d\n,a1,a2);}得分四.程序分析题(每题2分,共10分)阅读程序,将其运行结果填在答题卡相应题目的横线上。答在试卷上不得分。1.#includestdio.hvoidmain(){staticinta[]={1,2,3,4,5,6},*p;p=a;*(p+3)+=2;printf(%d,%d\n,*p,*(p+3));}2.#includestdio.hvoidmain(){intx=1;{intx=2;{intx=3;printf(%2d,x);}printf(%2d,x);}printf(%2d,x);}3.#includestdio.h#includestring.hvoidsort(char**str,intn){char*tmp;inti,j;for(i=0;in-1;i++)for(j=0;jn-i-1;j++)if(strcmp(str[j],str[j+1])0)tmp=str[j],str[j]=str[j+1],str[j+1]=tmp;}voidmain(){char**ps,*str[3]={BOOK,COMPUTER,CHINA};inti;ps=str;sort(ps,3);for(i=0;i3;i++)printf(%d%s,i+1,str[i]);}4.#includestdio.hintleap_year(intyear){returnyear%4==0&&year%100!=0||year%400==0;}voidmain(){intmonth_day[]={31,28,31,30,31,30,31,31,30,31,30,31},days,i;structdate{intyear;intmonth;intday;}mdate={2008,5,1};if(leap_year(mdate.year))month_day[1]++;for(i=1,days=mdate.day;imdate.month;i++)days+=month_day[i-1];printf(%d-%disthe%dthdayin%d,mdate.month,mdate.day,days,mdate.year);}5.#includestdio.hvoidadd(int*x,int*y,intn){while(n--)*x+++=*y++;}voidmain(){inti=5;staticints1[]={2,1,0,3,2},s2[5];add(s2,s1,5);while(i--)printf(%2d,s2[i]);}得分五.程序设计题(每题10分,共40分)阅读下列程序,在指定位置上填入适当的内容使程序完整。请勿改动其它内容。请将正确答案填在答题卡上。答在试卷上不得分。1.函数insert将一个指定的单精度数按递减规律插入数组num中,注:数组num中已有12个按照递减顺序排好序的单精度数。voidinsert(floatnum[13],floatnew){inti=11;/***answerbegin***/……/***answerend***/}2.编写函数mycmp实现库函数strcmp的功能:两个字符串的比较。intmycmp(char*p1,char*p2){/***answerbegin***/……/***answerend***/}3.设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。#includestring.hstructperson{charname[20];intcount;}leader[3]={“Li”,0,“Zhang”,0,”Wang“,0};main(){inti,j;charleader_name[20];for(i=1;i=10;i++){/***answerbegin***/……/***answerend***/}for(i=0;i3;i++)printf(%5s:%d\n,leader[i].name,leader[i].count);}4.从键盘上输入一个字符串,将其中的小写字母转换成大写字母,然后输出到名为“test”的文本文件中保存。输入字符串以“!”结束。#includestdio.hvoidmain(){inti;charstr[80];FILE*fp;if((fp=fopen(test,w))==NULL){printf(cannotopenfile\n);exit(0);}printf(Inputastring(endwith!):);gets(str);/***answerbegin***/……/***answerend***/}参考答案:一.单项选择题:(每题2分,共20分)CBBCBBACBA二.填空题:(每题2分,共20分)1函数说明2函数体3长整型4无符号型506非07switch8循环9extern10static11#include12#define13&x[2][3]14x[3][2]15616217文本18二进制19字符(字节)20流式三.程序归纳题(每题2分,共10分)1求字符串长度2求3个double型数中的大数3翻转整型数组4复制字符串5统计指定字符串中小写字母、数字的个数四.程序分析题(每题2分,共10分)11,6232131BOOK2CHINA3COMPUTER45-1isthe122thdayin2008523012注:标点符号错误不另扣分五.程序设计题(每题10分,共40分)1.num[12]=new;存储新值:2分while(i=0&&data[i]data[i+1])循环至插入点:2分{复合语句:1分new=num[i+1];暂存新值:1分num[i+1]=num[i];更新旧值:2分num[i]=new;更新新值:1分i--;循环计数:1分}2.while(*p1&&*p2&&*p1==*p2)依次比较两个字符串直至其结束:6分p1++,p2++;更新位置指示:2分return*p1-*p2;返回差值:2分3.scanf(%s,leader_name);唱票:2分for(j=0;j3;j++)循环寻找得票人:2分if(strcmp(leader_name,leader[j].name)==0)寻找得票人:4分leader[j].count++;更新得票人票数:2分4.for(i=0;str[i]!='!';i++)依次比较各字符直至字符串结束:2分if(str[i]='a'&&str[i]='z')判断是否是小写字母:2分str[i]-=32;转换为大写字母:2分printf(Writting%sintofiletest,str);fputs(str,fp);将字符串存储到文件中:2分fclose(fp);关闭文件:2
本文标题:《C语言程序设计》期末考试试卷
链接地址:https://www.777doc.com/doc-2864504 .html