同济大学C语言期末考试卷

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

同济大学C语言期末考试卷

2005-2006学年第二学期《C程序设计期末试卷》(闭卷)

一、单项选择题(20分)

1. 在定义函数时,能用以下(1) 标识符作函数名。

A.struct

B._abc

C. 8abc

D. abc@

2在一个函数被调用执行过程中,当执行到函数体中(2) 语句后立即无条件返回主调函数。

A.goto

B.break

C.continue

D.return

3.以下关于main函数定义的叙述中,错误的是(3) 。

A. main函数是自定义函数,因此函数体中的声明和语句都是可选的

B. main函数定义时可以有形式参数也可以没有形式参数

C. main函数定义必须出现在一个源程序的起始位置

D. 在一个源程序中只能有一个main函数定义

4.以下函数定义中正确的是(4) 。

A. double fun(intx,y){ return x*y;}

B. double fun(intx,int x){ return x*x; }

C. double fun(register intx,int y){ return x*x;}

D. double fun(extern intx,int y){ return x*y;}

5.若函数定义为void fun(intx,inty,int *p) { *p= x>y ? x : y; },且main函数中有声明“int a=1,b=2,c[2]={0};”,则以下语句中正确的是(5) 。

A.printf(“%d”,fun(a,b,c));

B.fun(a,b,c+1);

C.fun(a,b,c[2]);

D.fun(1,2);

6. 若函数定义为double fun(double x,double y){ return x/y;},则以下fun引用声明(函数原型)中错误的是(6) 。

A. double fun(double x,double y);

B. double fun(double a,double b);

C. double fun(double ,double );

D. float fun(double x,double y);

7.以下程序段中,有语法错误的是。

A. double f;

double f (double x)

{ return f=x*x; }

C. double f (double x)

{ double f;

return f=x*x;

}

B. double f (double f)

{ return f*f;}

D. double f (double x)

{ if(x>0){ double f ; return f=x;}

else{ double f ; return f= -x;}

}

8.以下一维数组声明中,正确的是(8) 。

A. int a[ ];

B.int b[10],a[b];

C. int a[4]={1,2,3,4,5};

D. int a[sizeof('a')]={'a'};

9.以下二维数组声明中,正确的是(9) 。

A. char b[2][3]={“a”.”b”.”c”};

B. char b[][3]={0};

C. char b[2][]={0};

D. char b[][]={0};

10.已知有二维数组声明“int a[3][3]={1,2,3,4,5,6,7,8,9};”,不能正确输出数组a中第2行(行下标为1)第3列元素(列下标为2)的语句是(10) 。

A.printf(“%d”,a[1][2]);

B. printf(“%d”,*(*(a+1)+2));

C. printf(“%d”,*(a+1)[2]);

D. printf(“%d”,*(a[1]+2));

11.若需要将字符串“happy”和“good luck”存储到数组中,则以下选项中正确的是(11) 。

A. char s[2][10]; s[2][10]={“happy”, “good luck” };

B. char s[2][10]; s[0]= “happy”;s[1]=“good luck”;

C. char s[2][10]; strcpy(s[0][0],“happy”);strcpy(s[1][0],“good luck”);

D. char s[2][10]; strcpy(s[0],“happy”);strcpy(s[1],“good luck”);

12.已知有声明“char *s=”happy birthday”,t[10];”,要求将s指向的字符串中“birthday”子串复制到t数组中并输出t数组中的字符串,正确的操作的是(12) 。

A.puts(strcpy(t,s));

B. puts(strcpy(t,s+6));

C. puts(strcat(t,s));

D. puts(strcat(t,s+6));

13.在以下结构类型定义中,正确的是(13) 。

A. struct for

{ intx,y; };

C. struct For

{ static int x, y; };

B. struct FOR

{ intx,y; };

D. struct FOR

{ int x; int x; };

A.B.C.D.

13.

A.B.C.D.

14.已知有数据类型定义及变量声明如下:

struct

{ int a;

struct { char name[10];}b;

}s={1,”mark”},*ps=&s;

则以下选项中能够输出“mark”的语句是(14) 。

A.puts(name);

B.puts()

C.puts();

D.puts(*);

15.若已有数据类型定义为“struct { intx,y;}a={2,3},b={0};”,则以下语句中正确的是(15) 。

A.b=a;

B.if(a!=b)b=a;

C.b+=a;

D.b++;

16.在基于以下全局对象标识符p的声明中,不能做p++运算的声明是。

A.int p;

B.int a[10], *p=a;

C. int a[2],*p[2]={a};

D. int a[2][2], (*p)[2]=a;

17. 若已有声明“int a[][3]={{1,2,3},{4,5},{6}},*p1=&a[0][0], (*p2)[3]=a;”,以下选项中的语句分别被执行后,屏幕输出结果不是4选项是(17) 。

A. printf("%d",a[1][0]);

B. printf("%d",a[0][3]);

C. printf("%d",p1[4]);

D. p2++; printf("%d",p2[0][0]);

相关文档
最新文档