2016-814C语言程序设计.pdf
注意:答案请做在答题纸上,做在试卷上无效 东华理工大学 2016 年硕士生入学考试初试试题 科目代码: 814 ; 科目名称:《C 语言程序设计》 ;( A 卷) 适用专业(领域) : 电路与系统(077402,080902) 一、选择题:(共 25 小题,每小题 2 分,共 50 分) 1、设有定义“int a=3,b,*p=&a;”,则下列语句中使 b 不为 3 的语句是( ) (A) b=* &a (B) b =* p (C) b=a (D) b =*a 2、设指针 x 指向的整型变量值为 25,则“printf("%d\n",++*x);” 的输出是( ) (A) 23 (B) 24 (C)25 (D)26 3、有定义 int a=6,b=10,c; 执行语句“c=a/b+1.4;”后,c 的值为( )。 (A)1.4 (B)1 (C)2.0 (D)2 4、若有说明: “ int i,j = 7,*p =&i;”,则与“i =j;” 等价的语句是( ) (A) i =*p (B) *p =* &j (C) i=&j (D) i =* *p 5、若有说明语句“int a[10],*p=a;”,对数组元素的正确引用是( ) (A) a[p] (B) p[a] (C) *(p+2) (D) p+2 6、下面各语句中,能正确进行赋字符串操作的语句是( ) (A) char s[5] ={“ABCDE”} (B) char s[5] ={‘A’,‘B’,‘C’,‘D’,‘E’} (C) char *s;s=“ABCDE” (D) char *s;scanf(“%s”, &s ) 7、若有以下定义,则值为 3 的表达式是( ) int a[] = {1,2 ,3 ,4 ,5 ,6 ,7,8 ,9 ,10},*p=a ; (A) p +=2 ,* (p++ ) (B) p +=2 ,* ++p (C) p +=3 ,*p++ (D) p +=2,++ *p 8、设有定义“char a[10]={”abcd“},*p=a;”,则*(p+4)的值是( ) (A)“abcd” (B)‘d’ (C)‘\0’ (D)不能确定 9、设有代码“int(*ptr )[10] ;” ,其中的 ptr 是( ) (A)10 个指向整型变量的指针 (B)指向 10 个整型变量的函数指针 (C)具有 10 个指针元素的一维数组 (D)一个指向具有 10 个元素的一维数组的指针 10、若有以下定义,则数值为 4 的表达式是( ) static int w[3][4] ={{0,1} ,{2 ,4} ,{5 ,8}}; int (* p)[4] =w; (A)*w[1]+l (B) p++ ,*(p+1 ) (C) w[2][2] (D) p[1][1] 11、C 语言允许函数类型缺省定义, 此时函数值隐含的类型是( ) (A)float (B) int (C)long (D)double 12、对于运算符优先顺序的描述中正确的是( )。 (A)赋值运算符< 逻辑运算符< 关系运算符<算术运算符 (B)关系运算符< 算术运算符< 赋值运算符<逻辑运算符 (C)逻辑运算符< 关系运算符< 算术运算符<赋值运算符 (D)算术运算符< 关系运算符< 赋值运算符<逻辑运算符 13、关于 return 语句, 下列正确的说法是( ). (A)在主函数和其他函数中均可出现 (B)必须在每个函数中出现 (C)可以在同一个函数中出现多次 (D)只能在除主函数之外的函数中出现一次 14、下列定义不正确的是( )。 第 1 页,共 5 页 注意:答案请做在答题纸上,做在试卷上无效 (A) #define PI 3.141592 (B) #define S345 (C) int max(x,y); int x,y; { } (D) static char c; 15、C 语言程序中, 若对函数类型未加显式说明, 则函数的隐含说明类型为( (A) int (B) double (C)char (D) void 16、若有说明:int *p,m=5,n;以下正确的程序段是(). (A) p=&n;scanf("%d",&p); (B) p=&n;scanf("%d",*p) ; (C) scanf("%d",&n);*p=n; (D) p=&n;*p=m; 17、下列各 m 的值中,能使 n=m%4==3&&m%5==2&&m%7==6;为真的是( (A)7 (B)23 (C)27 (D)13 18、下列选项中, 合法的 C 语言关键字是( ) (A)VAR (B)cher (C)integer (D)default 19、表达式,0x13&0x17 的值是( )。 (A)0x17 (B)0x13 (C)0xf8 (D)0xec 20、设以下变量均为 int 类型, 则值不等于 7 的表达式是(). (A) (x=y=6,x+y,x+1) (B) (x=y=6,x+y,y+1) (C) (x=6,x+1,y=6,x+y) (D)(y=6,y+1,x=y,x+1) 21、设有 int x=11; 则表达式 (x++ * 1/3) 的值是( )。 (A) 4 (B) 3 (C) 11 (D)12 22、下列语句中错误的是( ) (A) sizeof 3.1415; (B) printf(“%d”,++x,x++); (C)printf(“%d”,a=a+1,b--,c+1); (D) x=sizeof int; 23、已知字母 a 的 ASCII 码是 97,则执行下列语句后输出为( )。 char a=’a’; a- -; printf(“%d, %c\n”, a+’2’-‘0’, a+’3’-‘0’); (A) 2,3 (B) 98,c (C) a,c (D)格式不匹配,输出无定值 24、以下程序输出结果是( )。 main() { int x=20,y=20; Printf(“%d, %d\n”, x--, --y); } (A)20,19 (B)19,20 (C)20,20 (D)19,19 25、int a=1,b=2,c=3; if(a>c)b=a;a=c;c=b; 则 c 的值为( ). (A) 1 (B) 3 (C) 2 (D)不一定 二、程序阅读填空题:(共 6 小题,每小题 5 分,共 30 分) 1.阅读下面程序:程序执行后的输出结果是( )。 main() { static int a[][3] ={9 ,7 ,5 ,3 ,l,2 ,4 ,6 ,8} ; int i ,j,sl =0 ,s2 =0 ; for(i =0 ;i<3 ;i++ ) for(j =0 ;j<3 ;j++ ) { if(i ==j ) s1=s1 +a[i][j]; if(i+j== 2)s2=s2 +a[i][j]; } printf(“%d\n%d\n”, sl,s2 ); } 第 2 页,共 5 页 ) )。 注意:答案请做在答题纸上,做在试卷上无效 2.阅读下面程序:下列程序执行后的输出结果是( #define PR(ar) printf("%d,",ar) main() { int j, int a[] ={1, 3, 9, 7, 15, 11,17}; int *p=a+5; for(j=3;j<=0;j--) switch (j) { case 1: case 2: PR(*p++);break; case 3: PR(*(--p)); } printf("\n"); } )。 3.阅读程序完成填空 1、空 2 和空 3:由 1、2、3、4 四个数字能组成多少个互不 相同且无重复数字的三位数? main( ) { int i,j,k; printf("\n"); for(i=1;i<【 1 】;i++) for(j=1;j<【 2 】;j++) for (k=1;k<【 3 】;k++) { if (i!=k&&i!=j&&j!=k) printf("%d,%d,%d\n",i,j,k); } } 4.下面是一个计算 3*3 矩阵对角线元素之和的程序,利用双重 for 循环控制输入 二维数组,阅读程序完成空 1、空 2 和空 3。 main() { float a[3][3],sum=0; int i,j; printf("please input rectangle element:\n"); for(i=0;【 1 】; i++) for(j=0;【 2 】) scanf("%f", &a[j]); for(i=0; i<3; i++) sum=【 3 】; printf("duijiaoxian he is %6.2f",sum); } 5.下面是一段把八进制转换为十进制程序,请阅读程序并完成空 1、空 2 和空 3。 main() { char *p,s[6]; int n; 第 3 页,共 5 页 注意:答案请做在答题纸上,做在试卷上无效 p=s; gets(【 1 】); n=0; while(*(p)!='\0') { n=n*【 2 】+*p-'0'; 【 3 】; } printf("%d",n); } 6.下面是一段“输入三个整数 x,y,z,并把这三个数由小到大输出”的程序,请阅 读程序并完成空 1、空 2 和空 3。 main() { int x,y,z,t; scanf("%d%d%d",&x,&y,&z); if (x>【 1 】) { t=x;x=y;y=t; } if(x>【 2 】) {t=z;z=x;x=t; } if(y>【 3 】) {t=y;y=z;z=t; } printf("small to big: %d %d %d\n",x,y,z); }。 三、算法流程图设计题:(共 3 小题,每小题 10 分,共 30 分) (以下 3 题不需要编写程序,只写出算法思路和画出算法流程图) 1.有一个 3×4 的矩阵,请编程找出其中最大的那个元素的值以及所在的位置(行 号和列号)。要求:(10 分) (1) 根据题意用文字叙述写出算法思路; (2) 设计出合理的程序流程图(如 N-S 图或 BS 图)。 2.输入 20 个整数,将其中最小的数与第一个数对应交换,把最大的数与最后一 个数对应交换。要求:(10 分) (1) 根据题意,设计输入、输出、数据交换处理采用三个不同函数,主函数负责 调用这三个函数实现功能,用文字叙述写出算法思路; (2) 设计输入、输出、数据交换处理和主函数的流程图(如 N-S 图或 BS 图)。 3.假设有一个链表,链表结点数任意,请将该链表按逆序排列。(10 分) (1) 根据题意用文字叙述写出算法思路; (2) 设计出合理的程序流程图(如 N-S 图或 BS 图)。 第 4 页,共 5 页 注意:答案请做在答题纸上,做在试卷上无效 四、程序设计题:(共 4 小题,共 40 分) 1.工厂发放的奖金根据利润(IR)提成:当 IR≤10 万元时,奖金可提 10%;当 10