1、院、系领导审批并签名 A 卷参考答案广州大学 2009-2010 学年第 1 学期考试卷课程 程序设计 1 考试形式(闭卷,考试)学院 数学与信息 系 专业 信安,计 班级 学号 姓名 _ 题次 一 二 三 四 五 六 七 八 九 十 总分 评卷人分数 40 20 20 20 100评分一、单项选择题(每小题 2 分,共 40 分)1. 十六进制数 CDE 转换成八制数是(A )A) 6336 B) 6363 C) 7337 D) 73732. 以下所列的 C 语言常量中,错误的是 ( B )A) 1UL B) e0.5 C) “A” D) b3. 已知字母 c 的 ASCII 码为十进制的
2、99,下面程序的输出是( A )int main() char c=c;printf (“%d,%cn“,c+2,c+3); A) 101, f B) 99, f C) 101, e D) 101, 1024. 表达式 5-3/2-1 的值是( B )A) 0 B) 3 C) 2.5 D) 25. 设 x、z 均为 int 型变量, x 的值为 1, 则求值表达式 z=x-, +x 后,x, z 的值分别为( C ) A) 0, 1 B) 1, 0 C) 1,1 D) 0, 06. 设 x、z 均为 int 型变量, x 的值为 1, 则求值表达式 z=x-|x+ 后,x, z 的值分别为(
3、A ) A) 0, 1 B) 1, 0 C) 1,1 D) 0, 07. 若函数 f 为 int f (int x) return -(x0); 则 f(2009), f(-2008) 和 f(0) 的值分别为 ( C )A) 0 1 2 B) 1 1 0 C) 1 -1 0 D) -1 1 08. 下面函数的输出为:(B)int x=1;int main()int x=2;extern int x;printf (“%d ”, x);printf(“%dn”, x); A) 1 1 B) 1 2 B) 2 1 D) 2 29. 下列程序的输出为:(A)int main()char *p=”h
4、ello”, *q;for (q=p; *q; q+);printf (“%dn”, (int)(q-p);A) 5 B) 4 C) 6 D) 不是一个确定的值10. 想要表示若 x 既不能被 3 整除,又不能被 5 整除,则把 S 的值加 x,下面哪条语句是错的?( B )A) if (x%3)*(x%5) S+=x;B) if (x%3=0)+(x%5=0)-(x%15=0) S+=x;C) if (x%3)=0|!(x%5); else S+=x;D) if (x%3)!=0) if (x%5)!=0) S+=x;11. 下列程序段的输出结果是( C )void fun(int * x,
5、 int * y) printf(“%d %d “, *x, *y); *x=3, *y=4;int main() int x=1,y=2;fun(printf(“%d %dn“,x, y);A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 212. 若有定义: float x;int a,b; 则正确的 switch 语句是( C )A) B)switch(x) switch(x) case 1.0:printf(“*n“); case 1,2:printf(“*n“);case 2.0:printf(“*n“); case 3:printf(“*n“);
6、C) D) switch (a+b) switch (a+b); case 1:printf(“n“); case 1:printf(“*n“);case 1+2:printf(“*n“); case (int)x: printf(“*n“); 13. 以下程序的输出结果是 ( C )int main() int i, x33=1,2,3,4,5,6,7,8,9;for(i=0;ix); B) printf (“%dn”, p0.x);C) printf (“%dn”, *p.x); D) printf (“%dn”, *p-x);17. 下列代码的输出为: (D)printf (“%sn”,
7、 “HelloWorld”+4);A) Hello B) HelloWorld C) World D) oWorld18. 下列语句的输出结果是( B )putchar (putchar (a)A) a B) aa C) A D) ab19. 下面代码的输出是( B )char foo=“Hello World”;printf (“%d %d”, strlen(foo), sizeof(foo);A) 11 11 B) 11 12 C) 12 11 D) 12 1220. 有如下代码main ()_ int x=1;printf (“%dn”, int);横线出不可填入的关键词为 ( C )A
8、) auto B) registerC) extern D) static二、填空题(每空 2 分,共 20 分)1. 若想通过以下输入语句给 a 赋于 1,给 b 赋于 2,int a,b;scanf(“%d%d”,则输入数据的形式应该是_【1 】1 2 2. 写出能正确表示 a 是正偶数的关系表达式 _【2】(a0) _4. 若有如下代码double s;double a44 = 1,2,3,4,2,3,4,1, 3,4,1,2,4,1,2,3;s = det4 (a);推测函数 det4 的原型_【4 】double det4 (int 4) 5. 函数 stup 逆序输出一个字符串,并
9、返回打印的字符总数,请补充空白部分。int stup (const char *s)int n=0;if (_【5】*s!=0 _)n=1+stup(s+1);_【6】putchar(*s); return _【7 】n; 6. 以下程序的输出为_【8】1 3 6 10 15 int acc(int n) static int f; f=f+n; return f; main() int i; for(i=1;iz) elsereturn f(y, z, x);int main()int n;n = f(3,4,5);printf (“%dn”, n);2.以下程序的运行结果是:Hello W
10、orldHello Worldvoid f (char *s, const char *t)while (*s+=*t+);int main()char a1024;char b=”Hello World”;f(a,b);printf (“%sn”, b);printf (“%sn”, a);3.写出程序输出:45long f(long n)if (n!=0)return (n%10 + f(n/10);elsereturn 0;int main()long n=1234567890;printf(“%ldn”,f (n);4.以下程序的运行结果是:15int f (int (*p) 3)in
11、t s=0, i;for (i=0; i=0; k-)printf(“%sn”, *(p+);四、编程题(共20 分)1. 实现一个函数 sum,对给定输入 n,若 n0, 返回 1+2+ + n 的值; 若 n0)s+=n-;return s;处理负号 1 分, 循环 2 分,返回值 1 分,初始化 1 分。2. 用牛顿迭代求 a 平方根的递推公式为 x 0.5(x+a/x), 初始值可选 1. 利用这个公式实现函数 double Sqrt(double a); 此函数返回 a 的平方根。 (7 分)double Sqrt(double a)double x=1, err;do x=0.5*(x+a/x);err=x*x-a;if (err1e-6);return x;变量类型 1 分,初始化 1 分,循环迭代 2 分,误差控制 2 分,返回值 1 分。3. 实现一个程序,实现文件复制功能。 (8 分)int main (int argc, char *argv)char buf1024;FILE *rfp, *wfp;int n;if (argv0)fwrite (buf, sizeof(char), n, wfp);return 0; 命令行处理 2 分,打开文件模式 2 分,判断是否成功打开文件 2 分,读写文件 2 分。