浙江大学C语言总复习题--综合(6)

2018-12-15 17:34

}

void main()

{ f(\ }

4.阅读下面程序,写出运行结果。 #include

void main()

{ int m=18,s=0; do {

switch(m%7) {

case 2 : m/=2;s+=2; break; case 3 : m/=3;s+=3; break; case 5 : m/=5;s+=5; break; default : m--; s--; };

printf(\ } while(m); }

5.阅读下面程序,写出运行结果。 #include void main()

{ void div(int*,int*);

int a[5]={-5,0,60,45,34},i=0,j=2; while(a[i]<=0) i++;

while(a[i]!=1) div(a+i,&j); }

void div(int *n,int *k) { if(*n%*k==0) {

printf(\ *n/=*k; }

else (*k)++; }

6.阅读下面程序,写出运行结果。 #include void main()

{ int s[8],i; char ch='B'-1; /* 字符A的ASCII码为65 */ printf(\ for(i=7;i>=0;i--) { s[i]=ch&1; ch=ch>>1; }

for(i=0;i<8;i++) printf(\ printf(\ }

25

四、程序设计题 (每题10分,共20分)

1.编制程序,输入n个整数(n从键盘输入,n>0),输出它们的偶数和。

2.编制函数,将m行n列数组a每行所有元素都除以该行上绝对值最大的那个元素的绝对值,要求所编写的函数原型为“void f(float **a,int m,int n)”或“void f(float *a[],int m,int n)”。

26

综合自测题2

一、单项选择题(每题2分,共20分) 1.下列运算符中自右向左结合的是:

A) * B) = = C) -> D) ++ 2.下列赋值语句中正确的是:

int a[3] = { 1, 2, 3 }, *p;

A) p=&a; B) *p=a; C) *(a+1)=a; D) p=a+1; 3.如下程序段:

int c[]={1, 2, 3}; int *k; k=c;

printf(\ 其输出应为:

A) 1 B) 2 C) 3 D) 以上均不对

4.执行 i=0; if(i>2) if ( i<3 ) i=1; else i=2; i=3; 后i的值应为: A) 1 B) 2 C) 3 D) 语句错误 5.对于以下结构定义: struct { nt len; char *str; } *p;

++p->str中的++加在

A) 指针str上 B) 指针p上 C) str所指的内容上 D) 以上均不是6.下列程序段的输出结果是:

char *c[3]={“FIRST”, “SECOND”, “THIRD”}; printf(“%s”, c+1);

A) SECOND B) E C) ECOND D) 语法有错 7.对于以下递归函数f, 调用f(4),其返回值为: int f(int n)

{ if (n <= 0) return 1; return f(n-1)+(n++); }

A) 10 B) 11 C) 15 D) 以上均不是 8.循环 for(i=1,j=6; ++i!=--j; ) s=i+j; 将执行 A) 2次 B) 3次 C) 4次 D) 以上均不是 9.下列语句执行后n的值为:

n=(4 > 4 - !2) && (2 > 1) || (2 & 6); A) 0 B) 1 C) 6 D) 以上均不对 10.执行完下列语句段后, i值为: int i;

int f(int n)

{ static int m = 1; n+=m++; return n; }

n=f(1); n=f(2);

27

3 B) 4 C) 5 D) 以上均不是 二、填充题(每空2分,共30分)

1.运行下列程序段后,n的值是:_________ int n; n = 7 & 3; switch (n) {

case 1: n=1; break; case 2: n=2; break; case 3: n=3; break; default: n=4; break;

}

2.下列程序段的输出结果是:_______________ int i=010, j=10;

printf(\3.如下函数

void f(char *s, char *t) { int i; i=0;

while (s[i]=t[i]) i++; }

等价于:

void f(char *s, char *t) { while (_______ = *t++); }

4.下列程序段的输出结果是:_______________ int a=0,b=0;

if(++a>0 && ++b>0) ++a;

printf(\

5.下列程序段执行后,i 和j的值分别是 ________________ int i=6, j=0;

while(i--, i!=1){j += --i;};

6.下列程序段执行后,x 和y的值分别是 ________________ int x=5,y=1;

do {(x>y) ? (x-=1,y+=3) : (x+=4,y-=2); }while (x+y<15);

7.用下列for循环将小写字母逆序输出(即从z到a), 其语句应为: for (i=0; i<26; i++) ________ 8.设有变量定义

int i, j, k=2, *ip;

则执行下列语句后,i和k的值分别为 ________________ ip= &k; i=(*ip)++; j=++(*ip);

9.下列程序段执行后,i = __________ int i;

i=3 ^ 5 + 011 & 0x1a;

28

10.下列程序段执行后,i = __________ #define M(x,y) x+y #define N(x,y) x-y int i;

i=M(1,2+3)*3/N(4+2,2); 11.下列函数strcmp(s1, s2)是字符串比较, 根据s1,s2大小分别返回负数(s1s2). 请将缺少部分补上。其中负数和正数为s1和s2中第一个不同的两个字母的差值. strcmp(char * s1, char * s2)

{ for(; *s1!=_______; ++s1, ++s2) if (*s1!= *s2) break; return (_______); }

12.下列程序段的输出结果是:_______________ union ll { struct { int x;

int y; } in; int a;

int b; } e; e.a=1; e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b;

printf(\

现有链表,如下图所示,把p0结点插入指针p所指结点的后面,请写出必要的两个语句(次序不能颠倒): (1)________________________; (2)________________________; struct list { int i;

struct list *next; };

struct list *head,*p0, *p;

三、程序分析题 (共30分) 1. (8分)

#include p int cal( int a, int b, char op) { if (op = = ?*? ) head return (a*b); NULL else return (a+b); p0 }

main() { int x,y,z, result; char op1, op2;

scanf(“%d%c%d%c%d”, &x, &op1, &y, &op2, &z); if (op1= =?+? && op2 = =?*?)

result = cal(x, cal(y,z,op2), op1);

29


浙江大学C语言总复习题--综合(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:微机原理与接口技术试题库(含答案)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: