| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1816 人关注过本帖
标题:一份C的试卷 浙大
取消只看楼主 加入收藏
long0603
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-3-29
收藏
 问题点数:0 回复次数:0 
一份C的试卷 浙大

A卷 注:请将正确答案写在答卷纸上

一、从下列四个供选择的答案中选出正确的一个答案(每题2分,共30分)

1 语句printf("%%d%d", 123); 将输出: A) %123%d B) %%d123 C) %d123 D)上述语句语法有错

2 执行下列程序段后, a值为: int a, b; a=15; b=12; a=(a-- ==b++)? a%5 : a/5; A) 0 B) 2.8 C ) 4 D) 2

3 判断字符变量c的值为数字('0'---'9')则返回1,否则返回0, 可用表达式: A) '0'<=c<='9' B) '0'<=c && c<='9' C) '0'<=c || c<= '9' D)以上均不是

4 对于int x, y; 语句 if (x<0) y= -1; else if (!x) y=0; else y=1; 等价于: A) y=0; if (x>=0) if (x) y=1; else y= -1; B) if (x!=0) if (x>0) y=1; else y= -1; else y=0; C) if (x<0) y= -1; if (x!=0) y=1; else y=0; D) y= -1; if (x!=0) if (x>0) y=1; else y=0;

5 循环 for(i=0, j=5; ++i!=--j; ) printf("%d %d", i, j); 将执行 A) 6次 B) 3次 C) 0次 D) 无限次

6 下列程序段执行后s值为: int i=5, s=0; do if (i%2) continue; else s+=i; while (--i); A) 15 B) 9 C) 6 D) 以上均不是

7 以下程序的正确运行结果是。 f(int a) {int i=0;static int c=3; i++;c++; return(a+i+c); } main() {int a=2,i; for(i=0;i<3;i++) printf("%4d",f(a)); } A) 7 7 7 B) 7 10 13 C) 7 9 11 D) 7 8 9

8 对于以下宏定义: #define SQ(x) x*x #define DD(x,y) SQ(x)-SQ(y) 宏调用DD(2*3, 2+3)执行后值为: A) 43 B) 11 C) 25 D) 以上均不是

9 对于以下结构定义: struct { int len; char *str; } *p; *p->str++中的++加在 A) 指针str上 B) 指针p上 C) str所指的内容上 D) 以上均不是

10 若x=2,y=3则x&y的结果是。 A) 0 B) 2 C) 3 D) 5

11若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式 字符串应是。 A) "ab+" B) "wb+" C) "rb+" D) "ab"

12 已知函数的调用形式:fread(buffer,size,count,fp);其中 buffer代表的是。 A) 一个整形变量,代表要读入的数据项总数 B) 一个文件指针,指向要读的文件 C) 一个指针,指向要读入数据的存放地址 D) 一个存储区,存放要读的数据项

13 若有以下说明和语句, 已知int和double类型分别占2和8个字节,则sizeof(st)的值为: struct st { char a[10]; union { int i; double y; } }; A) 18 B) 20 C) 12 D) 以上均不是

14 在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为: A) void B) double C) char D) int

15 对于以下递归函数f, 调用f(4),其返回值为: int f(int n) { if (n == 0) return 1; return f(n-1)+n; } A) 10 B) 11 C) 0 D) 以上均不是

二、填空题(每空2分, 共40分)

1 用for循环打印 1 4 7 10 13 16 19 22 25 , 其语句应为(只能用变量i或其表达式): for (i=1; i<=9; i++) printf("%3d", ___⑴_____); 2 执行完下列语句段后, 将输出: ____⑵_____ static char s[]="hello"; printf("%d %s", sizeof(s), s+2) 3 执行完下列语句段后, i值为:____⑶_____ static int a[3][4]={{1,2,3},{4,5,6}}, i; i= a[1][3]; 4 执行完下列语句段后, i值为:___⑷______ int i; int f(int x) { static int k = 0; x+=k++; return x; } i=f(2); i=f(3); 5 执行完下列语句段后, i值为:____⑸_____ int i; int f(int x) { return ((x>0)? x*f(x-1):3); } i=f(f(1)); 6 对于如下程序test.c, 编译后运行 test hello world 将输出______⑹_________:: #include <stdio.h> main(int agrc, char *argv[]) { printf("%d %s", argc, argv[1]+1); } 7 对于char c; 若已知其值为小写字母, 将其转换为相应大写字母的表达式为_⑺_ 8 对于如下类型定义A: typedef int (*A[10])(); 也可以用以下方式分开定义: typedef ______⑻_________; /*先定义PT*/ typedef PT A[10] ; 9 将p说明为字符数组指针,数组大小为10,可写为:______⑼________ 10 如下函数 void f(char *s, char *t) { int i; i=0; while (s[i]=t[i]) i++; } 等价于: void f(char *s, char *t) { while (____⑽___ = *t++); } 11 int i=0, s=0; while (i<n) s+=i++; 等价于 int i, s; for(________⑾____________); 12 下列程序将字符串s逆序输出,如f("abcd"), 将输出"dcba"; void f(____⑿________) { int i=0; while(s[i]) i++; for ( ___⒀_____) printf("%c", s[i]) ; } 13 下列程序判断字符串s是否对称,对称则返回1,否则返回0; 如f("abcba")返回1, f("abab")返回0; int f(____⒁_______) { int i=0,j=0; while(s[j]) j++; for ( j--; i<j && ___⒂____; i++, j--) ; return ____⒃_____; } 14 对于 int *p, *q, i=5, j=6;执行: p = &i; q = p; p = &j;后 (*p)=____ ⒄___ , (*q)= ____⒅____ 15 下面程序用变量counter统计文本文件test.txt中字符'a'的个数。 #include <stdio.h> main() { FILE *fp; long counter=0; char c;

if ( __⒆____) { printf("Can not open file\n"); exit(0); } while (_____⒇________) if (c=='a') counter++; printf("The number of a is: %d\n", counter); }

三、程序阅读理解,并回答相应问题(共18分) 1 (6分) #include <stdio.h> int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; main() { int s, i; for(s=0, i=0; i<3; i++) s+= *(*a+i); printf("%d ", s); for(s=0, i=0; i<3; i++) s+= **(a+i); printf("%d ", s); }

问题: 上述程序运行后, 将输出______①_________

2 (12分) #include <stdio.h> int a[2][5]; void p1(int v[]) { int i, j, temp; for (i=1; i<5; i++) for(j=i-1; j>=0 && v[j]<v[j+1]; j--) { temp=v[j]; v[j]=v[j+1]; v[j+1]=temp; } } void p2(int v1[], int v2[]) { int i=0, j=0; while (i<5 && j<5) if (v1[i]>v2[j]) printf("%d ", v1[i++]); else printf("%d ", v2[j++]); while (i<5) printf("%d ", v1[i++]); while (j<5) printf("%d ", v1[j++]); printf("\n"); } main() { int i,j; for (i=0; i<2; i++) for(j=0; j<5; j++) scanf("%d", &a[i][j]); p1(a[0]); p1(a[1]); for (i=0; i<2; i++) for(j=0; j<5; j++) printf("%d ", a[i][j]); printf("\n"); p2(a[0], a[1]); }

问题: 当输入5 9 1 12 10 7 3 11 4 10时, 上述程序运行后, 第一行将输出______②________ 第二行将输出_______③________

四 请按下列要求编程(12分): 1、[程序说明]请编写函数sum(a,n), 求Sn=a+aa+aaa+……+aa…aa(n个a)的值,其中a是一个数字。例如,若a=2, n=5时 Sn=2+22+222+2222+22222,其值应为24690。根据下列已完成的部分, 完成未完成部分(注:在函数sum中不能定义新的变量, 可不用已定义的某些变量). (5分) long sum(int a, n) { long sn, tn; int count; ......... return (sn); } 2、请编写一个函数substr(char *s, char *t), 用于判断字符串t是否包含于字符串s中,若是则返回第一个匹配字符串相应起始下标,否则返回-1。如substr("abcdefg", "cde")将返回2,.substr("abcdefg", "cdf")将返回-1,substr("abcdefgbc", "bc")将返回1 。注意:除可直接利用strlen(char *string)函数外,不能使用任何其它字符串库函数。(7分)

搜索更多相关主题的帖子: 试卷 
2005-09-28 21:50
快速回复:一份C的试卷 浙大
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029266 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved