1、答题说明:要求所有解答均写在答题卡上,否则无效。一、填空题(每空1分,共20分)1. 数组名做函数实参时,它和对应形参之间数据传递方式是 。2. 自定义函数的形参放在内存的 存储区。3. 若有定义int a=3, b=6, c;则执行语句c = a / b +3.5;后,c的值为 。4. 表示“x 10或y+z 6”的C表达式是_ 。5. 若输入字符A,在以下while语句执行后ch的值为 。while (ch = getchar ( )= = A);6. 已知 int a =1,3,5,7,9, *p=a, *q; q=p+2; 则执行下列语句printf ( “%d”, *q+);后的输出
2、结果为 。7. 已知int i=10;表达式 “11= i 0;的值为 。10. 在说明语句:int *f ( );中,标识符f代表的是 。11. 逗号表达式 “(a=3*5,a*2), a+10; ” 的值是 。12. 若定义数组int a =1,2,3,4,5,6;,则该数组元素aa2+1的值为 。13. 已知int i=1; 执行语句while (i+0) & (x4); x+, y- ) ;共执行的循环次数为_ _次。16. 程序设计常采用模块化的思想,C语言中子模块通常用 来实现。17. 若希望产生16之间的随机数,则正确的C表达式为n =_ _。18. 若有以下定义:int a=2
3、0, *p=&a; 执行语句a=*p-10; 后a的值是 。19. 根据文件的存储形式,文件可分为二进制文件和 文件。20. 设有如下定义语句:FILE *fp;若要以只读方式打开一个二进制文件file.dat,则正确的语句应为fp = fopen (“file.dat”, “ ”);。二、阅读程序(每题5分,共30分)1. 下列程序运行的结果是: 。#include #define T 10#define MD 3*Tvoid main ( )int digit;long t=12 , s;s=30/MD;while (t 0) digit = t % 10;s = s + digit *
4、digit;t = t / 10; printf (“%ld”, s);2. 若输入字符串“Amaze!”,则以下程序的输出结果是: 。#include void main ( ) char ch; while ( (ch = getchar ( ) )!= n ) if ( (ch=a & ch=A & ch=Z) ) ch-; if ( ch=64 | | ch=96 ) ch += 26; printf ( “%c”, ch );3. 下列程序运行的结果是: 。#include void main ( )int a=1,b=0;do switch (a)case 1: b=0;case
5、2: b=-1; break;default : b=1;a=a+b;b=2*a;while (!b);printf ( “a=%d, b=%d”, a, b);4. 下列程序运行的结果是: 。#include int fun ( ) auto int x=1; static int y=1; x+=2; y+=2; return x+y;void main ( ) int a,b; a=fun ( ); b=fun ( ); printf(“%d,%dn”, a,b);5. 下列程序运行的结果是: 。#include void p (int *x, int y) +*x; y-;void m
6、ain ( ) int x=0,y=3;p (&x, y);printf ( “%d, %d”, x, y );6. 下列程序运行的结果是: 。#includevoid sum (int *a) a0 = a1;void main ( ) int aa5=1,2,3,4,5, i; for ( i=2; i=0; i-) sum (&aai); printf ( “%d n”, aa0);三、程序填空(每空2分,共20分)1. 以下程序的功能是从键盘输入一个整数,判断该整数是否为素数。#include #include (1) int isprime(int a) int i; for ( i
7、=2; i=sqrt (a); i+) if ( (2) ) return 0; return 1;void main ( ) int iNumber; printf (“请输入一个整数:”); scanf (“%d” , &iNumber); if ( (3) ) printf (“%d是素数” , iNumber); else printf (“%d不是素数” , iNumber);2. 以下程序的功能是将数组中的元素按反序存放并输出。#include void invert (int *p, int n)int i, temp, *q;q= (4) ;for ( i=1; in/2; i
8、+)temp=*p;*p=*q;*q=temp;p+; (5) ;void main ( )int a10=1,2,3,4,5,6,7,8,9,10;int *pa; (6) ;invert (pa,10);for( (7) )printf ( %3d, ai );3. 以下程序的功能是用利用折半查找法,在不超过100个数中查找指定的数据。 #include#define N 100void main()int n,aN,m,t,b,i,find,x; scanf(%d,&n);printf(“请按从小到大的顺序输入数据:”);for ( i=0;in;i+) scanf(%d,&ai);pr
9、intf(“请输入要查找的数值:”); scanf(%d, &x); t=0;b=n-1;find=0; do (8) ; if (am=x ) printf(找到了%3d,是 a%dn,x,m); find = 1; else if ( (9) ) b = m - 1; else t = m + 1; while( (10) ); if( find = 0 ) printf(“%3d 没有找到.n,x);四、编程题(每题10分,共30分)1. 输入n的值,输出如图所示高为n的等腰三角形(例如,下图为n=6时的等腰三角形)。* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *2. 求这样一个三位数,该三位数等于其每位数字的阶乘之和(通过调用自定义函数计算阶乘)。即:abc = a! + b! + c!3. 从键盘输入一行字符,统计其中字母、空格、数字以及其它字符的个数。答题卡一、填空题:1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.二、阅读程序写结果:1.2.3.4.5.6.三、程序填空题:(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)四、编程题:7