沈阳理工大学计算机C语言期末

本试卷为沈阳理工大学计算机C语言期末,题目包括:单项选择题,判断题,编程题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。

计算机C语言期末

一、单项选择题 (共20题,每题2分,共计40分)

(  C  )
1、设有程序段: int k=12; while(k=1) k=k-1; 则下列描述中正确的是________。
A、while循环执行10次
B、循环是无限循环
C、循环体语句一次也不执行
D、循环体语句执行一次
(  D  )
2、下列选项中,能够正确定义数组的语句是________。
A、int num[0..2008];
B、int num[];
C、int N=2008;
D、#define N 2008
int num[N]; int num[N]
(  D  )
3、有以下定义和语句
struct workers
{
int num;
char name[20];
char c;
srruct
{
int day;
int month;
int year;
}
s;
};
struct workers w,*pw;
pw=&w 能给w 中year 成员赋1980 的语句是________。
A、*pw.year=1980;
B、w.year=1980;
C、pw->year=1980;
D、w.s.year=1980;
(  A  )
4、若有说明语句:int a,b,c,*d=&c; 则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是________。
A、scanf("%d%d%d",&a,&b,d);
B、scanf("%d%d%d",&a,&b,&d);
C、scanf("%d%d%d",a,b,d);
D、scanf("%d%d%d",a,b,*d);
(  C  )
5、下列说法中不正确的是________。
A、switch语句功能可以由if-else语句实现
B、若用于比较的数据类型为double,则不能用switch语句来实现
C、if-else语句的执行效率总是比switch语句高
D、case子句可以有多个语句,并且不需要用大括号””括起来
(  B  )
6、下列c运算符中,优先级最高的是________。
A、+(双目)
B、*(单目)
C、<=
D、*=
(  B  )
7、c语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是________。
A、void
B、int
C、float
D、double
(  C  )
8、关于数组的叙述中,下列说法不正确的是________。
A、数组是最简单的复合数据类型,是有限元素的有序集合
B、数组的元素可以是值(基本数据类型)、对象或其他数组
C、定义数组时,必须分配内存
D、一个数组中的元素都必须是相同的类型
(  C  )
9、以下选项中,非法的字符常量是________。
A、'\t'
B、'\17'
C、"\n"
D、'\xaa'
(  A  )
10、有以下程序:
int a=3;
main()
{
int s=0;
{
int a=5;
s+=a++;
}
s+=a++;
printf("%d\n",s);
}
程序运行后的输出结果是________。
A、8
B、10
C、7
D、11
(  B  )
11、以下关系表达式中,其值为true的是________。
A、"XYZ">"XYz"
B、"VisualBasic"<>"visualbasie"
C、"the"="there"
D、"Integer"<"Int\
(  D  )
12、有下面程序段 char a[3],b[]="china"; a=b; printf("%3",a); 则下面的说法正确的是______。
A、运行后见输出China
B、运行后见输出Ch
C、运行后见输出Chi
D、编译出错
(  C  )
13、定义一个字符型变量,下列选项中正确的是________。
A、char c = '97'
B、char c = "97"
C、char c = 97
D、char c = c
(  C  )
14、当输入数据:27 63 时,下面程序的运行结果是________。
A、a=30 b=63 gbs=189 gys=9
B、a=27 b=63 gbs=190 gys=10
C、a=27 b=63 gbs=189 gys=9
D、a=27 b=63 gbs=188 gys=10
(  C  )
15、若有以下程序段,w和k都是整型变量:w=k;
lb:if(w==0) goto le;
w--;
printf("*");
goto lb;
le: . . .则不能与上面程序段等价的循环语句是______。
A、for(w=k;w!=0;w--)printf("*");
B、w=k;<CR>while(w--!=0)printf("*");w++;
C、w=k;<CR>do {
w--;printf("*");}while(w!=0);
D、for(w=k;w;--w)printf("*");
(  C  )
16、若有以下语句,则正确的描述是char a[] ="toyou";
char b[] ={′ t′ ,′o′ ,′ y′,′o′ ,′u′ };
A、a 数组和b 数组的长度相同
B、a 数组长度小于b 数组长度
C、a 数组长度大于b 数组长度
D、a 数组等价于b 数组
(  B  )
17、下列程序段的执行结果是输出________。
x=3;
do {
printf("%2d",x--);
} while(!x);
A、3 2 1
B、3
C、2 1
D、2 1 0
(  D  )
18、设有char str[10] ,下列语句正确的是________ 。
A、scanf("%s",&str);
B、printf("%c",str);
C、printf("%s",str[0]);
D、printf("%s",str);
(  D  )
19、在说明一个结构体变量时系统分配给它的存储空间是________ 。
A、该结构体中第一个成员所需存储空间
B、该结构体中最后一个成员所需存储空间
C、该结构体中占用最大存储空间的成员所需存储空间
D、该结构体中所有成员所需存储空间的总和
(  D  )
20、指针变量 p 进行自加运算(即 执行 p++;)后,地址偏移值为 1,则其数据类型为()。
A、int
B、float
C、double
D、char

二、判断题 (共10题,每题2分,共计20分)

(   F  )
1、在函数的定义和调用过程中,形式参数和实在参数数目可以不一致 
(   T  )
2、要使用标准输入、输出函数,正常情况下应该在文件的开头加上以下内容:
#include <stdio.h>
或
#include"stdio.h"。 
(   F  )
3、/printf("hello world\n");*/ 是合法的注释( ) 
(   T  )
4、文件指针用于指向文件,文件只有被打开后才有对应的文件指针。 
(   F  )
5、switch语句中,每一个case的冒号后面都必须至少跟有一条语句。 
(   T  )
6、模运算符%,仅用于整型变量或整型常量。 
(   T  )
7、printf("格式控制字符串",输出项表列)中,"格式控制字符串"必须用英文状态下的双引号括起来。 
(   F  )
8、c程序中如果对一维数组的全部元素都赋初值,则定义数组时必须指定数组长度。 
(   F  )
9、若函数的返回值与return 表达式类型不一致时,以return 表达式类型为准。 
(   F  )
10、for循环的三个表达式可以任意省略,while,do-while也是如此。 

三、编程题 (共3题,每题0分,共计40分)

1、编写程序:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
2、编写程序:将一个数组逆序输出。
3、编写程序求解约瑟夫问题,有n个小孩围成一圈,给他们从1开始编号。现指定从第w个小孩开始报数,报到s时出列然后从下个小孩开始重新报数,报到s时出列如此重复下去直到所有的小孩都出列。求小孩出列的顺序,使用结构体实现。