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