C语言期末考试题

更新时间:2023-09-11 04:56:01 阅读量: 教育文库 文档下载

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

1.static struct {int a1;float a2;char a3;}a[10]={1,3.5,'A'}; 说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存

储方式,其中被初始化的下标变量是()。

A、a[10] B、a[0] C、a[1] D、a[-1]

B

2.对以下说明语句 int a[10]={6,7,8,9,10}; 的正确理解是()。

A、将5个初值依次赋给a[1]至a[5] B、将5个初值依次赋给a[6]至a[10]

C、因为数组长度与初值的个数不相同,所以此语句不正确 D、将5个初值依次赋给a[0]至a[4] D

3.在C语言中,能代表逻辑值“真”的是()。

A、大于0的数 B、True C、非0的数 D、非0整数 C

4.以下read函数的调用形式中,参数类型正确的是()。

A、read(int fd,int count,char *buf) B、read(int count,char *buf,int fd) C、read(int *buf,int fd,int count) D、read(int fd,char *buf,int count) D

6.以下不符合C语言语法的赋值语句是()。

A、a=b=5; B、a=1,b=2 C、++j; D、y=(a=3,6*5); B

7.C 语言程序的三种基本结构是顺序结构、选择结构和______结构.

A、递归 B、转移 C、嵌套 D、循环 D

8.选择结构中的条件与循环结构中循环成立的条件, 在写法上可以是任一表达式,但其值只能被判断为“真”或“假”。 哪个数作为逻辑“假”值()。

A、-1 B、非零的数 C、1 D、0 D

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

A、在C程序中,赋值运算符的优先级最低 B、在C程序中,j++;是一条赋值语句

C、C程序中的#include和#define均不是C语句 D、一个好的程序应该有详尽的注释 A

10.若有下列定义,则对a数组元素地址的正确引用是()。 int a[5],*p=a;

A、&a B、p+2 C、a++ D、&a[5] B

11.static char str[10]=\数组元素个数为()。

A、5 B、10 C、6 D、9

B

12.以下程序中,c的二进制值是

char a = 3, b = 6, c; c = a ^ b << 2;

A、00011100 B、00010100 C、00011000 D、00011011 D

13.以下程序的输出结果是

func(int a, int b)

{ int c; c = a + b;

return c;

}

main()

{ int x = 6, y = 7, z = 8, r;

r = func((x--, y++, x + y), z--);

printf(“%d\\n”, r);

}

A、21 B、11 C、31 D、20 A

14.以下程序的输出结果是________. void fun(int a, int b, int c) { a=456; b=567; c=678; } main()

{ int x=10, y=20, z=30; fun(x, y, z);

printf(\

A、30,20,10 B、10,20,30 C、678567456 D、456567678 A

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

A、18 B、-18 C、-9 D、9 B

16.若从终端输入以下数据,要给变量c赋以283.19,则正确的输入语句是

A、scanf(%8.4f”, &c); B、scanf(%6.2f”, &c); C、scanf(%f”,c) D、scanf(?”, &c); D

17.下列变量定义中合法的是()。

A、short _a=1-.1e-1; B、long do=0xfdaL; C、double b=1+5e2.5; D、float 2_and=1-e-3; A

18.以下程序的输出结果是

#define FMT “%d,”

main() {

int b[][4] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23}; printf(FMT, *(*(b+1)+1)); printfFMT, b[2][2]); }

A、1,11, B、1,11 C、11,21 D、11,21, D

19.若int a=3,则执行完表达式a-=a+=a*a后,a的值是

A、-15 B、0 C、-9 D、-3 B

20.以下read函数的调用形式中,参数类型正确的是()。

A、read(int fd,int count,char *buf) B、read(int count,char *buf,int fd) C、read(int *buf,int fd,int count) D、read(int fd,char *buf,int count) D

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

A、字符e B、字符a C、非法的常量 D、字符A D

22.C语言规定,函数返回值的类型是由()。

A、调用该函数时的主调函数类型所决定 B、return语句中的表达式类型所决定 C、调用该函数时系统临时决定

D、在定义该函数时所指定的函数类型所决定 D

23.结构化程序设计所规定的三种基本控制结构是()。

A、树形、网形、环形 B、输入、处理、输出 C、主程序、子程序、函数 D、顺序、选择、循环 D

24.与实际参数为实型数组名相对应的形式参数不可以定义为()。

A、float a; B、float a[]; C、float (*a)[3]; D、float *a; A

25.若有定义和语句:

int a[4][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, (*prt )[3] = a, *p[4], i; for(i = 0; i < 4; i++)

p[i] = a[i];

则不能够正确表示a数组元素的表达式是

A、(*(p+1))[1] B、a[4][3] C、p[0][0] D、prt[2][2] B

26.为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else总与( )配对

A、同一行上的if B、其之后最近的if C、其之前最近的未配对的if D、缩排位置相同的if C

27.以下程序的输出结果是 。

typedef union { long i;

int k[5]; char c; } DATE; struct date { int cat; DATE cow; double dog;

} too; DATE max; main() {

printf(“%d\\n”, sizeof(struct date) + sizeof(max) ); }

A、30 B、25 C、18 D、8 A

28.下列程序的输出结果为()。 main() {int m=7,n=4;

float a=38.4,b=6.4,x; x=m/2+n*a/b+1/2; printf(\}

A、28.000000 B、27.500000 C、28.500000 D、27.000000 D

29.有以下程序(提示:程序中fseek(fp, -2L * sizeof(int), SEEK_END);语句的作用是 使位置指针从文件末尾向前移2*sizeof(int)字节)

#include main()

{ FILE *fp; int i, a[4] = {1, 2, 3, 4}, b; fp = fopen(“data.dat”, “wb”);

for(i = 0; i < 4; i++) fwrite(&a[i], sizeof(int), 1, fp); fclose(fp);

fp = fopen(“data.dat”, “rb”);

fseek(fp, -2L * sizeof(int), SEEK_END);

fread(&b, sizeof(int), 1, fp); /*从文件中读取sizeof(int)字节的数据到变量b中*/ fclose(fp); }

执行后输出结果是

A、3 B、4 C、1 D、2 A

30.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用 5列,如果字符串长度大于5,则输出按方式()。

A、右对齐输出该字串,左补空格 B、从左起输出该字符串,右补空格 C、按原字符长从左向右全部输出 D、输出错误信息 C

1.语句int max(int x,int max(int y, int z));是正确的函数声明语句.

2.若有int ⅰ=10, j=0;则执行完语句 if (j=0)ⅰ+ +; else ⅰ- -; ⅰ的值为11。

错误

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

4.如果想使一个数组中全部元素的值为0,可以写成 int a[10]={0*10};

错误

5.如果有一个字符串,其中第十个字符为'\\n',则此字符串的 有效字符为9个。 错误

6.共同体变量所占的内存长度等于最长的成员的长度

正确

7.函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是5. 错误

8.#define 和printf 都不是C语句。 正确

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

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

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

-------------------------------------------------- 功能:编写函数fun计算下列分段函数的值: x^2+x+6 x<0且x≠-3

f(x)= x^2-5x+6 0≤x<10且x≠2及x≠3

int max(x,y) int x,y; { int z;

if(x>y) z=x; else z=y; return(z); }

A、18 B、27 C、72 D、45 D

25.char *s1=\则()。

A、s2指向不确定的内存单元 B、s1不能再指向其它单元 C、不能访问\、puts(s1);与puts(s2);结果相同 D

26.用户定义的函数不可以调用的函数是()。

A、本文件外的 B、main函数

C、本函数下面定义的 D、非整型返回值的 B

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

A、C语言可以不用编译就能被计算机识别执行 B、C语言出现的最晚,具有其他语言的一切优点 C、C语言比其他语言高级

D、C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D

28.已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是()。

A、语法错 B、0 C、1 D、\假\C

29.以下选项中正确的整型常量是

A、4/5 B、5 C、-10 D、1.000 C

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

错误

函数strlen(\的值是7。 错误

若有定义int c;则while(c=getchar());是正确的C语句。

正确

变量根据其作用域的范围可以分作局部变量和全局变量。

正确

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

错误

字符串常量是用一对双引号括起来的字符序列,所以\不是字符串.

错误

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

错误

C语言的switch语句中case后可为常量或表达式或有确定值的变量及表达式. 错误

char c[]=\是一个合法的为字符串数组赋值的语句。

错误

若有如下定义和语句 int k=10;while(k=0)k=k-1;则循环体一次也不执行。

正确

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

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

功能:求一批数中小于平均值的数的个数。

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

#include void bky();

int average_num(int a[],int n) {

/**********Begin**********/

/********** End **********/ } main() {

int n,a[100],i,num; scanf(\ for(i=0;i

printf(\ bky(); }

void bky() {

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<5;n++) {

fscanf(IN,\ }

o=average_num(i,5); fprintf(OUT,\ fclose(IN); fclose(OUT); }

【参考代码】 int i,sum=0,k=0; double average; for(i=0;ia[i]) k++; return(k); ============

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

-------------------------------------------------- 功能:判断一个整数w的各位数字平方之和能否被5整除, 可以被5整除则返回1,否则返回0。

------------------------------------------------*/ #include #include\void bky();

int fun(int w) {

/**********Begin**********/

/********** End **********/ }

main() { int m;

printf(\ scanf(\

printf(\ bky(); }

void bky() {

FILE *IN,*OUT; int c ; int t; int o;

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

printf(\ }

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

printf(\ } for(c=1;c<=5;c++) {

fscanf(IN,\ o=fun(t);

fprintf(OUT,\ }

fclose(IN); fclose(OUT); }

【参考代码】

int k,s=0; do

{s=s+(w)*(w); w=w/10; }while(w!=0); if(s%5==0)k=1; else k=0; return(k); ===============

/*------------------------------------------------------ 【程序改错】

-------------------------------------------------------- 功能:用起泡法对10个整数从小到大排序。

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

/**********ERROR**********/ void sort(int x,int n) {

int i,j,t;

for(i=0;i

/**********ERROR**********/ for(j=0;j

/**********ERROR**********/ if(x[i]>x[i+1]) {

t=x[j]; x[j]=x[j+1]; x[j+1]=t; } } main() {

int i,n,a[100];

printf(\ scanf(\ for(i=0;i

printf(\ for(i=0;i<=n-1;i++) printf(\ printf(\}

C、3 D、无确定值 C

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

A、++ B、, C、?: D、&&

A

7.定义共用体的关键字是

A、union B、typedef C、enum D、struct

A

8.a,b为整型变量,二者均不为0,以下关系表达式中恒成立的是()。

A、a*b/a*b==1 B、a/b*b+a%b==a C、a/b*b==a D、a/b*b/a==1

B

9.执行下列语句后的输出为()。 int j=-1;

if(j<=1) printf(\ else printf(\

A、%%%%c

B、有错,执行不正确 C、**** D、%%%%

C

10.有以下程序

main()

{

int i=1,j=1,k=2; if((j++||k++)&&i++)

printf(\\n\); }

执行后输出结果是

A、2,2,2 B、2,2,3 C、1,1,2 D、2,2,1

A

11.对两个数组a和b进行如下初始化:

char a[] = “ABCDEF”;

char b[] = {?A?,?B?,?C?,?D?,?E?,?F?}; 则以下叙述正确的是

A、a与b中都存放字符串 B、a数组比b数组长度长 C、a与b长度相同 D、a与b完全相同

B

12.下面叙述中错误的是

A、若函数的定义出现在主调函数之前,则可以不必再加说明 B、一般来说,函数的形参和实参的类型要一致 C、若一个函数没有return语句,则什么值也不会返回 D、函数的形式参数,在函数未被调用时就不被分配存储空间

C

13.C语言的注释定界符是()。

A、\\* *\\ B、{ } C、[ ] D、/* */

D

14.若x=2,y=3则x&y的结果是()。

A、3 B、0 C、5 D、2

D

14.与十进制数97不等值的字符常量是

A、?\\101? B、?\\x61 C、?\\141? D、?a?

A

15.以下选项中正确的实型常量是

A、0.03x102

B、32

C、3.1415

D、0

C

16.以下可作为函数fopen中第一个参数的正确格式是()。

A、c:\%user\\text.txt B、c:user\\text.txt C、\、\

C

17.以下选项中不合法的用户标识符是

A、Dim B、printf C、_123 D、A$

D

18.若有定义int a[10],*p=a;,则p+5表示

A、元素a[5]的地址 B、元素a[6]的地址 C、元素a[6]的值 D、元素a[5]的值

A

19.Turbo C中int类型变量所占字节数是

A、4 B、3 C、2 D、1

C

20.以下程序运行后的输出结果是 。

struct STU

{ char name[10];

int num; int score; };

main()

{ struct STU s[5] = {{“YangSan”, 20041,703}, {“LiSiGuo”,20042, 580}, {“WangYin”,20043,680},{“SunDan”, 20044, 550}, {“Penghua”,20045,537}}, *p[5], *t; int i, j;

for(i = 0; i < 5; i++) p[i] = &s[i];

for(i = 0; i < 4; i++)

for(j = i + 1; i < 5; j++)

if(p[i] ->score >p[j] ->score)

{ t = p[i]; p[i] = p[j]; p[j] = t; } printf(“%d %d\\n”, s[1].score, p[1] ->score);

}

A、580 680 B、680 680 C、580 550 D、550 580

C

21.以下四个程序中,不能对两个整型值进行交换的是

A、

B、

C、

D、

D

22. 以下合法的C语言赋值语句是

A、a=b=58 B、a=58,b=58 C、--I D、k=int(a+b)

C

23.以下不正确的定义语句是()。

A、double x[5]={2.0,4.0,6.0,8.0,10.0}; B、char c1[]={'1','2','3','4','5'}; C、char c2[]={'\\x10','\\xa','\\x8'}; D、int y[5]={0,1,3,5,7,9};

D

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

A、(类型) B、+ C、*= D、>=

A

25.下列选项中,合法的C语言关键字是()。

A、cher B、integer C、VAR D、default

D

26.下列选项中,合法的C语言关键字是()。

A、cher B、integer C、VAR D、default

D

如果有一个字符串,其中第十个字符为'\\n',则此字符串的 有效字符为9个。

错误

整数 -32100可以赋值给int型和long int型变量。

正确

若定义:int a=0,b=0; 则执行表达式(++a>0||++b>0)后,a 的值为1,b 的值为0,表达式的值为1。

正确

经过下述赋值int x=3;double y;y=(double)x;后,则x变量的数据类型为int。

正确

若有定义和语句:

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

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

正确

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

正确

x*=y+8 等价于 x=x*(y+8)。 正确

int max(a,b);是正确的函数调用语句.

错误

函数strlen(\的值是7。

错误

若有定义:int i=3,j;执行j=++i;后,i,j的值都为4。

正确

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

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

功能:对任意输入的 x,用下式计算并输出 y 的值。

-1 x<0 y= 0 x=0 1 x>0

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

#include

void bky();

int fun(int n) {

/**********Begin**********/

/********** End **********/ }

void main () {

int x,y;

printf(\ scanf(\ y=fun(x);

printf(\ bky(); }

void bky() {

FILE *IN,*OUT; int i; int iIN; long int iOUT;

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

printf(\ }

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

printf(\ }

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

fscanf(IN,\ iOUT=fun(iIN);

fprintf(OUT,\ }

fclose(IN); fclose(OUT); 【参考代码】 int m; if(n<0) m=-1; else

if(n==0) m=0; else m=1; return m; 或 int m; if(n>=0) if(n>0) m=1; else m=0; else m=-1; return m; ===============

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

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

功能:判断整数x是否是同构数。若是同构数,函数返回1; 否则返回0。x的值由主函数从键盘读入,要求不大 于100。

说明:所谓“同构数”是指这样的数,这个数出现在它的 平方数的右边。

例如:输入整数5,5的平方数是25,5是25中右侧的数,所 以5是同构数。

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

#include void bky();

int fun(int x) {

/**********Begin**********/

/********** End **********/ } main() {

int x,y;

printf(\ scanf(\ if(x>100) {

printf(\ exit(0); }

y=fun(x); if(y)

printf(\ else

printf(\ bky(); }

void bky() {

FILE *IN,*OUT; int n,t; int o;

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

printf(\ }

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

printf(\ }

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

fscanf(IN, \ o=fun(n);

fprintf(OUT, \ }

fclose(IN); fclose(OUT); }

【参考代码】 int k; k=x*x;

if((k==x)||(k0==x)) return 1; else return 0;

/*------------------------------------------------------ 【程序改错】

-------------------------------------------------------- 功能:判断m是否为素数,若是返回1,否则返回0。

------------------------------------------------------*/ main()

{

int m,k=0;

for(m=1;m<100;m++) if(fun(m)==1) {

printf(\

if(k%5==0) printf(\ } }

/**********ERROR**********/ void fun( int n) {

int i,k=1;

if(m<=1) k=0;

/**********ERROR**********/ for(i=1;i

/**********ERROR**********/ if(m%i=0) k=0;

/**********ERROR**********/ return m; }

【改错1】 【学生答案】void fun( int n)【参考答案】 int fun( int m) fun( int m)

============================================================ 【改错2】 【学生答案】for(i=1;i

for(i=2;m>i;i++) for(i=2;i<=m-1;i++) for(i=2;m-1=>i;i++)

============================================================ 【改错3】 【学生答案】if(m%i=0) k=0;【参考答案】 if(m%i==0) k=0;

============================================================ 【改错4】 【学生答案】return m;【参考答案】 return k;

============================================================

/*------------------------------------------------------ 【程序改错】

-------------------------------------------------------- 功能:已知一个数列从第0项开始的前三项分别为0、0、1,以 后的各项都是其相邻的前三项的和。下列给定程序中, 函数fun的功能是:计算并输出该数列的前n项的平方根 之和sum,n的值通过形参传入。

例如:当n=10时,程序的输出结果应为23.197745。

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

#include

/**********ERROR**********/ fun (int n)

{

double sum,s0,s1,s2,s; int k;

/**********ERROR**********/ sum=0.0;

if(n<=2) sum=0.0; s0=0.0;

s1=0.0;

/**********ERROR**********/ s2=0.0;

/**********ERROR**********/ for(k=4;k>n;k++) {

s=s0+s1+s2; sum+=sqrt(s);

s0=s1;s1=s2;s2=s; }

return sum; }

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

Top