A1-试卷
(20 年至20 学年度第 学期)
考试时间 年 月 日(120分钟) 课程 C语言 教师签名_____
大题号 一 二 三 四 五 六 七 八 九 十 合 计 得 分 一、单项选择题(每题2分,共30分) 1.以下描述正确的是( )
A.goto语句只能用于退缩出多层循环。 B.switch语句中不能出现continue语句。 C.只能用continue语句中来终止本次循环。 D.在循环语句中break语句不独立出现。 2.一个C程序的执行是从( )
A.C程序的main函数开始,到main函数结束。
B.本程序的第一个函数开始,到本程序最后一个函数结束。
C.本程序的main函数开始,到本程序文件的最后一个函数结束。 `D.本程序的第一个函数开始,到本程序main函数结束。 3.C语言中,要求运算数必须都是整数的运算符是( )。
A.* B.- C.% D.+
4.假定 int i=3,j=4; 执行语句: printf(\"%d,%d,%d\\n\之后,
其输出结果为:( )
A.7,4,4 B. 8,4,4 C. 7,3,4 D.7,3,5 5.对break语句的正确描述。( )
A.break语句在while语句中,立即终止执行while语句。 B.break语句不能用于循环语句之外的语句。
C.break语句与continue语句功能相同。 D.break语句可以带参数,也可以不带。
6.在C语言中,下面那一个不是正确的概念( )
A. 所有循环语句都要求至少要执行一次循环体。 B. goto和if语句能构成循环语句。 C.循环过程只能包含,不能交叉。 D.循环体可以是一条语句。
7.以下对二维数组a的正确说明是( )
A. int a[ 3 ] [ ]; B. float a( 3, 4); C. int a[ 3 ] [ 4 ] D.float a( 3, )( 4 ); 8.对函数的正确描述( )
A.在C语言中可以嵌套定义函数。
B.自定义函数和调用函数可以不在一个源文件中。 C. 函数定义都是平行的,独立的。 D. 不能嵌套调用函数。
9.若用数组名作为函数调用的实参,传给形参的是( )
A.数组的首地址 B.数组的第一个元素值 C.数组的全部元素值 D.数组中元素的个数 10.对于 int *p; int a[]; p=a; 的合法运算( ) A. a++;
B. p=a; p++; 相当于 a++; C. ++p; 相当于 a[1];
D. 若p中的地址为100则p++; 运算后,则其值为100
11.假设 int x[] = {1,3,5,7,9,11}, *ptr; ptr = x; 以下那些是对数组元素的正确引用 ( )
A. *(ptr--) B. x[6] C. *(--ptr) D. *(ptr++) 12.执行以下语句后的结果为( )
enum weekday {sun,mon=3,tue,wed,thu}; enum weekday workday; workday = wed;
printf(\"%d\\n\
A.5 B. 3 C.4 D.编译出错
13.要定义一个结构体类型拟包含两个成员,其中成员变量info用来存放整型数据,成员变量link是指向自身结构体的指针。则下面的定义正确的是( )。
A.struct node{int info;struct node link;}; B.struct node{int info;node *link;}; C.struct node{int info;struct *link;}; D.struct node{int info;struct node *link;};
14.以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是( )。
A.feof(fp) B.ftell(fp) C.fgetc(fp) D.rewind(fp) 15.局部变量的作用域( )
A.在定义的块内有效。 B.在函数外也有效。 C.在本文件内有效。 D.在所有文件内有效。
二、判断题(每题1分,共10分)
( )1、break和continue 都可以用于switch语句中。 ( )2、C语言不能嵌套定义函数,但可以嵌套调用。 ( )3、C语言函数的缺省类型是void型(空类型)。
( )4、如果a>b或c ( )8、在运算时,不同类型的数据要先转换成精度高的类型之后,然后才能进行运算。 ( )9.C语言允许对数组的大小作动态定义。 ( )10.条件运算符的结合方向是从左到右。 三、分析程序给出运行结果(每题5分,共25分) 1. #include \"stdio.h\" #include \"string.h\" void main() { char s[20]=\"abcd\"; printf(\"%d,%d\\n\} 答案: 1 2. #include \"stdio.h\" void main() { int a[][3]={{1,2,3},{4,5,6},{7,8,9}},*p; p=&a[0][0]; printf(\"%d\\n\} 答案: 3. # include main( ) { char s[10]={“abc”}; printf(“c1=%c,c2=%s\\n”,s[2],s); } 答案: 4. main( ) { printf(\"%d %x %o\\n\ printf(\"%d %x %o\\n\ printf(\"%d %x %o\\n\ } 答案: 5. #include int f(int a); int main() { int f(int); int a=2,i; for(i=0;i<3;i++) { printf(\"%d \ } return 0; } int f(int a) { auto int b=0; static int c=3; b = b+1; c = c+1; return (a+b+c); } 答案: 四、完善程序填空题(每题5分,共15分) 1.程序实现:将100~200之间的素数输出。 #include int main() { int x=100; int a=2; mmm: x++; while( ) { if (x%a == 0) goto mmm; if( a >= x/2) { printf(\"%d \ a=2; goto mmm; } else ++a; } return 0; } 2.以下程序的功能是统计一行字符中的单词个数(单词之间用空格分隔)请完善该程序功能。 main( ) { char str[256]; int i,num=0,word=0; scanf(“%s”,str); for(i=0;str[i]!= '\\0';i++) if(str[i] == ' ') word =0 ; else if ( ) { word = 1; num++; } printf(“%d”,num); } 3. 输出3到100之间的所有素数。 main() { int i,j; for(i=3; ;i++) { for(j=2;j<=i-1;j++) if(i%j==0) break; if( i==j ) printf(\"%4d\ } } 五、编程题 (每题10分,共20分) 1. 请编制程序实现:判断一个数能否同时被3和5整除。 2 2.请编制程序实现:用递归方式计算a!+b!+c!,并要求有输出结果。 3 因篇幅问题不能全部显示,请点此查看更多更全内容