安徽大学计算机科学与技术专业2018-2019学年第2期《C语言程序设计》(A卷)期末考试【含答案】16633.pdf
.装.订.线.C 语言程序设计第 1 页共 5 页 此处不能书写 此处不能书写 此处不能书写 此处不能书写 此处不能书写 安徽大学计算机科学与技术 2018-2019 学年第 2 期 C 语言程序设计(A 卷)期末考试 班级名称:学号:姓名:题号 一 二 三 四 五 总分 分数 得 分 一、单项选择题(每题2分,共20分)1.执行程序:int a;printf(“%d n”,(a=3*5,a*4,a+5);后,a的值是()A、60 B、20 C、15 D、10 2.程序段:int x=023;printf(“%d n”,-x)的输出是()A、19 B、18 C、23 D、22 3.程序段:static char s10=C,h,i,n,a;printf(“%d n”,strlen(s);输出的是()A、6 B、5 C、11 D、10 4.若fun(int x)printf(“%d,x”);,则fun()A、返回值为void类型 B、返回值类型无法确定 C、返回值为int类型 D、没有返回值 5.有宏定义:#define MULT1(a,b)a*b#define MULT2(a,b)(a)*(b)且引用宏:y=MULT1(3+2,5+8);z=MULT2(3+2,5+8);则y和z的值是()A、y=65,z=65 B、y=21,z=65 C、y=65,z=21 D、y=21,z=21 6.程序段char s=”Hello”,*p;p=s;执行后,*(p+5)的值是()A、o B、0 C、0的地址 D、不确定的值 7.程序段:char*s=”ABCD”,*p for(p=s;*p;p+)printf(“%sn”,p);的输出是()A、ABCD BCD CD D B、A B C D C、D C B A D、ABCD ABC AB A 8.若定义:int(*p)3;则标识符p()A、定义不合法 B、是一个指针数组名,每个元素是一个指向整型变量的指针 C、是一个指针,它指向一个具有三个元素的一维数组.装.订.线.C 语言程序设计第 2 页共 5 页 此处不能书写 此处不能书写 此处不能书写 此处不能书写 此处不能书写 D、是一个指向整型变量的指针 9.定义:struct skint a;float b;data,*p;p=&data;则正确引用成员a的方式是()A、p.data.a B、(*p).a C、p-data.a D、(*p).data.a 10.以二进制只读方式打开一个已有的文本文件file1,正确调用fopen函数的方式是()A、FILE*fp;fp=fopen(“file1”,”rb”);B、FILE*fp fp=fopen(“file1”,”r+);C、FILE*fp;fp=fopen(“file1”,”r”);D、FILE*fp;fp=fopen(“file1”,”rb+”);得 分 二、填空题(每空1分,共20分)1.C程序一个函数的定义由()和()两部分组成。2.C语言的整型变量可分为基本型、短整型、()和()。3.C语言在判断一个量是否为“真”时,以()代表“假”,以()代表“真”。4.C语言中的break语句只能用于()和()语句。5.对()和()型数组不赋初值,系统会对所有元素自动赋以0值。6.C语言中“文件包含”是通过()命令完成的,而符号常量是通过()命令定义的。7.对于数组x55,*(x+2)+3表示(),*(x3+2)表示()。8.若定义:structint y,m,d;today,*pdate;则为today分配内存()字节,为pdata分配内存()字节。9.C语言文件按数据的存放形式可分为()文件和()文件。10.C语言文件是一个()序列,这类文件称为()文件。得 分 三、程序归纳题(每小题2分,共10分)阅读下列函数,总结其主要功能填在答题卡相应的横线上。1.int fun1(char*str)char*ptr=str;while(*ptr+);return ptr-str-1;2.double fun2(double x,double y,double z)return x(yz?y:z)?x:(yz?y:z);3.void funs3(int num,int size)int i=0,tmp;while(i=a&*ps0&*ps*9)a2+;p+;printf(“%d,%d n”,a1,a2)得 分 四、程序分析题(每小题2分,共10分)1.#include stdio.h void main()static int a=1,2,3,4,5,6,*p;p=a;*(p+3)+=2;printf(%d,%dn,*p,*(p+3);2.#include stdio.h void main()int x=1;int x=2;int x=3;printf(%2d,x);printf(%2d,x);print(%2d,x);3.#include#include void sort(char*str,int n)char*tmp;int i,j;for(j=0;in-1;i+)for(j=0;j0)tmp=strj,strj=strj+1,strj+1=tmp;void main()char*ps,*str3=BOOK,COMPUTER,CHINA;int i;ps=str;sort(ps,3);for(i=0;i3;i+)printf(%d%s,i+1,stri)4.#include int leap_year(int year)return year%4=0&year%100!=0|year%400=0;void main()int month_day=31,28,31,30,31,30,31,31,30,31,30,31,days,i;struct date.装.订.线.C 语言程序设计第 4 页共 5 页 此处不能书写 此处不能书写 此处不能书写 此处不能书写 此处不能书写 int year;int month;int day;mdate=2008,5,1;if(leap_year(mdate.year)month_day1+;for(i=1,days=mdate.day;imdate.month;i+)days+=month_dayi-1;printf(%d-%d is the%dth day in%d,mdate.month,mdate.day,mdate.year);5.#include void add(int*x,int*y,int n)while(n-)*x+=*y+;void main()int i=5;static int s1=2,1,0,3,2,s25;add(s2,s1,5);while(i-)printf(%2d,s2i);得 分 五、程序设计题(每小题10分,共40分)阅读下列程序,在指定位置上填入适当的内容使程序完整。请勿改动其他内容。请将正确答案填在答题卡上。1.函数insert将一个指定的单精度数按递减规律插入数组num中,注:数组num中已有12个按照递减顺序排好的单精度数。void insert(float num13,float new)int i=11;/*answer begin*/./*answer end*/2.编写函数mycmp实现库函数strcmp的功能:两个字符串的比较。int mycmp(char*p1,char*p2)/*answer begin*/./*answer end*/3.设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。#include struct person char name20;int count;leader3=Li,0,Zhang,0,Wang,0;main()int i,j;char leader_name20;for(i=1;i=10;i+)/*answer begin*/./*answer end*/.装.订.线.C 语言程序设计第 5 页共 5 页 此处不能书写 此处不能书写 此处不能书写 此处不能书写 此处不能书写 for(i=0;i3;i+)printf(%5s:%dn,leaderi.name,leaderi.count);4.从键盘上输入一个字符串,将其中的小写字母转换成大写字母,然后输出到名为“test”的文本文件中保存。输入字符串以“!”结束。#include void main()inti;char str80;FILE*fp;if(fp=fopen(test,w)=NULL)printf(cannot open filen);exit(0);printf(Input a string(end with!):);gets(str);/*answer begin*1 ./*answer end*1 安徽大学计算机科学与技术 2018-2019 学年第 2 期 C 语言程序设计(A 卷)期末考试答案 一、单项选择题(每题 2 分,共 20 分)1 2 3 4 5 6 7 8 9 10 C B B C B B A C B A 二、填空题(每空 1 分,共 20 分)1 2 3 4 5 函数说明 函数体 长整型 无符号型 0 6 7 8 9 10 非0 switch 循环 extern static 11 12 13 14 15#include#define&xx3 x32 6 16 17 18 19 20 2 文本 二进制 字符(字节)流式 三、程序归纳题(每小题 2 分,共 10 分)1、求字符串长度 2、求 3 个 double 型数中的大数 3、翻转整型数组 4、复制字符串 5、统计指定字符串中小写字母、数字的个数 四、程序分析题(每小题 2 分,共 10 分)1、1,6 2、3 2 1 3、1 BOOK 2 CHINA 3 COMPUTER 4、5-1 is the 122th day in 2008 5、2 3 0 1 2 五、程序设计题(每小题 10 分,共 40 分)1.num12=new;while(i=0&datajdatai+1)new=numi+1;numi+1=numi;numi=new;i-;存储新值:2分 循环至插入点:2分 暂存新值:1分 更新旧值:2分 更新新值:1分 循环计数:1分 2.while(*p1&*p2&*p1=*p2)p1+,p2+;return*p1-*p2;依次比较两个字符串直至结束:6分 更新位置指示:2分 返回差值:2分 3.scanf(%s,leader_name);for(j=0;j=a&stri=z)stri-=32;printf(Writting%s into file test,str);fputs(str,fp);fclose(fp);依次比较各字符直到字符串结束:2分 判断是否是小写字母:2分 转换为大写字母:2分 将字符串存储到文件中:2分 关闭文件:2分