上海海洋大学历年C语言期末
本试卷为上海海洋大学历年C语言期末,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。
C语言期末
一、单项选择题 (共20题,每题2分,共计40分)
( D )
1、下面是有关c语言字符数组的描述,其中错误的是________。
( A )
2、若有说明语句:char c='\101'; 则变量c:
( D )
3、若有以下说明语句:
struct student
{
int num;
char name[ ];
float score;
} stu;
则下面的叙述不正确的是: ( )
( D )
4、若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是: ( )
( C )
5、分析以下程序 , 下列说法正确的是______。
main()
{
int x=5,a=0,b=3;
if(x=a+b) printf("* * * *\n");
else printf("# # # #\n");
}
( C )
6、for(int x=0,y=0;!x&&y<=5;y++)语句执行循环的次数是________。
( B )
7、执行下面的一段c程序后,变量sum的值应为______。 char chr=127; int sum=300; chr +=1; sum +=chr;
( B )
8、有以下定义和语句:
struct students {
int num;
char name[20];
char c;
struct {
int grade1;
int grade2;
} s;
};
struct students w,*pw;
*pw=w;
下列赋值语句不正确的是________。
( B )
9、在以下各标识符中,合法的用户标识符是________。
( C )
10、null是指 ________。
( C )
11、下列程序的输出结果是________。
main ()
{
int a = 4, b = 5, c;
if (a < b)
{
c = a * b;
printf ("%d,%d,%d\n", b, a, c);
}
else
{
c = b / a;
printf ("%d,%d,%d\n", b, a, c);
}
}
( C )
12、有以下程序:
main()
{
char a[7]="a0\0a0\0":int i,j i=sizeof(a);
j=strlen(a): printf("%d%d\n",i,j);
}
程序运行后的输出结果是________。
( B )
13、有如下程序段int *p,a=1,b=2; p=&b; a=*p+a; 执行该程序段后,a的值为______。
( C )
14、表达式的值为0的是________。
( A )
15、a、b分别是整数6、-2,那么a对b求余与b对a求余的值分别为
( B )
16、int a=10; 下列哪个选项的值不是20?
( D )
17、以下叙述中正确的是________。
( B )
18、对长度为 8 的数组进行快速排序,最多需要的比较次数为________。
( C )
19、char a[10]; 不能将字符串"abc"存储在数组中的是________。
( A )
20、若使用一维数组名作函数实参,则以下正确的说法是________。
二、判断题 (共10题,每题2分,共计20分)
( F )
1、c语言中简单变量作为实参时,它和对应的形参之间的数据传递方式是双向值传递。
( F )
2、寄存器变量的值也存放在内存中。
( T )
3、== 是关系运算符,用于比较两个操作数是否相等; 而 = 是赋值运算符,表示对变量赋值。
( F )
4、通过return语句,函数可以带回一个或一个以上的返回值。
( F )
5、字符串可以存储在字符数组中,也可以存储在字符型指针变量中
( T )
6、在c语言中,使用"r"方式可以打开文件
( T )
7、宏定义是用宏名来表示一个字符串,在宏代换时以该字符串取代宏名。
( F )
8、在c语言程序设计中函数是允许嵌套定义的。
( F )
9、由于do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。
( T )
10、在c语言中,当一个逻辑表达式的值为"假"时,该表达式的值一定是 0 ( )
三、填空题 (共5题,每题4分,共计20分)
1、有以下程序段,且变量已正确定义和赋值 for(s=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+));
printf("s=%f\n\n",s);
请填空,使下面程序段的功能与之完全相同 s=1.0;
k=1;
while([10] )
{
s=s+1.0/(k*(k+1));
[11] ;
}
printf("s=%f\n\n",s);
2、字符串函数___________用于把一个字符串写入指定的磁盘文件中。
3、在c语言中,在调用一个函数的过程中又出现__________或间接地调用该函数本身,这一现象称为函数的递归调用。
4、数学表达式x<y<z改写为c语言表达式是___________。注:表达式要在英文半角状态下按原表达式顺序书写,且表达式中不要留空格。
5、break语句通常用于______中。
四、程序分析题 (共4题,每题5分,共计20分)
1、程序
main( )
{
float x;
x=3.6;
printf("i=%d", (int)x);
}
的输出结果是________。
2、有以下程序
#include <stdio.h>
main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int b[3]={0},i;
for(i=0;i<3;i++) b[i]=a[i][2]+a[2][i];
for(i=0;i<3;i++) printf("%d",b[i]);
printf("\n");
}
程序运行后的结果是________。
3、下列程序段的运行结果是_____。
void pig( )
{
float a=3.0;
}
main( )
{
float a=1.0;
pig( );
printf("a=%f",a);
}
4、以下程序的运行结果是________。
#include<stdio.h>
main()
{
int a=1,b=2,c;
c=max(a,b);
printf("max is %d\n",c);
}
max(int x,int y)
{
int z;
z=(x>y)?x:y;
return(z);
}
五、编程题 (共3题,每题0分,共计50分)
1、编写程序: 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
2、编写程序:字符串排序。如下: 请输入3个字符串,每个字符串以回车结束!: b a t 排序后的结果为: a b t
3、编写程序:用结构体数组,学生信息由学号、姓名,成绩组成, 数据如下:201513135157 张三 90 1)使用结构体数组,将学生的数据按成绩从高到低排序显示到屏幕上 2)将学生中不及格学生的姓名显示出来 3)写一个函数,获取成绩低于平均分的学生记录并返回低于平均分的学生人数
相关标签:
- C语言
- 上海海洋大学
- 期末