1、参考答案(B)参考答案(B)一、选择题(每题 2 分,共 20 分)一、选择题(每题 2 分,共 20 分)BADDC ACABC二、读程序写结果(每题 5 分,共 20 分)二、读程序写结果(每题 5 分,共 20 分)1.9 2.AbCdEf 3.4-1 4.127348569三、程序填空题(共 20 个空,每空 3 分,共 60 分)三、程序填空题(共 20 个空,每空 3 分,共 60 分)1.(1)num!=0?0:1 (2)t (3)num=-num (4)num%10+0 (5)pstri=02.(1)down=up (2)(down+up)/2 (3)return m (4)-
2、1 (5)search(a,13,f)3.(1)s=0 (2)b=a%10 (3)a=a/10 (4)s=i (5)c%3=04.(1)0 (2)i-j+1 (3)jt.len (4)i-j (5)s.len-t.len四、程序设计题(4 小题,前 2 题各 10 分,后 2 题各 15 分,共 50 分)四、程序设计题(4 小题,前 2 题各 10 分,后 2 题各 15 分,共 50 分)1.#includeint Isprime(int n)int i;for(i=2;in;i+)if(n%i=0)return 0;return 1;int reverse(int n)int s=0;w
3、hile(n)s=s*10+n%10;n=n/10;return s;void main()int i,c=0;for(i=2;i10000;i+)if(Isprime(i)&i=reverse(i)printf(%dn,i);c+;printf(number=%dn,c);2.void Reverse(char*s,int len)char t;if(len=t_start)interval=24*3600-t_start+t_end;else interval=t_end-t_start;c=interval/60;if(interval%60)c+;return c*0.08;4.(1)
4、void input(ACCOUNT*s,int n)int i;for(i=0;in;i+)scanf(%ld%s%lf,&si.date,si.outline,&si.amount);(2)void sort(ACCOUNT*s,int n)int i,j;struct ACCITEM t;for(i=0;in-1;i+)for(j=0;jsj+1.date|(sj.date=sj+1.date&sj.amountsj+1.amount)t=sj;sj=sj+1;sj+1=t;(3)void show(ACCOUNT*s,int n)int i;for(i=0;in;i+)printf(%
5、ld%s%lfn,si.date,si.outline,si.amount);第 1 页 共 4 页姓 名:报 考 专 业:准 考 证 号 码:密封线内不要写题2016 年攻读硕士学位研究生入学考试试题2016 年攻读硕士学位研究生入学考试试题科目名称:C 语言程序设计(A 卷B 卷)科目代码:855考试时间:3 小时 满分 150 分可使用的常用工具:无 计算器 直尺 圆规(请在使用工具前打)注意:所有答题内容必须写在答题纸上,写在试题或草稿纸上的一律无效;考完后试题随答题纸交回。一、选择题(共 10 小题,每小题 2 分,共 20 分)1.以下定义语句中正确的是()。A)int a=b=0
6、;B)char a=65+1,b=b;C)float a=1,*b=&a,*c=&b;D)double a=0;b=1.1;2.以下选项中可作为 C 语言合法常量的是()。A)-80 B)-080 C)-8e1.0 D)-80.0e 3.if 语句中用作判断的表达式()。A)必是逻辑值B)必是整数C)必是正数D)可是任意合法数值4.数组名作为函数参数传递给函数时,数组名被处理成该数组的()。A)长度 B)元素个数 C)各元素的值 D)首地址5.设有 double x5,*p=x;则 scanf 能正确读数据给 x0的格式是()。A)(%f,x);B)(%lf,*x);C)(%lf,p);D)(
7、%lf,p0);6.有定义:char s310,(*k)3,*p;,则以下赋值语句正确的是()。A)p=s0;B)p=k;C)p=s;D)k=s;7.函数 f 的定义如下,执行函数调用语句 z=f(3)后 z 的值是()。f(int x)if(x=0|x=1)return(3);return x*x-f(x-2);A)0 B)9 C)6 D)8 8.已知 int k=0;以下程序的运行结果是()。void fun(int m)m+=k;k+=m;printf(%d%d,m,k+);void main()int i=4;fun(i+);printf(%d%dn,i,k);A)4455 B)455
8、5 C)4445 D)45459.已知 char*p=ABC;则 printf(%dn,*(p+3)的运行结果是()。A)67 B)0 C)字符C的地址 D)字符C 10.以下关于 do-while 循环的描述中正确的是()。A)循环体内不能使用复合语句 B)在 while(表达式)后面不能写分号 C)先执行一次循环,再进行判断 D)根据情况可以省略 while二、读程序写出程序运行结果(共 4 小题,每小题 5 分,共 20 分)1.void main()int x=-9,y=5,z=8;第 2 页 共 4 页 if(xy)if(y0)z=0;else z+=1;printf(%d,z);2
9、.void main()char b=a,c=A;int i;for(i=0;i6;i+)if(i%2)putchar(i+b);else putchar(i+c);3.int fun(int x,int y)if(!x)return-1;else if(y=1)return x%10;else return fun(x/10,y-1);void main()printf(%d%d,fun(123456,3),fun(123456,8);4.void main()int a33=1,3,5,2,4,6,7,8,9,(*p)3=a,i,j,s;for(i=0;i3;i+)for(j=0;ji;j
10、+)s=*(*(p+i)+j);*(*(p+i)+j)=*(*(p+j)+i);*(*(p+j)+i)=s;for(i=0;i3;i+)for(j=0;j3;j+)printf(%3d,*(*(p+i)+j);printf(n);三、程序填空(共 20 个空,每空 3 分,共 60 分)1.输入一整数,计算其位数 k,然后将其各位数字按逆序转换为字符串输出。例如,输入 14251,则输出“15241”;输入-6319870,则输出“-0789136”。void main()long num,t,i=0,k;char*pstr;scanf(%ld,&num);t=num;k=;while()t=
11、t/10;k+;第 3 页 共 4 页 pstr=(char*)malloc(k+2)*sizeof(char);if(num0;k-)pstri+=;num=num/10;printf(%sn,pstr);free(pstr);2.按折半法在元素按升序排列的数组 a 中查找给定值为 k 的元素。int search(int a,int size,int k)int L=0,R=size-1,m;while()m=;if(kam)L=m+1;else ;return ;void main()int a20=1,2,6,8,9,15,22,45,58,61,78,88,93,flag,f;sca
12、nf(%d,&f);flag=;if(flag!=-1)pintf(%d has been found,location=%dn,f,flag);else pintf(%d hasnt been found n,f);3.下面程序的功能:输出所有的水仙花数(每行输出 3 个)。水仙花数是一个各位数字的立方和等于自己的三位数。比如 153 就是水仙花数。void main()int i,a,b,s,c=0;for(i=100;ilen1|t.lenlent.len)return;while(1)j=;while(ilen&jchi=t.chj)i+;j+;else i=;j=0;if()brea
13、k;/串 s 中不存在子串 t i=;for(k=i+t.len;klen;k+)s-chk-t.len=s-chk;s-len=;四、程序设计(4 小题,前 2 题各 10 分,后 2 题各 15 分,共 50 分)1.编程输出 10000 以内的回文式素数,并统计个数。如:2、11、97879 等。2.设计函数 void Reverse(char*s,int len)将长度为 len 的字符串 s 逆置。例如,若串 s 的内容为“abcdefg”,则逆置后 s 的内容变为“gfedcba”。3.电信在计算用户费用时按每分钟 0.08 元计算,不足 1 分钟按 1 分钟计,每次通话不超过 2
14、4 小时,最短为 1 秒。设计函数 double count(char*s,char*t)计算通话的费用,s 表示通话开始时间,t 表示通话结束时间(数据均合法,时间格式为:HH:MM:SS,HH,MM,SS 分别表示小时,分钟和秒)。例如:count(14:05:23,14:05:30)的返回值为 0.08 count(23:01:12,00:12:15)的返回值为 5.764.资金往来账目管理中需要记录每笔收支的日期 date、项目简记 outline 和项目金额 amount(结构定义如下)。按要求完成下列 3 个函数的设计。typedef struct long date;char outline20;float amount;ACCOUNT;(1)void input(ACCOUNT*s,int n)录入 n 笔收支信息到数组 s 中。(2)void sort(ACCOUNT*s,int n)按照收支日期排序(如果收支日期相同,按照项目金额高低排序)。(3)void show(ACCOUNT*s,int n)显示 s 中存放的 n 笔收支信息。