2012大连理工大学C语言模拟题机房题库单选、判断、填空(分章节,

更新时间:2024-06-06 21:58:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一部分 注意事项

1. 请对照《课件》和《教材》进行练习。

2. 熟悉键盘,注意竖杠“|”和反斜杠“\\”的位置,请在西文状态下输入。

3. 单选题、判断题和填空题要会验证。当输入汉字时,可能输入提示框是灰色的,再按一次中英文切换键即可。

4. 程序填空题不能删除注释/*****FILL*****/,但必须删除标记符号_____,否则编译通不过。如,for(i=10; ____; i++)。

5. 程序改错题不能删除注释/*****ERROR*****/,仅在其下一行进行修改。

6. 程序填空题和程序改错题存盘即可。但最好编译运行一下,编译时会自动存盘。编译帮助检查语法错误,运行帮助检查逻辑错误。

7. 程序设计题不能删除注释/****BEGIN*****/和/****END*****/,只能在两个标记符之间编写程序。必须保证编译、链接、运行都正确。

8. 以上程序题中不能更改程序结构和其它位置的程序代码,可以忽略其它程序位置的警告。

9. 如果VC发生死机(见图,可用按钮都变成灰色),请结束VC进程,再继续答题或重答。 结束VC进程的方法:

先进入“任务管理器”;再选下面一种方法操作:

方法1:选择“应用程序”标签,选中“VC任务”,按“结束任务” 。 方法2:选择“进程”标签,选中“MSDEV.EXE”,按“结束进程” 。

10. 提交试卷并看到成绩后再离开。

11.出现问题立即请示监考老师。

12.请记住几个常用的函数。

数学函数:sin(),cos(),tan(),log(),exp(),pow(),sqrt(),abs(),fabs() 字符串函数:strcat(),strcpy(),strcmp(),strlen(),strlwr(),strupr() 输入输出函数:printf(),scanf(),putchar(),getchar(),puts(),gets(), fopen(),fclose(),fprintf(),fscanf(),feof() 其它实用函数:rand(),exit()

第二部分 概念题

第1章 概述

1. C程序是的基本组成单位是_______. 函数

2. C语言的程序结构分为______、选择结构和循环结构。顺序结构

第3章 数据类型、运算符和表达式

一、单选题

1. 已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'\\101'是(A)。 A、字符A B、字符a C、字符e

D、非法的常量

2. 下列关于单目运算符++、--的叙述中正确的是(D)。

A、它们的运算对象可以是int型变量,但不能是double型变量和float型变量 B、它们的运算对象可以是任何变量和常量

C、它们的运算对象可以是char型变量和int型变量,但不能是float型变量 D、它们的运算对象可以是char型变量、int型变量和float型变量

3. 执行下列程序后,其输出结果是(D)。 main() {int a=9; a+=a-=a+a;

printf(\} A、18 B、-9 C、9 D、-18

4. 下述正确的C语言常量是:(C). A、E2 B、5.0E C、3e-3 D、1.5E2.5

5. 若有定义:int a=7;float x=2.5,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是(D)。 A、0.000000

B、2.750000 C、3.500000 D、2.500000

6. 下面四个选项中,均是不合法的用户标识符的选项是(D)。 A、float la0 _A B、A P_0 do C、_123 temp int D、b-a goto int

7. 表达式18/4*sqrt(4.0)/8值的数据类型为(A)。 A、double B、float C、int D、不确定

8、以下字符中不是转义字符的是(A)。 A、'\\c' B、'\\b' C、'\\\\' D、'\\a'

9. 设a=12,且a定义为整型变量。执行语句a+=a-=a*=a;后a的值为(A)。 A、0 B、144 C、132 D、12

10.下列变量说明语句中,正确的是(D)。 A、char a;b;c; B、char:a b c; C、int x;z; D、int x,z;

11.设以下变量均为int类型,则值不等于7的表达式是(A)。 A、(x=6,x+1,y=6,x+y) B、(x=y=6,x+y,y+1) C、(y=6,y+1,x=y,x+1) D、(x=y=6,x+y,x+1)

12.若变量均已正确定义并赋值,以下合法的C语言赋值语句是(C)。 A、x+n=I; B、x==5; C、x=n/2.5;

D、5=x=4+1;

13.下述错误的C语言常量是:(C). A、0xf B、5. C、090 D、.25

14. 字符串\的长度是:(C). A、3 B、11 C、7 D、5

15. 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的 数据类型为(A)。 A、double B、不确定 C、int D、float

16. 下列语句的结果是(B)。 main() { int j; j=3;

printf(\printf(\}

A、3,3 B、4,4 C、3,4 D、4,3

17. 假定有以下变量定义: int k=7,x=12;

则能使值为3的表达式是:(A) A、(x%=k)-(k%=5) B、x%=(k-k%5) C、x%=k-k%5 D、x%=(k%=5)

18.下列数据中,为字符串常量的是(D)。 A、'A'

B、How do you do.

C、$abc D、\

19.以下所列的C语言常量中,错误的是(B)。 A、0xFF B、1.2e0.5 C、2L D、'\\72'

20.下列表达式中,可作为C合法表达式的是(D)。 A、3.0%2 B、3=2=1=0 C、[3,2,1,0] D、(3,2,1,0)

21.当x为偶数或奇数时(0除外),其值都为0的表达式是(C) A、(x/2*2-x)==0 B、x%2==0 C、!x!=0 D、!(x%2)

22.sizeof(float)是(C)。?501 A、一个浮点表达式 B、一个不合法的表达式

C、函数调用结果是一个整型表达式。 D、一种函数调用

23.下列数据中属于\字符串常量\的是(B)。 A、'A' B、\C、ABC D、'ABC'

二、判断题

1. 在C语言中,各种类型的整型数据在内存中都占2个字节。F 2. 在C程序中,%作为运算符时,是只能用于整数运算。T

3. 若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变.T 4. a=(b=4)+(c=6) 是一个合法的赋值表达式。T

5. 若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28。F 6. 表达式 (j=3,j++) 的值是4. F

7. 若i =3,则printf(\输出的值为 -4。F

三、填空题

1. 下列语句输出的结果是_____,unsigned int b=65535;printf(\-1

}

A、printf(\B、fun(*(s+1));

C、printf(\D、fun(s+1);

7. 若有说明:int *p1,*p2,m=5,n; 以下均是正确赋值语句的选项是(A)。 A、p1=&m;p2=p1; B、p1=&m;p2=&p1 C、p1=&m;*p2=*p1;

D、p1=&m;p2=&n;*p1=*p2;

8. 下列程序的运行结果是:(B). void fun(int *a, int *b) { int *k;

k=a;a=b;b=k; }

main( )

{ int a=3,b=6,*x=&a, *y=&b; fun(x, y);

printf(\}

A、6 3 B、3 6 C、0 0 D、编译出错

9. 字符串指针变量中存入的是(A)。 A、字符串的首地址 B、字符串变量 C、第一个字符 D、字符串

10. 以下程序的输出结果是 (D). main( )

{char str[ ]=\

A、68

B、字符D的地址 C、不确定的值 D、0

11.以下程序段给数组所有的元素输入数据,请选择正确答案填入(C)。 #include main()

{ int a[10],i=0;

while(i<10) scanf(\ . . . }

A、&a[i+1] B、a+i C、a+(i++) D、&a[++i]

12. 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是(C)。 A、*p=*q; B、n=*q; C、p=n; D、p=q;

13.下述函数的功能是(C). int fun(char *x) { char *y=x; while(*y++); return y-x-1; }

A、比较两个字符串的大小 B、求字符串存放位置 C、求字符串的长度

D、将字符串x连接到字符串y后面

14.在说明语句:int *f();中,标识符f代表的是(A)。 A、一个返回值为指针型的函数名 B、一个用于指向函数的指针变量 C、一个用于指向一维数组的行指针 D、一个用于指向整型数据的指针变量

15.下面程序的输出结果应该是(B ). char s[ ]=\ main() {char *p;

for ( p=s;p

} A、DCBA

B、ABCDBCDCDD C、ABCDABCABA D、ABCD

16.变量p为指针变量,若p=&a,下列写法不正确的是(A)。 A、*(p++)==a++ B、&*p==&a C、(*p)++==a++ D、*&a==a

17.以下程序段 char *alp[]={\ int j; puts(alp[1]);的输出结果是(D)。 A、D B、A C、B D、DEF

18.下面判断正确的是(D)。

A、char c[4]=\等价于 char c[4]=d[4]=\B、char str[10]={\等价于char str[10];str[]={\C、char *a=\等价于 char *a;*a=\D、char *s=\等价于 char *s;s=\

19.int a[10]={1,2,3,4,5,6,7,8};int *p;p=&a[5];p[-3]的值是(D)。 A、4 B、2

C、不一定 D、3

二、判断题

1. 如果需要向函数内传递多个值,用数组和用指针效果是一样的.T 2. 将函数func的入口地址赋给指针变量p的语句是_____.p=func;

3. 定义 int a[ ]={1,2,3,4},y,*p=&a[1];,则执行y=(*--p)++后,y的值是2. F 4. 有如下说明:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是 *(p+8).T

5. 假设有int a[10], *p;则p=&a[0]与p=a等价。T

6. 设有如下定义:int *p; *p=100;则 printf(\的输出结果是100.N 7. char *p=\的含义是定义字符型指针变量p,p的值是字符串\。F 8. 数组名与指针变量是相互等价的.F

9. 在C语言中,函数名代表函数的入口地址.T

10.若 p 为指针变量,a 为数组名,则 a-p是合法的表达式.T 11.指向某一变量的指针,就是该变量的内存地址.T

23.若定义 int array[5], *p; 则赋值语句 p=array;是正确的.T

三、填空题

1. 定义int *p,a[5];将数组a的首地址赋给指针变量p的语句是_____.p=a;p=&a[0];【9】 定义int *p,a[5];将数组a的首地址赋给指针变量p的语句是_____. p=a; p=&a[0]; 执行下列语句后,*(p+1)的值是_____. b char s[3]=\

2、将数组a的首地址赋给指针变量p的语句是_____. p=a; 或 p=&a[0]; 3、将函数funl 的入口地址赋给指针变量p的语句是_____. p=funl; 一

4、在c程序中,只能给指针变量赋NULL值和_____值. 地址

小写的L,不是数字

第10章 结构体与共用体

一、单选题

1. 对结构体类型的变量的成员的访问,无论数据类型如何都可使用的运算符是(B)。 A、& B、. C、* D、->

2. 定义结构体的关键字是(A)。 A、struct B、typedef C、enum D、union

3. C语言结构体类型变量在程序执行期间(B)。 A、没有成员驻留在内存中 B、所有成员一直驻留在内存中 C、只有一个成员驻留在内存中 D、部分成员驻留在内存中

4. C语言中,定义结构体的保留字是(C)。 A、typedef B、union C、struct D、enum

5. 当说明一个结构体变量时系统分配给它的内存是(D)。 A、成员中占内存量最大者所需的容量 B、结构中第一个成员所需内存量 C、结构中最后一个成员所需内存量 D、各成员所需内存量的总和

6. 在定义构造数据类型时,不能(A)。 A、末尾不写分号 B、说明存储类型 C、初始化 D、说明变量

7. 使用共用体变量,不可以(A)。 A、同时访问所有成员 B、进行动态管理 C、节省存储空间

D、简化程序设计

8. 设有如下定义: struct sk {int a; float b;} data,*p; 若要使p指向data中的a域,正确的赋值语句是(C)。 A、p=(struct sk*) data.a; B、*p=data.a; C、p=&data.a; D、p=&data,a;

9. 下列程序正确的运行结果为(C). #include main() {

union u

{char *name; int age; int income; } s;

s.name=\s.age=28;

s.income=1000;

printf(\} A、8 B、28 C、1000 D、不确定

10.对于下述定义,不正确的叙述是(B).?65 union data {int i; char c; float f; }a,b;

A、变量a的地址和它的各成员地址都是相同的 B、可以在定义时对a初始化

C、变量a所占内存的长度等于成员f的长度 D、不能对变量a赋值,故a=b非法

11.若有以下结构体定义: struct example { int x; int y; } vl;

则(D)是正确的引用或定义. A、example.x=10;

B、struct v2;v2.x=10; C、example v2;v2.x=10;

D、struct example v2={10,3};

12.若有以下程序段,则使用错误的选项是( ). struct student {

int num; int age; };

struct student stu[3] ={{1001,20},{1002,19},{1004,20}}; main() {

struct student *p; p=stu; ? }

A、(*p).num B、(p++)->num C、p=&stu.age D、p++

二、判断题

1. 两个类型相同的结构体变量,可以互相赋值.T【10】 2. 共用体变量中起作用的成员是最后一次存放的成员.T 3. 一个共用体变量中可以同时存放其所有成员.F 4. typedef可以定义生成新的数据类型.F

5. 使几个不同的变量共占同一段内存的结构,称为\结构体\类型.N

6. 对于不同类型的数据,若想合成一个有机的整体,可以引用结构体进行定义。T 7. 在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。T 8. 共同体变量所占的内存长度等于最长的成员的长度。T

三、填空题

1. 设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 _____。34 struct stud { char name[10]; float s[4]; double ave; } a,*p; 【10】

2. 设有以下结构类型说明和变量定义,则变量b在内存所占字节数是 _____。 21

struct stud { short int age; char num[3]; float s[2]; double ave; } b,*p; 3. 结构体是不同数据类型的数据集合,作为数据类型, 必须先说明结构体_____,再说明结构体变量. 类型

4. 设有以下共用体类型说明和变量定义,则变量c在内存所占字节数是 _____。 20 union stud { short int num; char name[10]; float score[5]; double ave; } c;

5. 在内存所占字节数是 _____。 struct stud { char num[6]; float s[4]; double ave; } a,*p; 30 6、设有以下共用体类型说明和变量定义,则变量d在内存所占字节数是 _____。 union stud { short int num; char name[8];float score[3]; double ave; } d,stu[3]; 12 7. 设有以下共用体类型说明和变量定义,则变量a在内存所占字节数是 _____。 union stud { char num[6]; float s[4]; double ave; } a,*p; 16

8. 结构体是不同数据类型的数据集合,作为数据类型, 必须先说明结构体_____,再说明结构体变量.类型

第11 章 文件

一、单选题

1. 定义my_file 为文件型指针变量,使用fopen只读方式打开一个已存在的二进制文件,以下正

确的调用形式为(C).

A、my_file=fopen(\B、my_file=fopen(\C、my_file=fopen(\D、my_file=fopen(\

2.有两个整型变量dog和cat,若要从磁盘文件把数据读到其中, 正确的形式是(B).

A、fscanf(dog ,2,1,fp);

B、fscanf(fp,\C、fscanf(dog ,cat,2,1,fp); D、fscanf(fp,\

3.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数 feof(fp)的值为(D)。 A、-1 B、1

C、一个非0值 D、0

4.若以\方式打开一个已存在的文件,则以下叙述正确的是(A)。

A、文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B、以上各种说法皆不正确

C、文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 D、文件打开时,原有文件内容被删除,只可作写操作

二、判断题

1. C语言中,在打开文件时,必须说明文件的使用方式,\只能用于文件的写.F 2. 下面的定义和语句是合法的:file *fp;fp=fopen(\3. 用fopen(\打开的文件\可以进行修改。T

4. 在打开文件时,必须说明文件的使用方式,\表示以读/写方式打开一个二进制文件.T 5. C语言中,在打开文件时,必须说明文件的使用方式,\用于打开一个不存在的文件.F 6. C语言中,关闭一个文件就删除了这个文件.F

7. C语言中,打开一个文件就意味着产生了一个文件.F

8.在打开文件时,必须说明文件的使用方式,\表示以只读方式打开一个文件.

三、填空题

1. 调用 fopen 函数打开一文本文件,在\使用方式\这一项中, 为输入而打开需填入_____.r

2. 在C语言中,关闭文件即是文件指针不再指向该_____. 文件

3. 在C语言中,根据要处理的文件存储的编码形式,可以把文件分为ASCII文件和_____文件. 二进制

4. 若有fp=fopen(\打开文件语句,这个文件的数据是以_____的形式存放在内存中,该文件的使用方式为读/_____。文本(ASCII码) 写

本文来源:https://www.bwwdw.com/article/epf6.html

Top