C语言程序设计期末笔试试卷及答案

  • 格式:doc
  • 大小:100.70 KB
  • 文档页数:12

自信考试

诚信做人

用心用情

服务社会 1 哈尔滨工业大学(威海)2011/2012学年春季学期

C语言程序设计 笔试试题(A卷)

题号 一 二 三 四 五 六 笔试(70%) 综合

(30%) 总分

分数

试卷说明:

1. 笔试卷面总分100分,取卷面成绩的70%计入总分;

2. 综合成绩为平时成绩(10%)和实验成绩(20%)之和,占总分的30%;

3. 答题时禁止拆开试卷钉,试卷背面即为草稿纸;

4. 答题时间105分钟。

一、单项选择题。请把答案填入下面框中,

不允许出框线。(本题16分,每小题1分)

题号 1 2 3 4 5 6 7 8

答案

题号 9 10 11 12 13 14 15 16

答案

1. 下面程序的输出是______。

main()

{ int x=10,y=3;

printf("%d\n",y=x/y); }

A) 0 B) 1 C) 3 D) 不确定的值

2. 下列函数的功能是______。

int fun1(char *x)

{ char *y = x;

while(*y++);

return(y-x-1); }

A) 求字符串的长度 B) 将字符串X连接到字符串Y后面

C) 将字符串X复制到字符串Y D) 比较两个字符串的大小 号

注意行为规范

遵守考试纪律

教研室主任签字: 自信考试 诚信做人

用心用情

服务社会 2 3. 以下对C语言函数的有关描述中,正确的是______。

A) C程序中有调用关系的所有函数必须放在同一个源程序文件中

B) C函数既可以嵌套定义又可以递归调用

C) 调用函数时,实参的值传送给形参

D) 函数必须有返回值

4. 若用数组名作为函数调用的实参,传递给形参的是______。

A) 数组的首地址 B) 数组第一个元素的值

C) 数组中全部元素的值 D) 数组元素的个数

5. 若有以下定义,则p+5表示_______.

int a[10],*p=a;

A) 元素a[5]的地址 B) 元素a[5]的值

C) 元素a[6]的地址 D) 元素a[6]的值

6. 以下选项中,与k=n++完全等价的表达式是_______。

A) n=n+1,k=n B) k=n,n=n+1 C) k=++n D) k+=n+1

7. 如果在一个函数中的复合语句中定义了一个变量,则该变量_______。

A) 只在该复合语句中有效 B)在该函数中有效

C) 在本程序范围内均有效 D)为非法变量

8. 定义一个结构体变量时,系统分配给它的内存大小是_______。

A)成员中占内存量最大者所需的容量

B)各成员所需内存量的总和

C)结构中第一个成员所需内存容量

D)结构中最后一个成员所需内存容量

9. 在C程序中,使用结构体的目的是______。

A)将一组相关的数据作为一个整体,以便程序使用。

B)将一组相同数据类型的数据作为一个整体,以便程序使用。

C)将一组数据作为一个整体,以便其中的成员共享存储空间。

D)将一组数值一一列举出来,该类型变量的值只限于列举的数值范围内。

10. 判断字符串s1与字符串s2相等,应当使用______ 。

A) if (s1 = s2)

B) if (strcmp(s1, s2))

C) if (!strcmp(s1, s2)) 自信考试 诚信做人

用心用情

服务社会 3 D) if (strcmp(s1, s2) = 0)

11. 若有定义int *p[4],则标识符p是一个______ 。

A)指向整型变量的指针变量

B)指向函数的指针变量

C)指向有四个整型元素的一维数组的指针变量

D)指针数组名,有四个元素,每个元素均为一个指向整型变量的指针

12. 设有以下定义:

int a[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

int (*ptr)[3] = a, *p = a[0];

则以下能够正确表示数组元素a[1][2]的表达式是______ 。

A) *((*ptr + 1)[2])

B) *(*(p + 5))

C) (*ptr + 1)

D) *(*(a + 1) + 2)

13. 凡是在函数中未指定存储类别的局部变量,其隐含的存储类别是________。

A)静态(static) B)外部(extern)

C)自动(auto) D)寄存器(register)

14. 以下错误的描述是________ 。

A) 不同的函数中可以使用相同名字的变量,互不干扰

B) 形式参数都是局部变量

C) 一个C程序只包含一个函数

D) C语言中的函数参数传递都是单向值传递

15. 以下对二维数组进行正确初始化的是________。

A)int a[2][3]={{1,2},{3,4},{5,6}};

B)int a[2][]={1,2,3,4,5,6};

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

D)int a[2][]={{1,2},{3,4}};

16. 设有如下定义:

struct st

{

int a; 自信考试 诚信做人

用心用情

服务社会 4 float b;

}st1, *pst;

若有pst = &st1; 则下面引用正确的是________。

A) (*pst.st1.b) B) (*pst).b

C) pst->st1.b D) pst.st1.b

二、填空题。请按序号把答案填入下面框中,

不允许出框线。(本题20分,每空2分)

题号 答 案 题号 答 案

1 6

2 7

3 8

4 9

5 10

1. 下面程序的功能是要把1~90之间的不能被3整除的数输出。请补全。

main()

{

int n;

【1】

{

if (n%3==0)

continue;

printf("%d",n);

}

}

2. 下面程序可求出矩阵a的主对角线上的元素之和,请填空。

main()

{

int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;

for(i=0;i<3;i++) 自信考试 诚信做人

用心用情

服务社会 5 for(j=0;j<3;j++)

if(_ 【2】____) sum=sum+___【3】_____;

printf("sum=%d\n",sum);

}

3. 假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空。

a+= 【4】 ; b=a- 【5】; a-= 【6】 ;

4. 递归方式求阶乘,请填空:

long fac (int n)

{

long f;

if(n<0)

printf("n<0,data error!");

else if( 【7】 ) f=1;

else f= 【8】

return (f);

}

5. 以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指针(链表不带头结点)。请在______内填入正确内容。

struct link {

char data ;

struct link *next; };

struct link *p,*first;

int c=0;

p=first;

while(p!=NULL)

{

__【9】_____;

p=____【10】___;

}

自信考试 诚信做人

用心用情

服务社会 6 三、请把下列程序运行结果填入答案框中,不允

许出框线,用“↙”表示回车。(本题24分,每小题3分)

1.

int i=2; int j=3; int k=0;

int ans=((i==1)&&(j==3||(k=k+1)));

printf("%d%d",ans,k);

2.

3.

4. #include

main( )

{

int a[] = {1, 2, 3, 4, 5, 6}, *p = a+2;

*(p+3) += 3;

printf ( "%d,%d", *p, *(p+3));

}

5. void main()

{

char s[80]="abcd", t[80]="1234";

strcpy(s,"ABC"); 题号 1 2 3 4 5 6 7 8

答案 00