
华科2021级光电实验班C语言试卷答案.doc
4页华科2021级光电实验班C语言试卷答案华中科技大学光学与电子信息学院课程考试(标答) 2021 ~2021 学年度第 1 学期 课程名称: C语言程序设计 考试类型: 正常考试 考试时间: 2021 年 1 月 16 日 考试方式: 闭卷 学生姓名 学号 专业班级 题 号 题 分 得 分 一 25 二 35 三 7 四 8 五 12 六 13 总 分 100 一、单项选择(25分) 1. 对于下面的表示,请在相应小题前面的( )中填入A,B,C或D A,B,C,D的含义如下: (A) 合法的标识符; (B)C语言的关键字; (C)合法的字符串; (D)既不是C语言的关键字,也不是合法的标识符或字符串 ( A )(1)Break ( D ) (2) -abc ( A )(3)_456 ( B ) (4) case ( C )(5)” \\\\\\t123\\n” ( A ) (6) _void ( D )(7)?\\x12? ( A ) (8) Main ( D )(9)VC++ 6.0 ( D ) (10) j++ 2. 对于下面的表示,请在相应小题前面的( )中填入A,B,C或D。
A,B,C,D的含义如下: (A)合法的字符常数; (B)合法的整常数; (C)合法的浮点常数; (D)非法表示 ( D )(1)?\\911? ( A ) (2) ?\\\\? ( C )(3).15 ( C ) (4) 2021f ( C )(5)12.3e-5 ( D ) (6) 23E ( D )(7)?def? ( B ) (8) 10000L ( B )(9)0x12DEF ( A ) (10) ?\\xdf? 3.若有定义:int a=7; float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4 的值是 ( A ) (A) 2.500000 (B)2.750000 (C)3.500000 (D)0.000000 4.#include void main( ) { int a=5,b=1,c=0; if(a=b+c) printf(“***\\n”); else printf(“$$$\\n”);} 以上程序( C ) 。
(A) 有语法错误不能通过编译 (B)可以通过编译但不能通过连接 (C) 输出*** (D) 输出$$$ 5.有下面程序: #include void main( ) { char a[3],b[]=”china”; a=b; printf(“%s”,a); } 则( D ) (A)运行后输出china (B)运行后输出ch (C) 运行后输出chi (D) 编译出错 6.在int b[][3]={1,2,3,4,5,6,7}; 则b数组第一维的大小是( B ) (A)2 (B) 3 (C) 4 (D)无确定值 7.已知学生记录描述为: struct student { int no; char name[20]; char sex; struct { int year; int month; int day; } birth; }; struct student s; 设变量s中的“生日”应是“1995年1月16日”,下列对“生日”的正确赋值方式是( D )。
(A) year=1995; month=1; day=16; (B) birth.year=1995; birth.month=1; birth.day=16; (C) s.year=1995; s.month=1; s.day=16; (D) s. birth.year=1995; s. birth.month=1; s. birth.day=16; 8.下面程序执行结果是( D ) #include void main( ) {int y=10; do { y --;} while(--y); printf(“%d\\n”,y--);} (A)-1 (B) 1 (C)8 (D)0 9.以下函数采用折半查找法从数组a中查找特定元素m请选择填空 binary(int a[10], int m) { int low=0, high=9, mid; while( low<=high) { mid=(low+high)/2; if(ma[mid]( D ); else return(mid); } return -1; } (A)high=mid-1 (B)high=mid+1 (C)low=mid-1 ( ( B ) (A) 0 1 2 (B) 0 1 1 (C) 0 2 2 (D) 1 2 2 12.下面对字符数组描述错误的是( C )。
(A)字符数组可以存放字符串 (B)字符数组的字符串可以整体输入输出 (C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 (D)不可以用关系运算符对字符数组中的字符串进行大小比较 13.下面程序段的运行结果是( B ) char c[ ]=”\\t\\v\\\\\\0will\\n”; printf(“%d”, strlen(c)); (A) 14 (B)3 (C)9 (D)字符串中有非法字符,输出不确定 14. 设有以下程序段: char str[4][10={“first”, “ second”, “third”, “fourth”}, *strp[4]; for(int n=0; n<4; n++)strp[n]=str[n]; 若k为int变量且0<=k<4,则对字符串的不正确引用是( A ) (A) strp (B) str[k] (C) strp[k] (D) *strp 15. 若有以下定义,则*(p+5)表示( B ) int a[10], *p=a; (A)元素a[5]的地址 (B)元素a[5]的值 (C)元素a[6]的地址 (D)元素a[6]的值 16. 下面程序段的功能是计算1000!的末尾含有多少个零。
请选择填空 for(k=0, i=5; i<=1000; i+=5) { m=i; while( C ){ k++; m/=5; } (A)m%5=0 (B)m=m%5= = 0(C)m%5= = 0(D)m%5!=0 4 / 4。
