1、1C 语言程序设计(本) 模拟试卷 1 总分:100 分 时间:90 分钟一、单项选择题 :(每题 2 分,共 18 分)1、下列字符列中,可以作为“字符串常量”的是( ) A、ABC B、ABC” C、 abc D、 a 2、假定所有变量均已正确定义,下列程序段运行后 X 的值是( ) abc0; x35; if (!a )x-; else if(b) ;if(c)x3;else x=4; A、34 B、4 C、35 D、 33、设 a3,b4 执行printf(”d,d , (a ,b) , (b,a) ) ;”的输出是( ) A、3,4 B、4,3 C、3,3 D、4,44、设 a 为
2、5,执行下列计算后,b 的值不为 2 的是( ) A、ba2 B、 b6-(a) C、ba 2 D、 ba3?3:2 5、下列字符列中,不是用来表达转义字符是( ) A、 B、 C、074 D、 0 6、字符串”XyZ”在内存占用的字节数是( ) A、3 B、4 C、6 D、8 7、在 C 语言中,下列说法中错误的是( ) A、函数定义可以分为两个部分:函数说明部分和函数体 B、主函数可以调用任何非主函数 C、任何非主函数可以调用其它任何非主函数 D、程序可以从任何函数开始执行 8、设变量 m,n,a ,b,c,d 均为以执行(ma)|(ncd)后,m,n 的值是( ) A、0,0 B、0,1
3、 C、 l,0 D、1,19、下列语言中不属于面向过程的语言是( ) A、高级语言 B、低级语言 C、C 语言 D、PASCAL 语言 二、填空题:(每题 2 分,共 32 分)1、C 语言程序的注释可以出现在程序中的任何地方,一个注释以双符号作为开始标记,以双符号 作为结束标记。 2、转义字符是由_符号开始,后接单个字符或若干字符组成。 3、已知 a10,b20,则表达式!ab 的值为_。 4、设 X 和 y 均为 int 型变量,且 Xl,y2,则表达式 1.0xy 的值为_。 5、定义指定数据类型的变量时,较完整的一般形式是 。 6、阅读下列程序,写出程序运行后的输出结果。 main(
4、) int x18,i; for(i=2;i9;i十十) if(x%i0) prinif(”%1d” ,i) ; xx/i-; if(x0)break ; 7、能表述“20 X 30 或 X100”的 C 语言表达式是_。 8、请写出数学式 x/y*z 的 C 语言表达式_。 9、 以下两条 if 语句可合并成一条 if 语句为_。 if(ab) x1; else y2; if(ab)printf(“*y=%dn“ ,y) ; else printf( “#x%dn“ ,x); 210、设 i, j,k 均为 int 型变量,则执行完下面的 for 语句后,k 的值为_。 for(i=0,j1
5、0;ij;i, j-)kij ; 11、下列程序的功能是输入一个整数,判断是不是素数,若为素数输出 1,否则输出 0,请为程序填空。 main() int i,X ,y=1; scanf(”d” ,x) ; for(i=2; isk)_ printf(“%dn“ ,k); 43、若两个指针变量指向同一个数组的不同元素,可以进行减法运算和_运算。 4、以下函数用来在 w 数组中插入 x。在 n 所指向的存储单元中存放着 w 数组中的字符个数。数组 W 中的字符已按从小到大的顺序排列,插入后数组 W 中的字符仍有序。请填空。void fun(char *w,char x, int *n) int
6、i, p; p0; w*nx; whlie( xwp ) p+; for(i=* n; ip;i-) wi _; wp x; + *n; 5、若 d 是已定义的双精度变量,再定义一个指向 d 的指针变量 p 的代码是_。 6、函数 my_cmp()的功能是比较字符串 s 和 t 的大小,当 S 等于 t 时返回 0,否则返回 s 和t 的第一个不同字符的 ASCII 码差值,即 st 时返回正值,当 s 7、若函数 a()调用了函数 b() ,而函数 b()又调用了函数 a() ,这样的调用称为_调用。 8、若有以下说明和定义语句,则变量 W 在内存中所占的字节数是_。 union aa fl
7、oat x;float y; char c6; ; struct st union aa v; float w5; double ave; w; 9、设有以下定义和语句,则*(*(p2) l)的值为_。 int a32=10,20,30,40,50,60 ,(*p)2; 10、阅读下列程序,写出程序运行后的输出结果。 struct stu int x; int *px; a4 ,*p=a; main() int i,y410,11,12,13; f or(i=0;inum) ; while (p1-num != 0) p1 = (struct line *) malloc (LEN) ; sc
8、anf(“%d“, if ( p1-num = 0 ) p2-next = 6NULL ; else p2-next = p1 ; p2 = p1 ; k+; p2-next = head ; p1 = head-next ; p1 = p1-next ; for ( j=1 ; j %d “, p1-num) ; p1 = p1-next ; 6、写出下列程序的输出结果。 main( ) struct st int x, y; a4=10,20,30,40,50,60,70,80; struct st *p=a; printf(“%d,“, p+-x); printf(“%d,“, +p-y
9、); printf(“%dn“, (a+3)-x); 7、函数 xtoi 的功能是将放在字符串中的十六进制数(可以出现09 、 af)转换成十进制整数。例如:调用 xtoi(“1f“) 将返回 31。 xtoi( (6) ) int k, d=0; for(k=0; sk = | sk = t; k+); while(sk = 0 k+) (9) *pmonth = (10) *pday = yearday; 10、用 typedef 定义一个长度为 10 的整型数组 NUM。 11、写出下列程序的输出结果。 #include void main() int v=6,3,4,1,2; int
10、n=5; int gap, j, k, temp; for( gap = n/2; gap 1; gap /= 2 ) for( j = gap; j = 0 k -= gap ) temp = vk; vk = vk+gap; vk+gap = temp; for(k=0; k5; k+) printf(“%d, “, vk); 12、写出下列程序的输出结果,并指出该程序的功能。 #include void main() int x, k; x =14; for ( k = 0; x!=0; x printf(“%dn“, k); 13、写出下列程序的输出结果。 #include int x
11、, y, z; void p(int *x, int y) -*x; y+; z = *x+y; printf(“%d,%d,“, *x,y); void main() x=5; y=2; z=0; p( printf(“%d,%d,%d-“, x, y, z); p( printf(“%d,%d,%dn“, x, y, z); 14、 写出下列程序的输出结果。 # include long fib(int g) switch(g) case 0: return(0); case 1: case 2: return(2); printf(“g=%d,“, g); return ( fib(g-
12、1) + fib(g-2) ); main() long k; k = fib(4); printf(“k=%ldn“, k); 15、写出下列程序的输出结果。 #include “stdio.h“ void main() int k, j, m, n, a66, b6; m=3, n=2; for(k=0; k 16、将输入的 n 个字符串连接成 1 个字符串 , 然后输出该字符串. #include #include void main() char str1020, string200; int k, n; scanf(“%d“, for (k=0; k 三、编程题(每题 24 分,共
13、48 分)1、请编写函数 sum_fact(number),返回 number 的因子之和。 (能整除 number 的数就是它的因子,number 定义为 int)例如 sum_fact(6) = 12 (因为 1, 2, 3, 6 是 6 的因子) 2、文本文件 input.txt 中存放了一批整数,将其中每个数的因子之和顺序写入文件 output.txt。 ( 必须调用第 1 小题中定义的函数 sum_fact(number) 计算 number 的因子之7和 ) 例:若文件 input.txt 中存放了 1, 2, 6 ,则每个数的因子之和分别是 1 3 12 ,它们被写入文件 output.txt。