1、一、选择题:1.下列程序的运行结果是( )#include int a=2;int f(int k) static int n; int m; m=n=0; n+; a+; m+; k+; return n+m+a+k;main() int k; for(k=0;k2;k+) printf(“%d,”,f(k);printf(“n”);A.6,6,B.6,7,C.6,8,D.6,9,2.若有“char w; int x; float y; double z;”则表达式“w*x+z-y”值得数据类型为( )A.int型B.char型C. float型D. double型3.可以使用多种形式实现函
2、数调用,以下形式中非法的函数调用形式是( )A.函数形参B.函数表达式C.函数语句D.函数实参4.以下程序的运行结果是:( )void fun(long a) printf(“%d”,a%10); if(a/10) fun(a/10); printf(“%d”,a%10);main() long a=123456789; fun(a); A.12345678987654321B. 987654321123456789C. 987654321987654321D.9876543215.有以下程序,执行后的结果是( )#include main() char s =”abcde”; s+=2;pr
3、intf(“%dn”,s0); A.输出字符c的ASCII码值B. 程序出错C.输出字符cD.输出字符a的ASCII码值6.已有定义语句:int a=1,b=2,c=3; float d=4; 以下能正确表示数学公式ab+cd的C语言表达式是( )A. a/d/(b+c)B.a/(b+c)*1/dC.a/(c+b)/dD. a/(b+c)*d7.有以下程序,运行后的输出结果是( )#include viod fun(int *a,int n) int t,i,j; for(i=0; in-1; i+) for(j=i+1; jn; j+) if(aiaj) t=ai; ai=aj; aj=t;
4、 main() int c10=1,2,3,4,5,6,7,8,9,0,i; fun(c+4,6); for(i=0; i10; i+) printf(“%d,”,ci); printf(“n”);A.0,9,8,7,6,5,1,2,3,4,B.1,2,3,4,5,6,7,8,9,0,C.1,2,3,4,9,8,7,6,5,0,D.0,9,8,7,6,5,4,3,2,1,8.有以下程序,运行后的结果是( )#include main() int a=10,b=11,c=12.5; s=a+=10&b-=2&c+;printf(“%d,%d,%d,%dn”,s,a,b,c); A.0,10,10
5、,12B.1,10,10,12C.1,11,11,12D.0,11,10,129.若有定义语句:double x,y,*px,*py; 执行:px=&x; py=&y; 正确的输入语句是( )A.scanf(“%lf %lf”,x,y);B. scanf(“%f %f”,&x,&y);C. scanf(“%f %f”,x,y);D. scanf(“%lf %le”,px,py);10. 有以下程序,运行后的结果是( )#include main() char *p1=0; long*p2; double *p3;printf(“%d,%d,%dn”,sizeof(p1), sizeof(p2)
6、, sizeof(p3) ); A.0,0,0B. 4,4,4C.1,2,4D. 1,4,811.下题函数功能为:求二分之一的圆面积,函数通过形参得到圆的半径,将求出的二分之一圆面积通过函数返回至返回(面积公式s=R)。给出函数中有两行出错,请讲错误项找出。( )L1#include L2double fun( double r)L3 return 3.14159*r*r/2 L4main()L5 int x; printf(“enter x:”,);L6 scanf(“%lf”,&x);L7 printf(“s=%lfn”,fun(x);L8A. L2,L3B.L5,L7C.L3,L5D.L
7、2,L712.已知char a =”abc18d0def”;则sizeof(a)与strlen(a)分别为( )A.11;5B.10;6C.10;5D.11;613.以下叙述中错误的是( )A.指针的运用可使程序代码效率更高B.函数可以通过指针形参向所指单元传回数据C.字符型指针可以指向一个字符串D.基类型不同的指针可以直接相互赋值14.以下选项中,能作数据常量的为( )A.1115LB.0118C.1.5e1.5D.o115二、随机题:1.阅读题:(将答案填写于方框处) #include int d=1;void fun( int p) int d=5; d+=p+; printf(“%d”
8、,d); main() int a=3; fun(a); d+=a+; printf(“%d n”,d); 2. 阅读题:(将答案填写于方框处)#include main() int x =1,3,5,7,2,4,6,0,i,j,k; for(i=0; i=i; j-) if(xj+1xj) k=xj; xj=xj+1; xj+1=k; for(i=0; i3; i+) for(j=4; jxj+1) k=xj; xj=xj+1; xj+1=k; for(i=0; i8; i+) printf(“%d,”,xi);3. 阅读题:(将答案填写于方框处)#include void fun( int
9、 a, int b) int t; t=a; a=b; b=t; main() int c10=1,2,3,4,5,6,7,8,9,0,i; for(i=0; i10; i+=2) fun(ci,ci+1); for(i=0; i10; i+) printf(“%d,”,ci); printf(“n”);4.填空题:猴子吃桃,猴子第一天摘下若干个桃子,当即吃了一半觉得不过瘾,又多吃了一个;第二天又将前一天剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃了前一天剩下的一半多一个。到了第十天想再吃时,只剩下一个桃子,求第一天共摘了多少个?将横线处填上语句完整程序。#include main()
10、int s,i,j; for(i=1; ; i+) /*穷举法*/ _; for(j=1; j10; j+) _; if(s=1) break; printf(“%d”,i);5. 填空题:下面给定程序,函数fun的功能是:将形参a所指数组中的前半部分元素的值和后半部分元素的值对换。形参n中存放数组中的数据个数,若n为奇数,则中间的元素不动。例如:若a所指数组的数据为:1,2,3,4,5,6,7,8,9,则调换后为:6,7,8,9,5,1,2,3,4。将横线处填上语句完整程序。#include #define N 9void fun( int a , int n) int i,t,p; p=(
11、n%2=0)?n/2:n/2+_; for(i=0; in/2; i+) t=ai; ai=_; _=t; main() int bN=1,2,3,4,5,6,7,8,9,i; printf(“the original data:n”); for(i=0; iN; i+) printf(“%4d”,bi); printf(“n”); fun(b,N); printf(“the data after moving:n”); for(i=0; iN; i+) printf(“%4d”,bi); printf(“n”);6. 阅读题:(将答案填写于方框处)#include #define MIN(x
12、,y) (x)(y)?(x):(y)main() int i=10,j=15,k;k=10*MIN(i,j); printf(“%dn”,k);7. 填空题:下面给定程序,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指的变量中。ss所指字符串数组中共有M行字符串,且串长小于N。将横线处填上语句完整程序。#include #include #define M 5#define N 20int fun( char (*ss)N, int *n) int i,k=0,len=N; for(i=0;_; i+) len=strlen(s
13、si); if(i=0) *n=len; if(len_*n) *n=len; k=i; return _; main() char ssMN=“shanghai”,”guangzhou”,”beijing”,”tianjing”,”chongqing”; int n,k,i; printf(“the original strings are:n”); for(i=0; iM; i+) puts(ssi);k=fun(ss,&n);printf(“the length of shortest string is:%dn”,n); printf(“the shortest string is:%
14、sn”,ssk);8. 填空题:下面给定程序的功能是:选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。将横线处填上语句完整程序。#include int fun( int k, int n) int a1,a2; a2=k/10; a1=k-_; if(_) printf(“%4d”,k); n+; return n; else return -1;main() int n=0,k,m;for(k=10; k=99; k+) m=fun(k,n); if(_) n=m; printf(“n=%dn”,n);9. 填空题:下面给定程序,fun函数的功能是:不断从键盘读入整数,
15、由变量a统计大于0的整数个数,用变量b统计小于0的整数个数,当输入0时停止读入,通过形参px和py把统计的数据传回主函数进行输出。将横线处填上语句完整程序。#include void fun( int *px, int *py) int _; scanf(“%d”,&k); while(_) if(k0) a+; if(k0) b+; _; *px=a; *py=b; main() int x,y; fun(&x,&y); printf(“x=%d y=%dn”,x,y);10. 阅读题:(将答案填写于方框处)#include main() int a=3,b=7,c=1,d;d=a-|-c&
16、b+; printf(“%d,%d,%d,%o”,a,d,c,b);11. 填空题:下面给定程序的功能是:使用冒泡法将数组N个元素,排成升序,并以每行5个元素的形式输出。将横线处填上语句完整程序。#include #define N 10main() int aN; int i,j,t; for(i=0; i=N; i+) scanf(“%d”,&ai); for(i=0; i_; i+) for(j=0; j_; j+) if(_) t=aj; aj=aj+1; aj+1=aj; for(i=0; iN; i+) printf(“%5d”,ai); if(i+1)%5=0) printf(“
17、n”); 12. 填空题:输出1000以内的所有完数(一个数如果恰好等于它的因子之和,这个数就称为完数,例如:6的因子是1,2,3,6=1+2+3,6是完数)。将横线处填上语句完整程序。程序执行后的输出结果为:6=1+2+328=1+2+4+7+14496=1+2+4+8+16+31+62+124+248根据输出结果格式填空#include main() int i,j,s; for(i=1; i1000; i+) s=0; for(j=1; ji; j+) if(_) s+=j; if(_) printf(“%d=1”,i); for(j=2; ji; j+) if(_) printf(“+%d”,j); printf(“n”); 答案:一、1-5 CDABB 6-10 ACDDB11-14 CDDA二、1. 842.7,5,3,1,0,2,4,6,3.1,2,3,4,5,6,7,8,9,0,4.s=i s=s/2-15. 1 ap+i ap+i6.157. iM 0/m!=-19. k,a=0,b=0 k!=0 scanf(“%d”,&k);10.2,1,1,711. N-1 N-1-i ajaj+112. i%j=0 s=i i%j=0