1、2018年三峡大学硕士研究生招生复试C语言程序设计课程考试试卷注意:1、考试时间180分钟,满分100分;2、姓名、准考证号必须写在指定的地方 阅卷负责人签名 姓名: 准考证号: 题号一二三四五六七八九总分得分 本试卷 共 3页,请附答题纸,将答案写在答题纸上面一、 选择题。(每题1分,共20分)1. 以下说法正确的是 .A、C程序总是从第一个函数开始执行B、C程序中,要调用的函数必须在主函数前定义C、C程序主函数必须放在最前面D、C程序总是从主函数开始执行2. 有整型变量x,能够表达x为大于1且小于12的整数的c语言表达式为 A、 x1 B、 x1|x12 C、 x1 D、1x123. 下列
2、标识符中,合法的用户标识符是 A、abcB、intC、7_aD、a+b4. 有如下函数调用语句:func(rec1,rec2+rec3,(rec4,rec5);该函数调用语句中,含有的实参个数是 A) 3 B) 4 C) 5 D) 有语法错5. 已知:char s6, *ps=s;则正确的赋值语句是 A、s=12345; B、*s=12345; C、ps=12345; D、*ps=12345;6. 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是 A、-3 B、9 C、-12 D、67. 有以下程序执行后输出结果是 #include void main() char
3、s=n12345678;printf(%dn,strlen(s);A、赋初值的字符串有错 B、10 C、11 D、128. 已知:int a, *y=&a;则下列函数调用中错误的是 A、scanf(%d, &a); B、scanf(%d, y);C、printf(%d, a); D、printf(%d, y);9. 以下数组定义中不正确的是 A) int a23;B) int b3=0,1,2,3;C) int c100100=0;D) int d3=1,2,2,3,3,4;10. 已知:int a=2;则表达式(a+E-A)*3的值是 A、18B、12 C、8 D、2011. 以下程序的运行
4、结果是 void main()int m=6;if(m-=5) printf(%dn,m);else printf(%dn,m-);A、4B、5C、6D、712. 已知: int a43=1,2,3,4,5,6,7,8,9,10,11,12;int (*ptr)3=a,*p=a0;则以下能够正确表示数组元素a12的表达式是 。A、*(*(a+1)+2) B、*(*(p+5) C、(*ptr+1)+2 D、*(ptr+1)2)13. 判断字符串x是否大于字符串y,应当使用 A、if (xy) B、if (strcmp(x,y)C、if (strcmp(y,x)0) D、if (strcmp(x,
5、y)0)14. 以下定义语句,错误的是 A、 inta5=1;B、intc=1,2,0,0,0;C、 intb3+3;D、inti=5,ai;15. 以下关于函数的叙述中正确的是 A、函数定义不能嵌套,但函数调用可以嵌套B、函数定义与调用都能嵌套C、函数定义可以嵌套,但函数调用不能嵌套D、函数定义与调用都不能嵌套16. 关于函数调用,下面叙述中正确的是 A、函数的实参和对应的形参共占同一存储单元 B、形参只是形式上的参数,不占用具体存储单元C、调用函数时,实参可以是表达式D、函数的实参和对应的形参,如果名称相同,则它们共占同一存储单元17. 以下正确的描述是 A、continue语句的作用是结
6、束整个循环的执行B、只能在switch语句体内使用 break语句C、在循环体内使用break和continue语句的作用相同D、只能在循环体内和switch语句体内使用break语句18. 有以下程序执行后输出的结果是 void main() int p7=11,13,14,15,16,17,18, i=0, k=0; while(i7&pi%2=1) k=k+pi; i+; printf(%dn,k);A、58 B、56 C、45 D、2419. 下列运算符中优先级别最高的是 A、 B、 + C、 & D、 !=20. 下列程序的运行结果是 #include void fun (int *
7、a, int *b) int k ; k=*a; *a=*b; *b=k;void main() int a=3, b=6, *x=&a, *y=&b;fun(x,y);printf(%d %d,a,b);A、 6 3 B)、3 6 C、 编译出错D、0 0二、 填空题。(每空1分,共10分)1. 若有定义int a=2,4,6,8,10,12 ; 则*a+5的值是 ;2. 设char *s=”China”; 则指针变量s指向的字符串所占的字节数是 个;3. 上机操作一个C程序,一般要经过: 、 、 和 四个步骤 。4. C语言源程序的基本组成单位是_。5. 有如下程序:struct stch
8、ar name20;double score; ;main() struct st ex;printf(ex size: %dn,sizeof(ex);结构体变量名为 4要使以下程序段输出8个整数,请填入一个整数。for(i=0;i= ;printf(%dn,i+=3);5用于处理一系列类型相同的数据的数据结构是 。三、 程序填空。(每空3分,共15分)1. 下面程序的功能是:计算一个n阶方阵对角线之和,请填空。#define N 10#include int main()int i,j,sum=0,n,aNN,k=1; scanf(%d,&n);for(i=0;in;i+)for(j=0;j
9、n;j+)aij=k+; if( ) ;printf(sum=%dn,sum);return 0; 2下面程序从键盘输入一个整数,然后将它逆序输出。#includemain( ) int a; scanf(“%d”,&a); while(a!=0) printf(“ %d ”, ); ; 3. 下面程序从键盘输入两个两位数的正整数a,b,将其合并形成一个新的整数放在c中,合并的方式是:将a中的个位数放在变量c的十位上,b中的十位和个位数依次放在变量c的个位和百位上。#include int main()int a,b,c,g,s,h;scanf(%d%d,&a,&b);s=a%10;g=_;h
10、=b%10;c=h*100+s*10+g;printf(%dn,c);return 0; 四、 读程序,写结果。(每题5分,共15分)。1以下程序的运行结果是 #include void main()int k=10;switch(k+1)case 10: k+;break;case 11: +k;case 12: +k;break;default:k=k+1;printf(%dn,k);2下面程序的输出结果是 void main() int a =1,2,3,4,5,6,7,8,9,0,*p;p=a;printf(%dn,*(p+7);3下面程序的运行结果是: #include #defin
11、e MINA(a,b) (ab)?(a):(b-a)#define MINB(a,b) (ab)?(a):(b)-(a)int main()int temp1,temp2;temp1=MINA(2+4,9);temp2=MINB(2+4,9);printf(temp1=%d,temp2=%d,temp1,temp2);return 0;五、 程序设计。(共40分)1 编写程序求“菲波那契数列”前20项之和。说明:“菲波那契数列”是这样的数列:数列的第1个数为1,第2个数为1,以后每个数为其前两数之和,即1、1、2、3、5、8、13、n。(本小题10分)2 编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。所谓回文是指顺读和倒读都一样的字符串。如“XZYKYZX”是回文。(本小题15分)3 从键盘输入n个整数,将这n个数按从小到大的顺序排序。 (本小题15分)