浙江大学“C程序设计及实验”试题卷
2003-2004学年春季学期
考试时间: 2004年6月25日上午8:30-10:30
注意:答题内容必须写在答题卷上,写在本试题卷上无效
一.单项选择题(每题1分,共10分)
1. C 语言程序的三种基本结构是顺序结构、选择结构和______结构。
A.递归 B.转移 C.循环 D.嵌套 2. 下列运算符中,优先级最高的是_____。
A.+= B.[ ] C.? : D.& 3. 运算符_____ 不能做为单目运算符。
A./ B.& C.* D.+ 4. 以下选项中不正确的字符常量是_____。
A.'1' B.'\\0' C.'%d' D.10 5. 表达式 x&&1 等价于_____。
A.x==0 B.x==1 C.x != 0 D.x != 1 6. 已知字符 ‘a’ 的ASCII码为 97 ,执行下列语句的输出是_____。
printf (\
A.b99 B.98c C.9899 D.bc 7. 在C 语言程序中,在函数内部定义的变量称为______。
A.全局变量 B.外部变量 C.局部变量 D.内部变量 8. 执行语句 printf(\将得到出错信息。
A.%u B.%s C.%x D.%f 9. 对于以下的变量定义,表达式______是不正确的。 struct node { float x, y; } point, *p=&point;
A.p->x=2.0 B.(*p).y=3.0 C.point.x=2.0 D.*p->y=3.0 10. 对于变量定义:int **p[10], p 是一个______。
A.指针 B.数组 C.函数 D.数组元素
二、填空题(每题2分,共30分)
1. 写出计算s(s-a)(s-b)(s-c)的C语言表达式______。
2. 如果运算符 * 和 / 都是右结合的,则表达式7 * 2 / 3 的值是_____。 3. 表达式 !!10的值是_____。
4. 表达式 ~(~1<<1)的值是______。 5. 下列程序段的输出结果是_____。 #define MM(x,y) (x)+(y) printf(\MM(2*3,15)*2);
2003-2004学年春季学期“C程序设计及实验”试题卷 第 1 页(共8页)
6. 对于变量定义:int a[10], *p=a+3; 数组a的最后一个元素是p[__]。 7. 下列程序段的输出结果是_____。
int k=1, j=2; int *p=&k, *q=&j; (*p)++; k=j; (*p)++;
printf(\
8. 下列程序段的输出结果是_____。
char *st[ ]={\ printf(\9. 下列程序的输出结果是_____。 #include
{ int *p; p=x; x=y; y=p; }
void main() { int x=0, y=3; p(&y, &x);
printf(\ }
10. 用typedef定义一个整型指针类型PA。
三、程序阅读题(每题5分,共30分)
1.输入2 59 60 <回车>后,下列程序的输出结果是_______。
#include
printf(\}
2.输入2+5*3/2$= <回车>后,下列程序的输出结果是_______。
#include
2003-2004学年春季学期“C程序设计及实验”试题卷 第 2 页(共8页)
{ int op1, op2, res; char operator; scanf(\&op1); operator = getchar(); while(operator!='='){ scanf(\&op2); switch(operator){ case '+': res = op1+op2; break; case '-': res = op1-op2; break; case '*': res = op1*op2; break; case '/': res = op1/op2; break; default: res = 0; } op1 = res;
printf(\ operator = getchar(); } }
3.调用函数f(2004, 4, 10)的返回值是_______。
int f(int x, int y, int z) { int k, flag; int tab[2][13]={ {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} };
flag=x%4==0 && x0!=0 || x@0==0; for(k=1; k 4.调用函数f(15)的输出结果是_______。 void f(int n) { if(n<3) printf(\ else{ f(n/3); printf(\n%3); } return; 2003-2004学年春季学期“C程序设计及实验”试题卷 第 3 页(共8页) } 5.输入How are you?<回车>后,下列程序的输出结果是_______。 (函数strcmp(s, t)的功能:若s和t相等,返回0;若s大于t,返回一个正数;若s小于t,返回一个负数) #include scanf(\ strcpy(ss,s); for(i=1; i<3; i++){ scanf(\ if(strcmp(s, ss) > 0) strcpy(ss,s); } printf(\ss); } 6.下列程序的功能是_______。 #include if((fpa=fopen(\== NULL){ printf(\not open file a.txt !\\n\ exit(0); } if((fpb=fopen(\== NULL){ printf(\not open file b.txt!\\n\ exit(0); } while(!feof(fpa)) fputc(fgetc(fpa), fpb); fclose(fpa); fclose(fpb); } 四、程序(段)填空题(每空2分,共40分) 1.读入1 个正实数eps,计算并输出1-1/3+1/5-1/7+……,直到最后一项的绝对值小于eps。 2003-2004学年春季学期“C程序设计及实验”试题卷 第 4 页(共8页) #include int temp, flag; double eps, item, sum; scanf(\&eps); sum = 0; item = flag = temp = 1; while(fabs(item)>=eps){ sum = sum + item; temp = (1) ; (2) ; item = (3) *flag/temp; } printf(\sum); } 2.输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。 #include { int blank=0, digit=0, letter=0, other=0; char c; c = getchar(); while( (4) ){ if( (5) ) /* 判断英文字母 */ letter++; else if( (6) ) /* 判断数字字符 */ digit++; else if( (7) ) /* 判断空格 */ blank++; else other++; (8) ; } printf(\blank=%d, digit=%d, other=%d\\n\} 3.a是一个3×3的矩阵,输入a的元素,如果a是下三角矩阵, 输出\否则, 输出\。(下三角矩阵,即主对角线以上的元素都为0, 主对角线为从矩阵的左上角至右下角的连线) #include \ 2003-2004学年春季学期“C程序设计及实验”试题卷 第 5 页(共8页)