浙江大学“程序设计基础-C”试题卷
2001-2002学年春季学期
考试时间: 2002年6月30日下午2:00-4:00
注意:答题内容必须写在答题卷上,写在本试题卷上无效
一.单项选择题(每题2分,共20分)
1.C 语言程序的三种基本结构是顺序结构、选择结构和______结构。
A.递归 | B.转移 | C.循环 | D.嵌套 |
2.下列运算符中,优先级最高的是_____。
A.-> | B.++ | C.&& | D.= |
3.表达式 !(x>0&&y>0) 等价于_____。
A.!(x>0)||!(y>0) | B.!x>0||!y>0 | C.!x>0&&!y>0 | D.!(x>0)&&!(y>0) |
4.表达式 sizeof("\nsum=%d\n") 的值是______。
A.8 | B.9 | C.10 | 编写c语言的软件D.11 |
5.以下选项中不正确的实型常量是_____。
A.0.23E | B.2.3e-1 | C.1E3.2 | D.2.3e0 |
6.表达式______的值不是1。
A.0?0:1 | B.5%4 | C.!EOF | D.!NULL |
7.数组定义为 int a[11][11],则数组a 有_____个数组元素。
A.12 | B.144 | C. 100 | D. 121 |
8.对于以下的变量定义,表达式______是不正确的。
struct node {
int j, k;
} x, *p=&x;
A.p->k=2 | B.(*p).k=2 | C.x.k=2 | D.x->k=2 |
9.不正确的赋值或赋初值的方式是______。
A.char str[ ]="string"; | B.char str[10]; str="string"; |
C.char *p="string"; | D.char *p; p="string"; |
10.设程序中不再定义新的变量,写出在函数main中可以使用的所有变量______。
#include <stdio.h>
int z;
int p(int x)
{ static int y;
return(x+y);
}
void main( )
{ int a,b;
printf("%d\n", p(a));
……
}
A.a, b | B.a,b,z | C. a,b,y,z | D.a,b,x,y,z |
二、填空题(每题2分,共30分)
1.设字符型变量ch的值是小写英文字母,将它转换为相应大写字母的表达式是______。
2.表达式 1<0<5 的值是______。
3.表达式 ~(10>>1^ ~5) 的值是______。
4.下列程序段的输出结果是______。
int a=1;
long b=a*0x12345678;
printf("%x\n", b);
5.设变量已正确定义,在程序段B中填入正确的内容,使程序段A和程序段B等价。
程序段A
for(k=s=0; k<=10; s+=a[k++])
if (a[k]<0) break;
程序段B
for(k=0, s=0; ; s+=a[k++])
if (______) break;
6.下列程序段的输出结果是_____。
#define T 10
#define MD 3*T
printf("%d", 30/MD);
7.下列程序段的输出结果是_____。
int k, s;
for(k=s=0; k<10&&s<=10; s+=k)
k++;
printf("k=%d, s=%d", k, s);
8.下列程序的输出结果是_____。
# include <stdio.h>
int f(int m)
{ static int k=2;
k++;
return k+m;
}
void main( )
{ int s;
s=f(2);
printf("%d, %d\n", s, f(s));
}
9.对于以下递归函数f,调用 f (3) 的返回值是_____。
f (int n)
{ return ((n<=0) ? n: f(n-1)+f(n-2));
}
10.下列程序段的输出结果是_____。
int c[ ]={10, 0, -10};
int *k=c+2;
printf("%d", *k--);
11.下列程序段的输出结果是_____。
int k=1, j=2, *p=&k, *q=p;
p=&j;
printf("%d, %d",*p, *q);
12.下列程序的输出结果是_____。
# include <stdio.h>
char * f(char *str)
{ return str="fun";
}
void main( )
{ char *str="one";
printf("%s, %c\n", f(str)+1, *f(str)+1);
}
13.下列程序的输出结果是_____。
#include <stdio.h>
void p(int *x,int y)
{ ++ *x;
y --;
}
void main()
{ int x=0, y=3;
p(&x, y);
printf("%d, %d",x, y);
}
14.下列程序的输出结果是_____。
# include "stdio.h"
void main( )
{ int j, k, a[2][2];
for(k=1; k<3; k++)
for(j=1; j<3; j++)
a[k-1][j-1]=(k/j)*(j/k);
for(k=0; k<2; k++)
for(j=0; j<2; j++)
printf("%d,", a[k][j]);
}
15.用typedef定义一个指向函数的指针类型FP,该函数的返回值为整型。
三、程序阅读题(每题5分,共15分)
1.输入c2470f ?<回车>后,下列程序的输出结果是_______,该程序的主要功能是_______。
# include "stdio.h"
int main( )
{ char ch;
long number=0;
while((ch=getchar())<'0'||ch>'6')
;
while(ch!='?'&&ch>='0'&&ch<='6'){
number=number*7+ch-'0';
printf("%ld#",number);
ch=getchar();
}
}
2.输入4<回车>后,下列程序的输出结果是_______。
# include "stdio.h"
int main( )
{ int j,k,n;
float f,s;
scanf("%d", &n);
s=0; f=1;
for(k=1;k<=n;k++){
for(j=1;j<k;j++)
f=f*k;
s=s+f;
printf("%.0f#",s);
}
}
3.输入55 92 63 69 -1<回车>后,下列程序的输出结果是_______。
#include <stdio.h>
#include <alloc.h>
struct link {
int mark;
struct link * next;
};
void f(struct link **);
main( )
{ struct link * head, *p;
head=(struct link *)malloc(sizeof(struct link));
head->mark = 0;
head->next=NULL;
f(&head);
for (p=head; p!=NULL; p=p->next)
printf("%d#", p->mark);
}
void f(struct link ** head)
{ int mark;
struct link *p;
scanf("%d", &mark);
if ( mark<=0){
(*head)->mark++;
return ;
}
else{
p=(struct link *)malloc(sizeof(struct link));
p->mark = mark;
p->next = *head;
*head = p;
f(head);
}
}
四、程序填空题(每空2分,共20分)
1.输入10个浮点数,调用函数f(x)计算并输出相应的函数值。
f(x)的功能是计算分段函数:
x2+2x+1 x<0
y= 0 x=0
3 x>0
#include <stdio.h>
⑴
{ if (x<0) ⑵ ;
else ⑶ ;
else return 3;
}
void main( )
{ int k;
float x;
for(k=1; k<=10; k++){
scanf("%f", &x);
printf("y=%f\n", f(x));
}
}
2.函数sort 使用冒泡法将一维整型数组中各元素按值从大到小排序。
void sort( int a[ ], int n)
{ int k, j, t;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论