同济大学C语言期末考试卷
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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]);