1、 int a=3; printf(“%dn”,(a+=a-=a*a) ); A) 6 B)12 C) 0 D) 126. 设有如下程序段: int x=2002, y=2003; printf(%dn,(x,y);则以下叙述中正确的是( )A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出B)运行时产生出错信息C)输出值为2002 D)输出值为20037. 以下不能正确定义二维数组的选项是( )A)int a22=1,2; B)int a2=1,2,3,4,5,6;C)int a22=1,2,3;D)int a2=1,2,3,4;8. 能正确计算变量a所占内存字节数的表达式是( )
2、union U char st4; int i; long l; ; struct AA int c; union U u; a;A) sizeof(U) B) 5 sizeof(l) C) sizeof(AA) D) sizeof(u)9. 对于以下递归函数f, 调用f(4),其返回值为( )int f(int n) if(n0)return f(n-1)+n;elsereturn 0;A) 10 B) 11 C) 0 D) 以上均不是10. 以下程序的运行结果是( )# define MIN(x,y) (x)(y) ? (x) : (y) main() int i=10,j=13,k; k
3、=10*MIN(i,j); printf(“%dn”,k); A )10 B )130 C) 100 D) 1311. 设有int i;则表达式i=1,+i,+i|+i, i的值为( )A) 4 B) 3 C) 2 D) 112. 以下程序的运行结果是( )char str=” ABC”,*p=str;printf(“%dn”,*(p+3);A) 67 B) 0 C) 字符C的地址 D) 字符C13. 以下程序的运行结果是( ) char a=”language”,b=”programe”; char *p1,*p2; int k; p1=a; p2=b; for(k=0;knum B) (p
4、+)-age C) (*p).num D) (*+p).num二、填空题(共10分,每小题1分)1 设有以下变量定义,并已赋确定的值,则表达式:w*x+z-y所求得的数据类型为 char w; int x; float y; double z;2 当a5,b4,c2时,表达式ab!=c的值为 3 用for循环打印 1 4 7 10 13 16 19 22 25 , 其语句应为for (i=1; i=9; i+) printf(“%3d”, ) 4 执行完下列语句段后, i值为_ _int i, j;j=10*(i=5);i+=j*=i+2;5 表达式3&(2&34)的值为_ 6 若有定义:in
5、t a34=1,2,3,7,5,4,6,8,10;则a12的值为 ,a21的值为 7 若有以下定义和语句,则+(*p)的值为 int a4=0,1,2,3,*p;p=&a1;8 若有定义:int a33=2,4,6,8,10,12,14,16,18,(*p)3;a1则a10的值是 ,*(*(p+1)+1)的值是 9 对于char c; 若已知其值为小写字母, 将其转换为相应大写字母的表达式为 10 若有以下定义和语句, 则p+1表示 int s23=0,(*p)3; p=s;三、分析程序,写出结果(共18分,每小题3分)1. #includevoid main(void) int num= 0
6、; while(num=2) num+; printf(“%dn”,num);2. #includevoid main(viod ) int a,s,n,count; a=2;s=0;n=1;count=1; while(count=7) n=n*a; s=s+n; +count; printf(“s=%d”, s);3. #includevoid f( int y,int *x)y=y+*x; *x=*x+y; int x=2,y=4; f(y,&x); printf(“%d %dn”,x,y);4. #includevoid main(void ) int i, j, row, col,
7、m; int a34=1,2,3,4,9,8,7,6,-1,-2,0,5; m=a00; for(i=0;i3;i+) for(j=0;jm) m=aij;row=i;col=j; printf(“m=%d, row=%d, col=%dn” ,m, row, col);5. #include int f(int n) static int s=2;while(n) s*=n-;return s;void main(void) int i,j;i=f(2); j=f(3);printf(nThe output of 3.5 is:n);i=%d j=%d n,i,j);6. #include
8、int b23=2,4,6,8,10,12; int a23=2,3,4,4,5,6; int *p, k; p=a0;6; printf(“%4d”,*p); p+;四、指出下面程序中的错误并改正(注:每题仅有一个错误.共10分,每小题2分) c;c=getchar();putchar(c) ; char *str; *str=”abc”;printf(“%sn”, str);3. #include void main(void) char x=a; printf(“%fn”,x=xy) z=x; else z=y; return(z); int a,*b, c; scanf(“%d,%d”
9、, &a, &b); c=max(a,*b); printf(“max=%d”, c);5. #include int a,b; scanf(“%d%d”, a, b); a=a+b; printf(“%dn”, a);五、在下面程序中横线处填上适当字句,使其能正确执行(共12分,每小题4分)1. 有以下程序段:s=1.0;for (k=1;=n;k+) s=s+1.0/(k*(k+1);printf(“%fn”,s);请填空,使下面的程序段的功能完全与之相同。s=0.0; d=1.0; k=0;do s=s+d;_ ;d=1.0/(k*(k+1);while ( _ );2. 以下程序的功能
10、是:通过指针操作,找出3个整数中的最小值并输出#include*b) ; if(num*c) ; printf(“num=%dn”, num);3. 请仔细阅读程序段,在程序段中空栏中填入正确的内容,使程序段与有相同的功能。程序:int f( int n ) if(n=1) return n;else return f(n-1)+f(n-2);_;t0=0; t1=1; t=n;while (_) t = _;t0 = t1;t1 = t;n - -;return _ _;六、编程(共20分,第1小题8分,第2小题12分)1. 编写一程序用于计算1-22+32-42+992-10022. 下面findmax函数将找出数字中的最大元素及下标值和地址值。请按下编写*findmax() 函数。int *findmax(int *s, int t, int *k) int a10=12,23,34,45,56,67,78,89,11,22,k,*add; add=findmax(a,10,&k); printf(“%d,%d,%0n”,ak, k, add);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1