辽宁石油化工大学历年C语言期末模拟

本试卷为辽宁石油化工大学历年C语言期末模拟,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言期末模拟

一、单项选择题 (共50题,每题2分,共计100分)

(  C  )
1、有以下程序
#include <stdio.h>
int main()
{
int a = 1, b = 2, c = 3, d = 0;
if (a == 1 && b++ == 2)
if (b != 2 || c-- != 3)
printf("%d,%d,%d\n", a, b, c);
else
printf("%d,%d,%d\n", a, b, c);
else
printf("%d,%d,%d\n", a, b, c);
}
程序运行后的输出结果是________。
A、1,2,3
B、1,3,2
C、1,3,3
D、3,2,1
(  B  )
2、表达式:(int)((double)9/2)-(9)%2的值是________。
A、0
B、3
C、4
D、5
(  D  )
3、合法的c语言赋值语句是________。
A、a=b=58
B、k=int(a+b);
C、a=58,b=58
D、--i;
(  A  )
4、c语言结构体类型变量在程序执行期间,________。
A、所有成员一直驻留在内存中
B、没有成员驻留在内存中
C、部分成员驻留在内存中
D、只有一个成员驻留在内存中
(  A  )
5、在c语言中对于实型数组,其每个数组元素的类型是________。
A、实型
B、整型
C、可以为任何类型
D、不确定
(  A  )
6、下述程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,则程序空白上应该填写的是________。
main()
{
char s1[]="chinese",s2[]="japanese";
int i;
for(i=0;s1[i]='\0'&&s2[i]!='\0';i++) if(s1[i]==s2[i]&&i<7) ________;
}
A、putchar(s2[i]);putchar(i)
B、puts(s1[i],i)
C、printf("%c%d\n",s2[i]。i)
D、printf("%C",s1[]);printf("%d\n",i)
(  B  )
7、若输入字符串:abcde<回车>,则以下while循环体将执行多少次。 while((ch=getchar())!='e') printf("*");
A、5
B、4
C、6
D、1
(  D  )
8、b等于( )
A、1000字节
B、1024字节
C、1000×1000字节
D、1024×1024字节
(  D  )
9、以下正确的字符串常量是________。
A、“╲╲╲”
B、‘abc’
C、Olympic
D、**
(  B  )
10、若变量已正确定义,有以下程序段
int a=3,b=5,c=7;
if(a>b) a=b;
c=a;
if(c!=a) c=b;
printf("%d,%d,%d\n",a,b,c);
其输出结果是________。
A、程序段有语法错
B、3,5,3
C、3,5,5
D、3,5,7
(  C  )
11、以下关于数组的描述正确的是______。
A、数组的大小是固定的,但可以有不同的类型的数组元素。
B、数组的大小是可变的,但所有数组元素的类型必须相同。
C、数组的大小是固定的,但所有数组元素的类型必须相同。
D、数组的大小是可变的,但可以有不同的类型的数组元素。
(  B  )
12、下面对的叙述中不正确的是______。
A、用 typedef 可以定义各种类型名,但不能用来定义变量
B、用 typedef 可以增加新类型
C、用 typedef 只是将已存在的类型用一个新的标识符来代表
D、使用 typedef 有利于程序的通用和移植
(  C  )
13、在定义 int a[5][6]; 后,数组 a 中的第 10 个元素是__________ (设 a[0][0] 为第一个元素)
A、a[2][5]
B、a[2][4]
C、a[1][3]
D、a[1][5]
(  A  )
14、若主调用函数类型为 double ,被调用函数定义中没有进行函数类型说明,而 return 语句中的表达式类型为 float 型,则被调函数返回值的类型是 __________ 。
A、int 型
B、float 型
C、double 型
D、由系统当时的情况而定
(  C  )
15、若在某函数内部有定义:int a[3][4]; 则数组a中各元素________。
A、可在程序的运行阶段得到初值0
B、可在程序的编译阶段得到初值0
C、不能得到确定的初值
D、可在程序的编译或运行阶段得到初值0
(  C  )
16、下列叙述中,正确的是________。
A、while语句构成的循环不能用其他语句构成的循环来代替
B、do-while语句构成的循环只能用break语句退出
C、用while语句构成的循环,只有在while后的表达式为非0时才执行循环
D、do-while语句构成的循环,只有在while后的表达式为0时才结束循环
(  B  )
17、设int a=10,b= 11,c=12; 表达式( a + b) < c & &b==c的值是________。
A、2
B、0
C、-2
D、1
(  C  )
18、设以下变量均为int类型,表达式的值不为7的是________。
A、(x=y=6,x+y,x+1)
B、(x=y=6,x+y,y+1)
C、(x=6,x+1,y=6,x+y)
D、(y=6,y+1,x=y,x+1)
(  B  )
19、若需要利用形参直接访问实参,则应把形参变量说明为( )参数。
A、指针
B、引用
C、传值
D、常值
(  C  )
20、程序中对fun函数有如下说明 void*fun(); 此说明的含义是________。
A、fun函数无返回值
B、fun函数的返回值可以是任意的数据类型
C、fun函数的返回值是无值型的指针类型
D、指针fun指向一个函数、该函数无返回值
(  D  )
21、关于字符常量,以下叙述正确的是________。
A、空格不是一个字符常量
B、字符常量能包含大于一个的字符
C、单引号中的大写字母和小写字母代表的是相同的字符常量
D、所有的字符常量都可以作为整型量来处理
(  C  )
22、在printf的格式字符中,e格式字符的作用是________。
A、以十六进制无符号形式输出整数
B、以带符号的十进制形式输出整数
C、以指数形式输出实数
D、以字符形式输出,且只输出一个字符
(  C  )
23、下列说法不正确的是________。
A、C语言程序是以函数为基本单位的,整个程序由函数组成
B、C语言程序的一条语句可以写在不同的行上
C、C语言程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写
D、C语言程序的每个语句都以分号结束
(  B  )
24、有以下定义和语句:
struct students {
int num;
char name[20];
char c;
struct {
int grade1;
int grade2;
} s;
};
struct students w,*pw;
*pw=w;
下列赋值语句不正确的是________。
A、num=1002;
B、w.grade1=85;
C、pw->num=1002;
D、w.s.grade2=85;
(  B  )
25、有以下函数 int fun(char *s)
{
char *t=s;
while(*t++);
return(t-s);
}
该函数的功能是________。
A、比较两个字符串的大小
B、计算S所指字符串占用内存字节的个数
C、计算S所指字符串的长度
D、将S所指字符串复制到字符串t中
(  A  )
26、switch语句不能用于下列哪种数据类型 ( )
A、double
B、byte
C、short
D、char
(  C  )
27、有定义语句:int*p[4]; 以下选项中与此语句等价的是________。
A、int p[4];
B、int **p;
C、int*(p[4]);
D、int(*p)[4];
(  D  )
28、在64位高档微机中,一个字长所占的二进制位数为________。
A、8
B、16
C、32
D、64
(  D  )
29、若有以下定义:int a[2][3]= { 2,4,6,8,10,12 } 则以下描述不正确的是 ______。
A、*(a+1)为元素a[1][0]的指针
B、a[1]+1为元素a[1][1]的指针
C、*(a+1)+2为元素a[1][2]的指针
D、*a[1]+2的值是12
(  B  )
30、以下程序的运行结果是________。
#include <stdio.h>
#define MIN(x,y) (x)<(y) ? (x):(y)
main() {
int i=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
A、10
B、15
C、100
D、150
(  A  )
31、有以下程序:
main()
{
char a='a',b;
printf("%c,",++a);
printf('%c\n",b=a++);
}
程序运行后的输出结果是________。
A、b,b
B、b,c
C、a,b
D、a,c
(  B  )
32、有如下程序:
#include <stdio.h>
long fib(int n) {
if(n>2) return(fib(n-1)+fib(n-2));
else return(2);
}
main()
{
printf("%d\n",fib(3));
}
该程序的输出结果是________。
A、2
B、4
C、6
D、8
(  C  )
33、以下程序的输出结果是______。
#include <stdio.h>
main ()
{
char *s = "121";
int k = 0, a = 0, b = 0;
do
{
k++;
if (k % 2 == 0)
{
a = a + s[k] - '\0';
continue;
}
b = b + s[k] - '\0';
a = a + s[k] - '\0';
}
while (s[k + 1]);
printf ("k=%d a=%d b=%d\n", k, a, b);
}
A、k=3 a=98 b=49
B、k=3 a=99 b=50
C、k=2 a=99 b=50
D、k=2 a=98 b=49
(  A  )
34、下面叙述正确的是________。
A、任何复杂任务都可以分解成简单子任务
B、C 语言程序的所有函数只能处于同一个源文件中
C、包含全部三种基本结构的程序才是结构化程序
D、C 语言程序可以定义多个不同内容的 main 函数
(  D  )
35、下列关于表达式的描述中,错误的是________。
A、常量和变量都是表达式
B、运算符类型对应表达式的类型
C、每一个表达式都有自己的值
D、表达式必须以分号结尾
(  D  )
36、下面程序的输出是______。
main( )
{
int x=3 ,y=6,a=0;
while(x++!=(y-=1) )
{
a+=1;
if (y<x) break;
}
printf("x=%d,y=%d,a=%d\n",x,y,a);
}
A、x=4,y=4,a=1
B、x=5,y=5,a=1
C、x=5,y=4,a=3
D、x=5,y=4,a=1
(  C  )
37、若有以下程序段,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("*");
(  A  )
38、若有定义 int a[]={10,20,30 },*p=a; ,当执行p++; 后,下列说法错误的是______。
A、p向高地址移了一个字节
B、p向高地址移了一个存储单元
C、p向高地址移了四个字节
D、p与a+1等价
(  C  )
39、以下二维数组c 的定义形式是________。
A、int c [3][]
B、float c [ 3,4]
C、double c [3][ 4]
D、float c 3)4)
(  D  )
40、巳知字母a 的ascii 码是65,以下程序的执行结果是________。
main()
{
char c1='a',c2='y';
printf("%d,%d\n",c1,c2);
}
A、A,Y
B、65,65
C、65,90
D、65,89
(  A  )
41、以下关于静态变量的说法正确的是________。
A、函数中的静态变量其所占内存在函数退出后不被释放
B、静态变量和常量的作用相同
C、静态变量只可以赋值一次赋值后则不能改变
D、静态全局变量的作用域为一个程序的所有源文件
(  B  )
42、执行下列语句后,a和b的值分别为________。(注:a的accii码值为:97,a的accii码值为:65) int a,b; a=1+'a'; b=2+7%-4-'a';
A、-63,-64
B、98,-60
C、1,-60
D、79,78
(  D  )
43、在c语言中,if语句后的一对原括号中,用以决定分支的流程的表 达式________。
A、只能用逻辑表达式
B、只能用关系表达式
C、只能用逻辑表达式或关系表达式
D、可用任意表达式
(  A  )
44、while(fabs(t)<1e-5)if(!s/10)break; 循环结束的条件是________。
A、t>=1e-5&&t<=-1e-5&&s>-10&&s<10
B、fabs(t)<1e-5&&!s/10
C、fabs(t)<1e-5
D、s/10==0
(  C  )
45、在c语言中,调用函数除函数名外,还必须有________。
A、函数预说明
B、实际参数
C、( )
D、函数返回值
(  C  )
46、enum a
{
sum=9,mon=-1,tue
}
;
定义了________。
A、枚举变量
B、3个标识符
C、枚举数据类型
D、整数9和-1
(  D  )
47、static char str[10]="China";数组元素个数为()。
A、5
B、6
C、9
D、10
(  A  )
48、char *match(char c)是()。
A、函数定义的头部
B、函数预说明
C、函数调用
D、指针变量说明
(  C  )
49、以下描述中,正确的是()。
A、预处理是指完成宏替换和文件包含中指定的文件的调用
B、预处理指令只能位于 C 源文件的开始
C、C 源程序中凡是行首以#标识的控制行都是预处理指令
D、预处理就是完成 C 编译程序对 C 源程序第一遍扫描,为编译词法和语法分析作准备
(  C  )
50、以下叙述中错误的是________。
A、C语句必须以分号结束
B、复合语句在语法上被看作一条语句
C、空语句出现在任何位置都不会影响程序运行
D、赋值表达式末尾加分号就构成赋值语句