南京工业职业技术学院
2011/2012 第一学期 期末试卷(A卷)
课程: C程序设计 出卷人: 考试类型: 开卷 【 】 闭卷【√】 适用班级: 电商1111/电商1121 班级 学号 姓名
(所有题目答案请写在答题纸上) 一、单项选择题(每题2分, 共60分)
1. 键盘输入为“123 ABC”<回车>时,下列程序的输出为_______。
#inclde char str[80]; gets(str); puts(str); return 0; } A.123 ABC B.123 C.ABC D.无任何输出 2. 下面哪个是C语言的关键字? A.struct _ B.gets C.getchar D.FILE 3. 下面哪个是c语言中合法的标识符 。 A._answer_ B.2nd_chance C.123 D.“ABC” 4. 以下那个是c语言的关键字 。 A.long B.printf C.Float D.getch 5. 若有变量定义 double x=5.0,y; 则表达式 A.7.5 y = x + 5 / 2 B.7.0 的值是 。 C.4.5 D.8.0 6. 下面哪个关键字用于返回函数值? A.switch B.return C.for D.while A卷共8页第1页 7. 设有变量定义 int x = 1 , y = 1 , z = 1 ; 则函数调用 printf( “%d” , x + y + z ) 的输出结果为 。 A.1 B.2 C.3 D.4 8. 以下哪个不可以作为C语言的标识符? A._123 B.#123 C.$123 D.123 9. 以下哪个不(!)可以作为C语言的运算符_______。 A.! B.; C., D.& 10. 以下哪个是合法的C语言int类型常量? A.12345 11. 设有变量定义 int i = 4 , j = 6 , k = 9 ; 则表达式 A.1 i + j < k 的值为 B.0 C.10 D.9 B.12,345 C.1234^5 D.1234.54 12. 在C语言中,char类型数据所占内存为_____Byte。 A.1 B.2 C.4 D.8 13. 以下正确的表达式是_______。 A.25.0%5.0 B.25%5.0 C.25%5.0 D.25%5 14. 表达式 !1 的值等于_______。 A.1 B.0 C.-1 D.2 15. 以下关于if语句的错误(!)描述是 。 A.if语句不一定有else子句 B.可以用break语句结束if语句 C.if语句中必须有一对小括号——“()” D.一条if语句中可能有两个“;”,也可能有一个“;” 16. 下面程序段的运行结果是 。 int n; for( n = 0 ; n < 9 ; n ++ ) { printf( \"%d\" , n ); } A.9 B.10 C.012345678 D.8 A卷共8页第2页 17. 下面条件表达式 (3>4) ?3 :4 的值是_______。 A.1 B.2 C.3 D.4 18. 以下哪个是合法的c语言int类型常量 。 A.1E5 B.0Xhh C.093 D.234 19. 设有数组定义: char array [6]; 则表达式sizeof array的值为 。 A.5 B.6 C.7 D.8 20. 下面函数调用表达式的输出是 。 printf(\"%d\\n\A.12 B.24 C.18 D.16 21. 设有变量定义 int s[3][4] ; 那么s数组中共有 个int类型的数组元素。 A.3 B.4 C.12 D.24 22. 以下程序段的运行结果是___________。 int x=1; switch(x) { case 1: puts(\"1\"); break; case 2: puts(\"2\"); break; case 3: puts(\"3\"); } A.1 B.2 C.3 D.123 23. 表达式 ( 3 > 2 ) ? 4 : 5 A.3 B.2 的值为 。 C.4 D.5 24. 在C语言中,字符串 A.3 B.4 \"abc\" 占 个字节。 C.5 D.6 25. C语言规定,注释应写在_______之间。 A.“{”与“}” B.“(”与“)” D.“[”与“]” C.“/*”与“*/” 26. 下面程序段的运行结果是 。 int n = 6 ; A卷共8页第3页 do { printf( \"%d\" , n ) ; n -= 3 ; } while( n > 0 ) ; A.63 B.630 C.6 D.死循环,输出许多值 27. 执行下述程序的输出结果是什么? #include int a; int b; }; int main( void ) { struct AB ab = {5,3}; printf(\"%d\\n\" , ab.a - ab.b); return 0; } A.3 B.5 C.8 D.2 28. 执行下述程序的输出结果是什么? #include int a; int b; }; void output(struct AB * ); int main( void ) { struct AB ab = {3,5}; output( &ab ) ; return 0; } void output(struct AB *p ) { printf(\"%d\\n\" , p->a + p -> b); } A.-2 B.5 C.8 D.2 A卷共8页第4页 29. 下面哪个___________标准库函数的功能是求字符串长度。 A.strcpy() C.strcmp() 30. 定义数组 double a[2][3]; 若a的值为0022FF50,那么*a的值为 。 A.0022FF5A C.0022FF51 B.0022FF50 D.0022FF52 B.strlen() D.sqrt() 二、填空题(每空1分, 共15分) 1. 预处理命令一般以 开头。 2. 如有变量定义 int a[3]={1,2,3}; 则表达式“*a”的值为 。 3. c语言规定字符串的结束标志为 。 4. C语言提供了三种循环语句,即while、 和 。 5. 写出求代数表达式c5(F32)的值的c语言表达式 。(假定c和F在程序中9被定义为double类型。) 6. 设有变量定义 int a[3]={1,2}; 那么该数组共有 个元素,其中a[1]的值为 。 7. 在c语言中,表达式 3/2 的值为 ,表达式 ( double ) 3 / 2 的值 为 。 8. 函数调用语句fopen(\"d:\\\\abc.txt\执行时,文件d:\\abc.txt必须 。 9. 在c语言中, break语句可以用在 和 语句中,default关键字只能用 于 语句中。 10. 设有变量定义 char s[80] = \"ABCD\" ; 那么函数调用表达式 strlen(s ) 的值为 。 A卷共8页第5页 三、阅读程序回答相关问题(每空1分, 共10分) 1. 请根据注释把程序补充完整,该程序的功能是计算并输出自然数列前n项的和。 #include (1) /*自定义函数qiu_he()的原型声明*/ int main(void) { int n; printf(\"请输入n的值:\"); scanf(\"%d\ if( n > 0 ) { printf(\"自然数列前%d项的和为%d\\n\ } system(\"PAUSE\"); return 0; } int qiu_he( int n ) { int he = 0 ; while( n > 0 ) { he += n --; } return he ; } 2. 下面程序段的运行结果是 (2) 。 #include #define Y (X+1) int main(void) { printf(\"%d,%d,%d\\n\" , X , Y , Y * Y ); return 0; } 3. 下面程序段的运行结果是 (3) 。 #include for ( i = 1 ; i < 10 ; i += 2 ) { A卷共8页第6页 he += i ; } printf (“总和=%d\\n”,he) ; return 0; } 4. 下面程序段的运行结果是 (4) 。 #include int x=1,y=1; switch ( x ) { case 1 : printf(\"A\") ; case 2 : printf(\"B\") ; default : printf(\"C\") ; } printf(\" \") ; switch ( y ) { case 1 : printf(\"X\") ; break ; case 2 : printf(\"Y\") ; break ; default : printf(\"Z\") ; break ; } return 0; } 5. 下面程序段的功能是:如果x小于y的值,则交换变量x、y的值。请补全空白。 int x, y ; if ( _____(5)____ ) { int temp ; ____(6)____; ____(7)____; ____(8)____; } 6. 以下程序输出结果是 (9) 。 #include A卷共8页第7页 int n = 6 , i ; for( i = n ; i > 0 ; i -- ) { if( n % i == 0 ) { printf(\"%d \" , i ) ; } } return 0; } 7. 以下程序输出结果是 (10) 。 #include char s1[80] = \"ABCD\" ,s2[80] = \"DEF\" ; int i = 0 , j = 0 ; while( s1[i] != '\\0' ) i ++ ; while( (s1[i ++] = s2[j ++]) != '\\0') ; puts( s1 ) ; return 0; } 五、编程题(共15分) 012101. 编写程序,实现求表达式222...2的值。 2. 一数组由1,5,-23,6,12,3,-54,32等8个整数组成,编写程序求该数组各 个元素之和。 A卷共8页第8页 因篇幅问题不能全部显示,请点此查看更多更全内容