大学计算机C语言期末考试(C语言考试系统)

更新时间:2024-03-19 21:45:01 阅读量: 综合文库 文档下载

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

一 填空题

1. 已知a=13,b=6, a^b的十进制数值为【1】

2. 如果函数不要求带回值,可用【1】来定义函数返回值为空.

3. 当a=3,b=2,c=1;时,执行以下程序段后 b=【1】. if(a>b) a=b; if(b>c) b=c; else c=b; c=a; 答:1

4. c语言程序的三种基本结构是:顺序结构,选择结构,【1】结构. 答:循环结构

5. C程序在执行过程中,不检查数组下标是否【1】.

6. 若有定义:int a[3][2]={2,4,6,8,10,12};,则*(a[1]+1)的值是【1】. 7. C语言中调用【1】函数来关闭文件.

8. 在c程序中,只能给指针赋NULL值和【1】值. 9. 表达式 i++ 相当于表达式i=【1】.

10.若x和n均是int型变量,且x和n的初值均为5,则计算表达式 x+=n++ 后x的值为的值为【2】. 二 判断题

1. #define 和printf 都不是C语句。

2. 在Turbo C中,整型数据在内存中占2个字节。

3. 语句scanf(\是一个合法的scanf函数。

4. 如果函数值的类型和return语句中表达式的值不一致,则以 函数类型为准。

5. 若有 # define S(a,b) a*b 则语句 area=S(3,2); area的值为6。 6. 如果有一个字符串,其中第十个字符为'\\n',则此字符串的 有效字符为9个。

7. 结构体类型只有一种。

8. 在C 语言中,此定义和语句是合法的: enum aa{ a=5,b,c}bb;bb=(enum aa)5; 9. 7&3+12的值是15。

10. 若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28。 三 单选题

1. 以下程序段的输出结果为()。 char c[]=\int do ;while(c[i++]!='\\0');printf(\

(A)abc

(B)ab (C)2 (D)3

2. 以下叙述正确的是()。

(A)在C程序中,main函数必须位于程序的最前面

(B)C程序的每行中只能写一条语句

1】,n i=0; 【

(C)C语言本身没有输入输出语句

(D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误 答:C

解析:C语言本身并不提供输入输出语句,输入和输出操作是由函数来实现的。在C

标准函数库中提供了一些输入输出函数,例如,printf函数和scanf函数。在使用他们时,千万不要误认为他们是C语言提供的“输入输出语句”。printf和scanf不是C语言的关键字,而只是函数的名字。C提供的函数以库的形式存放在系统中,它们不是C语言文本中的组成部分。不把输入输出作为C语言提供的语句的目的是使C语言编译系统简单,因为将语句翻译成二进制的指令是在编译阶段完成的,没有输入输出语句可以避免在编译阶段处理与硬件有关的问题,可以使编译系统简化,而且通用性强,可移植性好,对各种型号的计算机都适用,便于在各种计算机上实现。各种版本的C语言函数库是各计算机厂商针对某一类型计算机的情况编写的,并且已编译成目标文件(.obj文件)。它们在连接阶段与源程序经编译而得到的目标文件相连接,生成一个可执行的目标程序。如果在源程序中有printf函数,在编译时并不把它翻译成目标指令,而是在执行阶段调用已被连接的函数库中的printf函数

3.已知函数的调用形式:fread(buffer,size,count,fp);其中buffer 代表的是()。

(A)一个整数,代表要读入的数据项总数

(B)一个文件指针,指向要读的文件

(C)一个指针,指向要读入数据的存放地址

(D)一个存储区,存放要读的数据项

4. 以下标识符中,不能作为合法的C用户定义标识符的是()。

(A)answer

(B)to

(C)signed

(D)_if

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

(A)char *a=\等价于 char *a;*a=\

(B)char str[10]={\等价于char str[10];str[]={\

(C)char *s=\等价于 char *s;s=\

(D)char c[4]=\等价于 char c[4]=d[4]=\6. 若有int *p=(int *)malloc(sizeof(int));则向内存申请到内存 空间存入整数123的语句为()。

(A)scanf(\

(B)scanf(\

(C)scanf(\

(D)scanf(\

7. 以下语句中,不能实现回车换行的是()。

(A)printf(\

(B)putchar(\

(C)fprintf(stdout,\

(D)fwrite(\

8. int a=1,b=2,c=3; if(a>c)b=a;a=c;c=b;则c的值为()。 (A)1 (B)2 (C)3

(D)不一定

9. 下列程序段的输出结果为()。

float x=213.82631; printf(\

(A)213.82

(B)213.83

(C)213

(D)3.8

10. enum a {sum=9,mon=-1,tue}; 定义了()。

(A)枚举变量

(B)3个标识符

(C)枚举数据类型

(D)整数9和-1 一 判断题

1. 设x=5>1+2,x的值 为【1】.

2.数组在内存中占一段连续的存储区,由【1】代表它的首地址. 3.int x=2;z=x++-1; 则x的值为【1】.

4.已知 i=5,写出语句 i*=i+1; 执行后整型变量 i 的值是【1】. 5. 已知a=13,b=6, a&b的十进制数值为【1】. 6. 表达式 i++ 相当于表达式i=【1】.

7. 设有以下定义的语句: int a[3][2]={10,20,30,40,50,60}, (*p)[2]; *(*(p+2)+1)值为【1】.

8. 当a=1,b=2,c=3时,执行以下程序段后a=【1】. if (a>c) b=a; a=c; c=b; 9. 下面程序段的输出结果是【1】. int a=12;a=a&052;printf(\

10. int a=1,b=2,c=3; 表达式(a&b)||(a|b) 的值是【1】. 二 判断题

1. C语言本身不提供输入输出语句,输入和输出操作是由函数来 实现的。

2. 若有说明int c;则while(c=getchar());是正确的C语句。 3.用fopen(\打开的文件\可以进行修改。 4. 共同体变量所占的内存长度等于最长的成员的长度。 5. x*=y+8 等价于 x=x*(y+8)。

6. 关系运算符<= 与 == 的优先级相同。 7. 表达式 (j=3, j++) 的值是4.

8. 若有int ⅰ=10, j=0;则执行完语句

if (j=0)ⅰ+ +; else ⅰ- -; ⅰ的值为11。

9. 若有 # define S(a,b) a*b 则语句 area=S(3,2); area的值为6。 10. 如果想使一个数组中全部元素的值为0,可以写成 int a[10]={0*10}; 三 单选题

1. 在C程序中,可把整型数以二进制形式存放到文件中的函数是()。

(A)fprintf函数

(B)fread函数

(C)fwrite函数

(D)fputc函数

2. 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()。

(A)p=1;

(B)*q=2;

p=a; 则

(C)q=p;

(D)*p=5;

3. 执行下列语句后的结果为()。 int x=3,y; int *px=&x; y=*px++;

(A)x=3,y=4

(B)x=3,y=3

(C)x=4,y=4

(D)x=3,y不知

4.以下数组定义中不正确的是()。

(A)int a[2][3];

(B)int b[][3]={0,1,2,3};

(C)int c[100][100]={0};

(D)int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 5. 设j和k都是int类型,则for循环语句

for(j=0,k=-1;k=1;j++,k++) printf(\()。

(A)循环结束的条件不合法

(B)是无限循环

(C)循环体一次也不执行

(D)循环体只执行一次

6. 在位运算中,操作数每右移一位,其结果相当于()。

(A)操作数乘以2

(B)操作数除以2

(C)操作数乘以16

(D)操作数除以16

7.以下对C语言函数的描述中,正确的是()。

(A)C程序必须由一个或一个以上的函数组成

(B)C函数既可以嵌套定义又可以递归调用

(C)函数必须有返回值,否则不能使用函数

(D)C程序中有调用关系的所有函数必须放在同一个程序文件中 8.char h,*s=&h;可将字符H通过指针存入变量h中的语句是()。

(A)*s=H;

(B)*s='H';

(C)s=H;

(D)s='H'

9. 以下叙述正确的是()。

(A)在C程序中,main函数必须位于程序的最前面

(B)C程序的每行中只能写一条语句

(C)C语言本身没有输入输出语句

(D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误 10. 若要说明一个类型名STP,使得定义语句STP s等价于char *s, 以下选项中正确的是()。

(A)typedef STP char *s;

(B)typedef *char STP;

(C)typedef stp *char;

(D)typedef char* STP; 一 填空题

1. C语言中,【1】是程序的基本组成部分.

2. 以下程序的输出结果为【1】, #include \main(){int a;for(a=0;a<10;a++);printf(\3. 表达式 i++ 相当于表达式i=【1】.

4. 一个C源程序中至少应包括一个【1】函数. 5. 表达式18 && 53 的值是【1】.

6. 若输入字符串:abcde<回车>,则以下while循环体将执行 【1】 次. While((ch=getchar())=='e') printf(\

7. int x; x=(3+4)%5-6, 则x的值为【1】.

8. 当a=3,b=2,c=1;时,执行以下程序段后 a=【1】. if(a>b) a=b; if(b>c) b=c; else c=b; c=a;

9. 在c程序中,只能给指针赋NULL值和【1】值.

10. 设c语言中,int类型数据占2个字节,则long类型数据占【1】个字节, short类型数据占【2】个字节. 二 判断题

1. char *p=\的含义是定义字符型指针变量p,p的值是字符串\。 2. 设有数组定义: char array [ ]=\则数组 array所占的空间为5. 3. 若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义, 所以此宏定义是错误的。

4. 在Turbo C中,下面的定义和语句是合法的: file *fp;fp=fopen(\5. 若有定义和语句:

int a;char c;float f;scanf(\若通过键盘输入:

10,A,12.5,则a=10,c='A',f=12.5.

6. int i=20;switch(i/10){case 2:printf(\case 1:printf(\的输出结果为A。 7. #define 和printf 都不是C语句。 8. int i,*p=&i;是正确的C说明。

9. 一个include 命令可以指定多个被包含的文件。 10. 关系运算符<= 与 == 的优先级相同。 三 单选题

1. 以下能对一维数组a进行正确初始化的语句是()。

(A)int a[10]=(0,0,0,0,0)

(B)int a[10]={};

(C)int a[]={0};

(D)int a[10]={10*1};

2. 若二维数组a有m列,则在a[i][j]前的元素个数为()。

(A)j*m+i

(B)i*m+j

(C)i*m+j-1

(D)i*m+j+1

3. 如果int a=2,b=3,c=0,下列描述正确的是

(A)a>b!=c和a>(b!=c)的执行顺序是一样的

(B)!a!=(b!=c)表达式的值为1

(C)a||(b=c)执行后b的值为0

(D)a&&b>c的结果为假

4. 以下数据中,不正确的数值或字符常量是()。 (A)c

(B)66

(C)0xaa

(D)50

5. 先用语句定义字符型变量c,然后要将字符a赋给c,则下列语句中正确的是(A)。

(A)c='a';

(B)c=\

(C)c=\

(D)C='97'

6. 若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp) 的返回值是()。

(A)EOF (B)0

(C)非零值

(D)NULL

7. char a1[]=\将a1串连接到a2串后面的语句是()。

(A)strcat(a2,a1);

(B)strcpy(a2,a1);

(C)strcat(a1,a2);

(D)strcpy(a1,a2);

8.以下能对二维数组a进行正确初始化的语句是()。

(A)int a[2][]={{1,0,1},{5,2,3}};

(B)int a[][3]={{1,2,3},{4,5,6}};

(C)int a[2][4]={{1,2,3},{4,5},{6}};

(D)int a[][3]={{1,0,1}{},{1,1}};

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

(A)字符A

(B)字符a

(C)字符e

(D)非法的常量

10. 下列程序运行结果为: #define P 3

#define S(a) P*a*a main() {int ar; ar=S(3+5);

printf(\ }

(A)192

(B)29

(C)27

(D)25

一 填空题

1. 下列语句输出的结果是【1】,unsigned int b=65535;printf(\2. 已知a=13,b=6, a^b的十进制数值为【1】.

3. 程序段int k=10; while(k=0) k=k-1循环体语句执行【1】次. 4. 设x=72,表达式x=(x>=60)的值为【1】.

5. 下面程序段的输出结果是【1】. int a=12;a=a&052;printf(\6. c语言表达式5>2>7>8的值是【1】.

7. 设a取二进制数00101101,若想通过a^b运算使a的高4位取反,低4位不变,则b的 二进制数是【1】.

8.若所用变量均已正确定义,则执行下面程序段后的 值是【1】. for(i=0 ; i<2 ; i++ ) printf(\

9. int x=2;z=x++-1; 则z的值为【1】.

10. 变量的本质是代表内存中的一个存储单元的【1】。 二 判断题

1. 参加位运算的数据可以是任何类型的数据。 2.typedef可以定义生成新的数据类型. 3. 若有定义和语句:

int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0; for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21.

4. C程序中有调用关系的所有函数必须放在同一个源程序文件中。 5. 若有 # define S(a,b) a*b 则语句 area=S(3,2); area的值为6。 6. 若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28。 7. a=(b=4)+(c=6) 是一个合法的赋值表达式。

8. 如果函数值的类型和return语句中表达式的值不一致,则以 函数类型为准。

9. char c[]=\是一个合法的为字符串数组赋值的语句。 10.假设有int a[10], *p;则p=&a[0]与p=a等价 三 单选题

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

(A)字符A

(B)字符a

(C)字符e

(D)非法的常量

2. 以下运算符中,优先级最高的运算符是()。

(A)|| (B)% (C)!

(D)==

3. 若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写, 则文件方式字符串应是()。

(A)\

(B)\

(C)\

(D)\

4. 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

5. 若二维数组a有m列,则在a[i][j]前的元素个数为()。

(A)j*m+i

(B)i*m+j

(C)i*m+j-1

(D)i*m+j+1

6. 若变量已正确定义并赋值,下面符合C语言语法的表达式是()。

(A)a:=b+1

(B)a=b=c+2

(C)int 18.5%3

(D)a=a+7=c+b

7.C语言程序中,当调用函数时()。

(A)实参和虚参各占一个独立的存储单元

(B)实参和虚参可以共用存储单元

(C)可以由用户指定是否共用存储单元

(D)计算机系统自动确定是否共用存储单元 8. fseek函数的正确调用形式是()。

(A)fseek(文件类型指针,起始点,位移量)

(B)fseek(fp,位移量,起始点)

(C)fseek(位移量,起始点,fp)

(D)fseek(起始点,位移量,文件类型指针)

9. 在C程序中,可把整型数以二进制形式存放到文件中的函数是()。

(A)fprintf函数

(B)fread函数

(C)fwrite函数

(D)fputc函数

10. C语言中,文件由()。

(A)记录组成

(B)由数据行组成

(C)由数据块组成

(D)由字符(字节)序列组成

选择题

1.在C语言程序中()。

(A)函数的定义可以嵌套,但函数的调用不可以嵌套

(B)函数的定义不可以嵌套,但函数的调用可以嵌套

(C)函数的定义和函数调用均可以嵌套

(D)函数的定义和函数调用不可以嵌套

2.在C语言中,要求运算数必须是整型的运算符是()。 (A)^ (B)% (C)! (D)>

3.下面说明不正确的是()。

(A)char a[10]=\

(B)char a[10],*p=a;p=\

(C)char *a;a=\

(D)char a[10],*p;p=a=\

4.C语言程序中必须有的函数是()。

(A)#include \

(B)main

(C)printf (D)scanf

5.设有 int x=11; 则表达式 (x++ * 1/3) 的值是()。 (A)3 (B)4

(C)11

(D)12

6.下面叙述中错误的是

(A)函数的形式参数,在函数未被调用时就不被分配存储空间

(B)若函数的定义出现在主调函数之前,则可以不必再加说明

(C)若一个函数没有return语句,则什么值也不会返回

(D)一般来说,函数的形参和实参的类型要一致

7.已知year为整型变量,不能使表达式(year%4==0&&year0!=0) ||year@0==0的值为“真”的数据是()。

(A)1990

(B)1992

(C)1996

(D)2000

8.已知函数的调用形式:fread(buffer,size,count,fp);其中buffer

代表的是()。

(A)一个整数,代表要读入的数据项总数

(B)一个文件指针,指向要读的文件

(C)一个指针,指向要读入数据的存放地址

(D)一个存储区,存放要读的数据项

9.以下叙述中正确的是 ()。

(A)C程序中注释部分可以出现在程序中任意合适的地方

(B)花括号“{“和”}”只能作为函数体的定界符

(C)构成C程序的基本单位是函数,所有函数名都可以由用户命名

(D)分号是C语句之间的分隔符,不是语句的一部分

10.若有 char s1[]=\则下列语句中能够实现当字符串s1大于字符串s2时,输出s2的语句是()。

(A)if(strcmp(s1,s1)>0)puts(s2);

(B)if(strcmp(s2,s1)>0)puts(s2);

(C)if(strcmp(s2,t)>0)puts(s2);

(D)if(strcmp(s1,t)>0)puts(s2); 填空

1.复制字符串的库函数是【1】,只写函数名即可.

2.表达式18 && 53 的值是【1】.

3.若有定义:char c='\\010'; 则变量C中包含的字符个数为【1】.

4.下面程序段的输出结果是【1】. int a=12; a=a&0377;pritnf(\5.C语言把文件看作是一个【1】的序列.

6.若有以下数组a,数组元素:a[0]~a[9],其值为 9 4 12 8 2 10 7 5 1 3 该数组中下标最大的元素的值是【1】.

7.若a是int型变量,则计算表达式 a=25/3%3 后a的值为【1】. 8.复制字符串的库函数是【1】,只写函数名即可.

9.若有以下数组a,数组元素:a[0]~a[9],其值为 9 4 12 8 2 10 7 5 1 3 该数组中下标最小的元素名字是【1】.

10.程序段int k=10; while(k=0) k=k-1循环体语句执行【1】次. 判断

1.进行宏定义时,宏名必须使用大写字母表示。 2.若有int ⅰ=10, j=0;则执行完语句

if (j=0)ⅰ+ +; else ⅰ- -; ⅰ的值为11。

3.共同体变量所占的内存长度等于最长的成员的长度。 4.循环结构中的continue语句是使整个循环终止执行 5.函数strlen(\的值是7。 6.关系运算符<= 与 == 的优先级相同。

7.如果函数值的类型和return语句中表达式的值不一致,则以 函数类型为准。

8.若有说明int c;则while(c=getchar());是正确的C语句。

9.一个include 命令可以指定多个被包含的文件。

10.char *p=\的含义是定义字符型指针变量p,p的值是字符串\

判断

1.参加位运算的数据可以是任何类型的数据。 2.typedef可以定义生成新的数据类型. 3.若有定义和语句:

int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0; for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21.

4.C程序中有调用关系的所有函数必须放在同一个源程序文件中。 5.若有 # define S(a,b) a*b 则语句 area=S(3,2); area的值为6。 6.若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28。 7.a=(b=4)+(c=6) 是一个合法的赋值表达式。

8.如果函数值的类型和return语句中表达式的值不一致,则以 函数类型为准。

9.char c[]=\是一个合法的为字符串数组赋值的语句。 10.假设有int a[10], *p;则p=&a[0]与p=a等价 单选

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

(A)字符A

(B)字符a

(C)字符e

(D)非法的常量

2.以下运算符中,优先级最高的运算符是()。

(A)|| (B)% (C)! (D)==

3.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写, 则文件方式字符串应是()。

(A)\

(B)\

(C)\

(D)\

4.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

5.若二维数组a有m列,则在a[i][j]前的元素个数为()。

(A)j*m+i

(B)i*m+j

(C)i*m+j-1

(D)i*m+j+1

6.若变量已正确定义并赋值,下面符合C语言语法的表达式是()。

(A)a:=b+1

(B)a=b=c+2

(C)int 18.5%3

(D)a=a+7=c+b

7.C语言程序中,当调用函数时()。

(A)实参和虚参各占一个独立的存储单元

(B)实参和虚参可以共用存储单元

(C)可以由用户指定是否共用存储单元

(D)计算机系统自动确定是否共用存储单元 8.fseek函数的正确调用形式是()。

(A)fseek(文件类型指针,起始点,位移量)

(B)fseek(fp,位移量,起始点)

(C)fseek(位移量,起始点,fp)

(D)fseek(起始点,位移量,文件类型指针)

9.在C程序中,可把整型数以二进制形式存放到文件中的函数是()。

(A)fprintf函数

(B)fread函数

(C)fwrite函数

(D)fputc函数

10.C语言中,文件由()。

(A)记录组成

(B)由数据行组成

(C)由数据块组成

(D)由字符(字节)序列组成 填空

1.下列语句输出的结果是【1】,unsigned int b=65535;printf(\2.已知a=13,b=6, a^b的十进制数值为【1】.

3.程序段int k=10; while(k=0) k=k-1循环体语句执行【1】次. 4.设x=72,表达式x=(x>=60)的值为【1】.

5.下面程序段的输出结果是【1】. int a=12;a=a&052;printf(\6.c语言表达式5>2>7>8的值是【1】.

7.设a取二进制数00101101,若想通过a^b运算使a的高4位取反,低4位不变,则b的 二进制数是【1】.

8.若所用变量均已正确定义,则执行下面程序段后的 值是【1】. for(i=0 ; i<2 ; i++ ) printf(\

9.int x=2;z=x++-1; 则z的值为【1】.

10变量的本质是代表内存中的一个存储单元的【1】。

一.填空

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

2.以下do-while语句中循环体的执行次数是【1】. a=10; b=0; do { b+=2; a-=2+b; } while (a>=0);

3.int x; x=-3+4%5-6, 则x的值为【1】.

4.若a是int型变量,且a的初值为6,则计算表达式 a+=a-=a*a 后a的值为【1】.

5.当a=3,b=2,c=1;时,执行以下程序段后 b=【1】. if(a>b) a=b; if(b>c) b=c; else c=b; c=a;

6.若有定义:char s[ ]=\则Turbo C系统为数组s开辟【1】个字节的内存单元.

7.C语言源程序的基本单位是【1】.

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

9.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 【1】 . Struct stud { char num[6]; int s[4]; double ave; } a,*p;

10.int x=2,y=3,z=4; 则表达式!x+y>z的值为【1】.

二.判断

1若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义, 所以此宏定义是错误的。

2. 函数strlen(\的值是7。

3. 若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28。

4. 参加位运算的数据可以是任何类型的数据。

5. 字符处理函数strcpy(str1,str2)的功能是把字符串1接到字符串2的后面.

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

7. 语句 printf(\输出为 0.333333。

8. 若 a=3,b=2,c=1 则关系表达式\的值为\真\。

9. 用fopen(\打开的文件\可以进行修改。

10. C程序中有调用关系的所有函数必须放在同一个源程序文件中。

三.单选

1. 以下运算符中,优先级最高的运算符是()。

(A)|| (B)% (C)!

(D)==

2.若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作, 下面符合此要求的函数调用是()。

(A)fopen(\

(B)fopen(\

(C)fopen(\

(D)fopen(\.

3. 以下for循环的执行次数是 for(x=0,y=0;(y=123)&&(x<4);x++);()。

(A)是无限循环

(B)循环次数不定

(C)4次

(D)3次

4. 设有说明int (*ptr)[M];其中标识符ptr是()。

(A)M个指向整型变量的指针

(B)指向M个整型变量的函数指针

(C)一个指向具有M个整型元素的一维数组的指针

(D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量

5. fgets(str,n,fp)函数从文件中读入一个字符串,以下正确的叙述是()。

(A)字符串读入后不会自动加入'\\0'

(B)fp是file类型的指针

(C)fgets函数将从文件中最多读入n-1个字符

(D)fgets函数将从文件中最多读入n个字符

6. 若有说明: int a[][4]={0,0};则下面不正确的叙述是()。

(A)数组a的每个元素都可得到初值0

(B)二维数组a的第一维大小为1

(C)因为二维数组a中第二维大小的值除经初值个数的商为1,故数组a的行数为1

(D)有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

7. 已知p,p1为指针变量,a为数组名,j为整型变量,下列赋值语句中 不正确的是()。

(A)p=&j,p=p1;

(B)p=a;

(C)p=&a[j];

(A)8.9e1.2

(B)10

(C)0xff00

(D)82.5

7. 以下不正确的if语句形式是()。

(A)if(x>y&&x!=y);

(B)if(x==y) x+=y;

(C)if(x!=y) scanf(\

(D)if(x

8. 若k,g均为int型变量,则下列语句的输出为()。

k=017; g=111; printf(\

(A)15 6f

(B)16 70

(C)15 71

(D)16 6f

9. 若有char a[80],*s=a;不正确的输入语句是()。

(A)scanf(\

(B)gets(s);

(C)fscanf(stdin,\

(D)fgets(s,80,stdin);

10. 以下能对二维数组a进行正确初始化的语句是()。

(A)int a[2][]={{1,0,1},{5,2,3}};

(B)int a[][3]={{1,2,3},{4,5,6}};

(C)int a[2][4]={{1,2,3},{4,5},{6}};

(D)int a[][3]={{1,0,1}{},{1,1}};

四 程序填空

<<答题说明>>

按“答题”按钮进入程序环境进行调试!在“**********SPACE**********”语

句的下一行完成程序填空,首先将填空标志【?】删除,然后填入正确的答案, 答题结束后,必须在程序环境中做好保存。

当前试题文件夹:C:\\Exam\\3qtc0283\\CK\\421

/*------------------------------------------------------- 【程序填空】

---------------------------------------------------------

功能:输入学生成绩并显示。

-------------------------------------------------------*/

# include

struct student {

char number[6]; char name[6]; int score[3]; } stu[2];

void output(struct student stu[2]);

void main() {

int i, j;

/***********SPACE***********/ for(i=0; i<2; 【?】) {

printf(\请输入学生%d的成绩:\\n\ printf(\学号:\

/***********SPACE***********/ scanf(\【?】.number); printf(\姓名:\

scanf(\ for(j=0; j<3; j++) {

printf(\成绩 %d. \ /***********SPACE***********/ scanf(\【?】.score[j]); }

printf(\ }

output(stu); }

void output(struct student stu[2]) {

int i, j;

printf(\学号 姓名 成绩1 成绩2 成绩3\\n\ for(i=0; i<2; i++) {

/***********SPACE***********/

【?】(\ for(j=0; j<3; j++)

printf(\ printf(\ } }

/*------------------------------------------------------- 【程序填空】

---------------------------------------------------------

功能:用函数调用方式,实现字符串的复制。

-------------------------------------------------------*/ #include

void string_copy(char *str_from, char *str_to) {

int i=0;

/***********SPACE***********/

for(; (*(【?】)=*(str_from+i))!='\\0'; i++) ; }

main() {

static char array_str1[20]=\ char array_str2[20];

/***********SPACE***********/ 【?】(array_str1, array_str2); /***********SPACE***********/

【?】(\}

/*------------------------------------------------------- 【程序填空】

---------------------------------------------------------

功能:有五个学生,每个学生有3门课的成绩,从键盘输入以上数 据(包括学生号,姓名,三门课成绩),计算出平均成绩, 设原有的数据和计算出的平均分数存放在磁盘文件\

中。

-------------------------------------------------------*/

#include struct student {

char num[6]; char name[8]; int score[3]; double avr; } stu[5];

main() {

int i,j,sum; FILE *fp; /*input*/

for(i=0;i<5;i++) {

printf(\ printf(\

scanf(\ printf(\

scanf(\ sum=0;

/***********SPACE***********/ for(j=0;【?】;j++) {

printf(\

scanf(\ /***********SPACE***********/ sum+=stu[i].【?】; }

stu[i].avr=sum/3.0; }

fp=fopen(\

/***********SPACE***********/ for(i=0;i<5;【?】)

/***********SPACE***********/

if(fwrite(&stu[i],sizeof(【?】),1,fp)!=1) printf(\ fclose(fp); }

/*------------------------------------------------------- 【程序填空】

---------------------------------------------------------

功能:从读入的整数数据中,统计大于零的整数个数和小于零的 整数个数。用输入零来结束输入,程序中用变量i统计大于 零的整数个数,用变量j统计小于零的整数个数。

-------------------------------------------------------*/

#include main() {

int n,i,j;

printf(\ i=j=0;

scanf(\ while(n!=0) {

/***********SPACE***********/ if(n>0)i=【?】;

/***********SPACE***********/ if(n<0)j=【?】;

/***********SPACE***********/ scanf(\【?】); }

printf(\}

五 程序设计

/*------------------------------------------------ 【程序设计】

--------------------------------------------------

功能:编写函数实现两个数据的交换,在主函数中输入任 意三个数据,调用函数对这三个数据从大到小排序。

------------------------------------------------*/

#include void wwjt();

void swap(int *a,int *b) {

/**********Program**********/

(C)4个字节 (D)8个字节

3.下列标识符中,不合法的C语言用户自定义标识符是()。 (A)printf (B)enum (C)_ (D)sin

4.若x=2,y=3则x&y的结果是()。 (A)0 (B)2 (C)3 (D)5

5.下面说明不正确的是()。 (A)char a[10]=\

(B)char a[10],*p=a;p=\(C)char *a;a=\

(D)char a[10],*p;p=a=\

6.double x;scanf(\不可以赋值给x变量的常量是()。 (A)123 (B)100000 (C)A' (D)\

7.一个C程序的执行是从()。

(A)本程序的main函数开始,到main函数结束

(B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

(C)本程序的main函数开始,到本程序文件的最后一个函数结束

(D)本程序文件的第一个函数开始,到本程序main函数结束 8.以下正确的说法是()。

(A)用户若需调用标准库函数,调用前必须重新定义

(B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义

(C)系统根本不允许用户重新定义标准库函数

(D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调

9.当定义一个结构体变量时,系统分配给它的内存是()。 (A)各成员所需内存量的总和

(B)结构中第一个成员所需内存量 (C)结构中最后一个成员所需内存量 (D)成员中占内存量最大者所需的容量

10.若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()。 (A)2 (B)3 (C)4

(D)无确定值

四 程序填空

第一题

/*------------------------------------------------------- 【程序填空】

---------------------------------------------------------

功能:有五个学生,每个学生有3门课的成绩,从键盘输入以上数

据(包括学生号,姓名,三门课成绩),计算出平均成绩,

设原有的数据和计算出的平均分数存放在磁盘文件\中。

-------------------------------------------------------*/

#include struct student {

char num[6]; char name[8]; int score[3]; double avr; } stu[5]; main() {

int i,j,sum; FILE *fp; /*input*/

for(i=0;i<5;i++) {

printf(\ printf(\

scanf(\ printf(\

scanf(\ sum=0;

/***********SPACE***********/ for(j=0;【?】;j++) {

printf(\

scanf(\

/***********SPACE***********/ sum+=stu[i].【?】; }

stu[i].avr=sum/3.0; }

fp=fopen(\

/***********SPACE***********/ for(i=0;i<5;【?】)

/***********SPACE***********/

if(fwrite(&stu[i],sizeof(【?】),1,fp)!=1) printf(\ fclose(fp); }

第二题

/*------------------------------------------------------- 【程序填空】

--------------------------------------------------------- 功能:将一个数组中的元素按逆序存放。 -------------------------------------------------------*/ #include #define N 7 main () {

static int a[N]={12,9,16,5,7,2,1},k,s; printf(\ for (k=0;k

/***********SPACE***********/ for (k=0;k

s=a[k];

/***********SPACE***********/ 【?】 ;

/***********SPACE***********/ 【?】 ;

}

printf(\ for (k=0;k

/***********SPACE***********/ 【?】 (\}

第三题

/*------------------------------------------------------- 【程序填空】

--------------------------------------------------------- 功能:输出结果为: * * * * * * * * * * * * * * * * * * * *

-------------------------------------------------------*/ #include main() {

/***********SPACE***********/ static char 【?】={'*','*','*','*','*'}; int i,j,k;

char space=' '; for(i=0;i<5;i++) {

printf(\

for(j=1;j<=3*i;j++)

/***********SPACE***********/ printf(\【?】);

/***********SPACE***********/

}

void wwjt() {

FILE *IN,*OUT; int n; int i[10]; int o;

IN=fopen(\ if(IN==NULL) {

printf(\ }

OUT=fopen(\ if(OUT==NULL) {

printf(\ }

for(n=0;n<10;n++) {

fscanf(IN,\ }

fun(i,&n,3);

for(o=0;o

fprintf(OUT,\ }

fclose(IN); fclose(OUT); }

一 填空题

1. 已知a=13,b=6, a^b的十进制数值为【1】.

2. 如果函数不要求带回值,可用【1】来定义函数返回值为空.

3. 当a=3,b=2,c=1;时,执行以下程序段后 b=【1】. if(a>b) a=b; if(b>c) b=c; else

c=b; c=a;

4. c语言程序的三种基本结构是:顺序结构,选择结构,【1】结构. 5. C程序在执行过程中,不检查数组下标是否【1】.

6. 若有定义:int a[3][2]={2,4,6,8,10,12};,则*(a[1]+1)的值是【1】. 7. C语言中调用【1】函数来关闭文件.

8. 在c程序中,只能给指针赋NULL值和【1】值. 9. 表达式 i++ 相当于表达式i=【1】.

10.若x和n均是int型变量,且x和n的初值均为5,则计算表达式 x+=n++ 后x的值为 【1】,n的值为【2】. 二 判断题

1. #define 和printf 都不是C语句。

2. 在Turbo C中,整型数据在内存中占2个字节。

3. 语句scanf(\是一个合法的scanf函数。

4. 如果函数值的类型和return语句中表达式的值不一致,则以 函数类型为准。

5. 若有 # define S(a,b) a*b 则语句 area=S(3,2); area的值为6。 6. 如果有一个字符串,其中第十个字符为'\\n',则此字符串的 有效字符为9个。

7. 结构体类型只有一种。

8. 在C 语言中,此定义和语句是合法的: enum aa{ a=5,b,c}bb;bb=(enum aa)5; 9. 7&3+12的值是15。

10. 若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28。 三 单选题

1. 以下程序段的输出结果为()。 char c[]=\do ;while(c[i++]!='\\0');printf(\

(A)abc

(B)ab (C)2 (D)3

2. 以下叙述正确的是()。

(A)在C程序中,main函数必须位于程序的最前面

(B)C程序的每行中只能写一条语句

(C)C语言本身没有输入输出语句

(D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误 3.已知函数的调用形式:fread(buffer,size,count,fp);其中buffer 代表的是()。

int i=0;

(A)一个整数,代表要读入的数据项总数

(B)一个文件指针,指向要读的文件

(C)一个指针,指向要读入数据的存放地址

(D)一个存储区,存放要读的数据项

4. 以下标识符中,不能作为合法的C用户定义标识符的是()。

(A)answer

(B)to

(C)signed

(D)_if

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

(A)char *a=\等价于 char *a;*a=\

(B)char str[10]={\等价于char str[10];str[]={\

(C)char *s=\等价于 char *s;s=\

(D)char c[4]=\等价于 char c[4]=d[4]=\6. 若有int *p=(int *)malloc(sizeof(int));则向内存申请到内存 空间存入整数123的语句为()。

(A)scanf(\

(B)scanf(\

(C)scanf(\

(D)scanf(\

7. 以下语句中,不能实现回车换行的是()。

(A)printf(\

(B)putchar(\

(C)fprintf(stdout,\

(D)fwrite(\

8. int a=1,b=2,c=3; if(a>c)b=a;a=c;c=b;则c的值为()。 (A)1 (B)2 (C)3

(D)不一定

9. 下列程序段的输出结果为()。

float x=213.82631; printf(\

(A)213.82

(B)213.83

(C)213

(D)3.8

10. enum a {sum=9,mon=-1,tue}; 定义了()。

(A)枚举变量

(B)3个标识符

(C)枚举数据类型

(D)整数9和-1 一 判断题

1. 设x=5>1+2,x的值 为【1】.

2.数组在内存中占一段连续的存储区,由【1】代表它的首地址. 3.int x=2;z=x++-1; 则x的值为【1】.

4.已知 i=5,写出语句 i*=i+1; 执行后整型变量 i 的值是【1】. 5. 已知a=13,b=6, a&b的十进制数值为【1】. 6. 表达式 i++ 相当于表达式i=【1】.

7. 设有以下定义的语句: int a[3][2]={10,20,30,40,50,60}, *(*(p+2)+1)值为【1】.

8. 当a=1,b=2,c=3时,执行以下程序段后a=【1】. if (a>c) b=a; a=c; c=b; 9. 下面程序段的输出结果是【1】. int a=12;a=a&052;printf(\

10. int a=1,b=2,c=3; 表达式(a&b)||(a|b) 的值是【1】. 二 判断题

1. C语言本身不提供输入输出语句,输入和输出操作是由函数来 实现的。

2. 若有说明int c;则while(c=getchar());是正确的C语句。

p=a; 则(*p)[2]; 3.用fopen(\打开的文件\可以进行修改。 4. 共同体变量所占的内存长度等于最长的成员的长度。 5. x*=y+8 等价于 x=x*(y+8)。

6. 关系运算符<= 与 == 的优先级相同。 7. 表达式 (j=3, j++) 的值是4.

8. 若有int ⅰ=10, j=0;则执行完语句

if (j=0)ⅰ+ +; else ⅰ- -; ⅰ的值为11。

9. 若有 # define S(a,b) a*b 则语句 area=S(3,2); area的值为6。 10. 如果想使一个数组中全部元素的值为0,可以写成 int a[10]={0*10}; 三 单选题

1. 在C程序中,可把整型数以二进制形式存放到文件中的函数是()。

(A)fprintf函数

(B)fread函数

(C)fwrite函数

(D)fputc函数

2. 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()。

(A)p=1;

(B)*q=2;

(C)q=p;

(D)*p=5;

3. 执行下列语句后的结果为()。 int x=3,y; int *px=&x; y=*px++;

(A)x=3,y=4

(B)x=3,y=3

(C)x=4,y=4

(D)x=3,y不知

4.以下数组定义中不正确的是()。

(A)int a[2][3];

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

Top