广州大学C语言程序设计期末考试试卷含答案_第1页
广州大学C语言程序设计期末考试试卷含答案_第2页
广州大学C语言程序设计期末考试试卷含答案_第3页
广州大学C语言程序设计期末考试试卷含答案_第4页
广州大学C语言程序设计期末考试试卷含答案_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、院、系领导审批并签名 a 卷参考答案广州大学 2009-2010 学年第 1 学期考试卷课程 程序设计 1 考试形式(闭卷,考试)学院 数学与信息 系 专业 信安,计班级 学号 姓名_ 题次一二三四五六七八九十总分评卷人分数40202020100评分一、单项选择题(每小题 2 分,共 40 分)1. 十六进制数 cde 转换成八制数是(a )a) 6336 b) 6363 c) 7337 d) 73732. 以下所列的c语言常量中,错误的是( b )a) 1ul b) e0.5 c) “a” d) 'b'3. 已知字母c的ascii码为十进制的99,下面程序的输出是( a )i

2、nt 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的值分别为( a ) a) 0, 1 b) 1,

3、0 c) 1,1 d) 0, 07. 若函数 f 为 int f (int x) return -(x<0)+(x>0); 则 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 1b) 1 2b) 2 1d) 2 29. 下列程序的输出为:(a)int main() char *p=”hell

4、o”, *q; for (q=p; *q; q+); printf (“%dn”, (int)(q-p);a) 5b) 4c) 6d) 不是一个确定的值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, int

5、 * y) printf("%d %d ", *x, *y); *x=3, *y=4;int main() int x=1,y=2; fun(&x,&y); 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&

6、quot;); case 2.0:printf("*n"); case 3:printf("*n"); 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(

7、i=0;i<3;i+) printf("%d,",x2-ii); a) 9,5,3 b) 7,4,3 c) 7,5,3 d)9,6,114. 以下程序输出的结果是( d )int main() char w5="abcd","efgh","ijkl","mnop"int k; for (k=1; k<3; k+) printf("%sn", wk+k);a)b)c)d)abcdjkl efg fghfgh op jkkl15. 以下程序的输出结果是( b )#de

8、fine zero(x) x-xint main() printf("%dn",2*zero(2-3); a) -6 b) -4 c) -2 d) -016. 若有代码struct point int x; int y; pt, *p;p = & pt;现要输出 pt 的成员 x,错误的语句为: ( d )a) printf (“%dn”, p->x);b) printf (“%dn”, p0.x);c) printf (“%dn”, *p.x); d) printf (“%dn”, *p->x);17. 下列代码的输出为: (d)printf (“%s

9、n”, “helloworld”+4);a) hellob) helloworldc) worldd) 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

10、)a) auto b) registerc) extern d) static二、填空题(每空 2 分,共 20 分)1. 若想通过以下输入语句给a赋于1,给b赋于2,int a,b;scanf("%d%d”,&a,&b);则输入数据的形式应该是_【1】1 2 2. 写出能正确表示a是正偶数的关系表达式_【2】(a>0) && (a%2)=0) 3. x 的类型为 doule, y 的类型为 float,用一个 printf 语句输出这两个值:_【3】printf (“%f %fn”, x, y);_4. 若有如下代码double s;doubl

11、e 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 逆序输出一个字符串,并返回打印的字符总数,请补充空白部分。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;

12、 main() int i; for(i=1;i<=5;i+) printf("%d ",acc(i); 7. 若 z, i 均为 int 类型,i 的当前值为 1, 则对表达式 z=i+, i+, i+ 求值后,z 的值为 _【9】1 8. 给指针p申请四个long 型动态内存单元,请填空p=【10】malloc(sizeof(long)*4); ; 三、程序阅读题(每题4分,共20分)1.写出下列程序的运行结果: 41int f(int x, int y, int z) if (x>z) && (y>z) return x*x+y*y;

13、 else return f(y, z, x);int main() int n; n = f(3,4,5); printf (“%dn”, n);2.以下程序的运行结果是:hello world hello 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)

14、;elsereturn 0;int main()long n=1234567890; printf(“%ldn”,f (n);4.以下程序的运行结果是:15int f (int (*p) 3)int s=0, i; for (i=0; i<3; i+) s+=(*(p+i)i; return s;int main( ) int a33=1,2,3,4,5,6,7,8,9; printf(“%dn”, f(a);5.下面程序的运行结果是:int main( )char *str=“pascal”,”c language”,”dbase”,”cobol”;char *p;int k;p=st

15、r; for (k=3; k>=0; k-) printf(“%sn”, *(p+);四、编程题(共20分)1. 实现一个函数 sum,对给定输入 n,若 n>0, 返回 1+2+ + n 的值; 若 n<0,则返回 -1-2-n 的值;若 n=0,返回 0。(5分)int f (int n)int s=0; if (n<0) return f(-n);while (n>0) s+=n-;return s;处理负号 1 分, 循环 2 分,返回值 1 分,初始化 1 分。 2. 用牛顿迭代求 a 平方根的递推公式为 x 0.5(x+a/x), 初始值可选 1. 利

16、用这个公式实现函数 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 (err<0) err=-err;while (err>1e-6); return x;变量类型 1分,初始化 1 分,循环迭代 2 分,误差控制 2 分,返回值 1分。3. 实现一个程序,实现文件复制功能。(8分)int main (int argc, char *argv)char buf1024;file *rfp, *wfp;int n;if (argv<3) printf (“useage: %s file1 file2n”, argv0); return -1;rfp=f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论