c语言文件制作错题集,C语言错题集

指针

1.char *s=“C Language”;表示s是一个指向字符串的指针变量,把字符串的首地址赋予s。 (1分)

T

2.C 语言是一种具有某些低级语言特征的高级语言。 (1分)

T

3.文件指针用于指向文件,文件只有被打开后才有对应的文件指针。 (1分)

T

4.在C语言中,逗号既可以作为运算符,也可以作为分隔符。 (1分)

T

5.变量被定义后 , 它的作用域和寿命就被确定了 , 并且不可改变。 (1分)

T

6.字符串在内存中的起始地址称为字符串的指针,可以定义一个字符指针变量指向一个字符串。 (1分)

T

7.设变量定义为 int a[2]={1,3}, p=&a[0]+1;,则p的值是( )。(2分)

A.2

B.3

C.4

D.&a[0]+1

B

&a[0]+1是地址的增加

8.以下结构类型可用来构造链表的是()。 (2分)

A.struct aa{ int a;int * b;};

B.struct bb{ int a;bb * b;};

C.struct cc{ int * a;cc b;};

D.struct dd{ int * a;aa b;};

B

9.若有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方式是( )。 (2分)

p=max;

*p=max;

p=max(a,b);

*p=max(a,b);

A

在本题中,将函数的入口地址赋给指针后就可以用该指针调用函数了。

10.若有定义char str[]={“Python”, “SQL”, “JAVA”, “PHP”, “C++”}; 则表达式str[1] > *str[3]比较的是:(2分)

字符P和字符J

字符串SQL和字符串PHP

字符串Python和字符串JAVA

字符S和字符P

D

11.若用数组名作为函数调用时的实参,则实际上传递给形参的是( )。 (1分)

数组首地址

数组的第一个元素值

数组中全部元素的值

数组元素的个数

A

12.以下程序的输出结果是( )。 (2分)

int main(void)

{ int x[]={1,3,5,7,2,4,6,0}, i, j, k;

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

for (j=2; j>=i; j--)

if(x[j+1]>x[j]) {

k=x[j]; x[j]=x[j+1]; x[j+1]=k;

}

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

for(j=4; j<7-i; j++)

if(x[j+1]>x[j]){

k=x[j]; x[j]=x[j+1]; x[j+1]=k;

}

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

for(j=4; j<7-i; j++)

if(x[j]>x[j+1]){

k=x[j];x[j]=x[j+1];x[j+1]=k;

}

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

printf("%d",x[i]);

printf("\n");

return 0;

}

75310246

01234567

76310462

13570246

A

13.设变量已正确定义,以下()是合法的C语句。 (1分)

A.if ( n <= 10 );

B. switch ( k ) {

case 1: printf("one"); break;

case 2: printf("two"); break;

case 1: printf("one"); break;

default: printf("zero"); break;

}

C. switch ( k%2 ) {

default: printf("zero"); break;

case 1: printf("one");

case 1+1: printf("two");

}

D.n = 10;

switch ( k ) {

case n%3: printf("one");

case n%4: printf("two");

default: printf("zero");

}

A

14.关于C语言中的函数,下列说法正确的是 (2分)

A.函数应该以它们调用的顺序来定义。

B.return 语句可以出现在函数的任何地方。

C.函数定义可以在主函数前面也可以在主函数后面。

D.函数总是返回一个整型数据。

BC

A.不需要,只要在调用前声明过就好。

D.返回的数据与定义的类型有关

15.如果变量定义如下,则正确的语句是( )。 (1分)

int k, a[10];

A.a[-1] = -1;

B.a[0] = 23;

C.k = 3; a[k - 2] = a[9] + 1;

D.for(k = 1; k <= 10; k++){

printf(“%d ”, a[k]);

}

E.for(k = 0; k < 10; k++){

scanf(“%d ”, &a[k]);

}

BCE

16.下面函数用于求出两个整数之和,并通过形参传回两整数相加之和值。请填空。

void add(int x, int y, ______(4分) z) {

___________=x+y;

}

int*|int *

z| z

17.以下程序的输出结果是______

(2分)。

void swap(int *a, int *b)

{

int *t;

t=a; a=b; b=t;

}

Int main()

{

int i=2,j=5,*p=&i,*q=&j;

swap(p,q);

printf("%d %d\n",*p,*q)

}

2 5

文件流习题

1.随机操作只适用于文本文件。 (1分)

F

评测结果:答案错误(0 分)

解析:随机操作文本指的是用seek函数重新定位文件指针进行读写操作,访问数组中的元素也是随机的,知道下标就可以,所以说随机操作不只是针对于文件来讲。

2.文件的读函数是从输入文件中读取信息,并存放在内存中。(1分)

T

评测结果:答案错误(0 分)

3.c语言源程序是文本文件,目标文件和可执行文件是二进制文件。 (1分)

T

评测结果:答案错误(0 分)

4.文件指针指向文件缓冲区中文件数据的存取位置。 (1分)

F

评测结果:答案错误(0 分)

5.如果二进制文件a.dat已经存在,现在要求写入全新数据,应以()方式打开。 (2分)

“w”

“wb”

“w+”

“wb+”

评测结果:答案错误(0 分)

B

首先是dat(二进制)文件,必须带b。全新文件,不能有+号,故选B

6.定义FILE *fp; 则文件指针fp 指向的是()。(2分)

A.文件在磁盘上的读写位置

B.文件在缓冲区上的读写位置

C.整个磁盘文件

D.文件类型结构体

评测结果:答案错误(0 分)

C

7.按存储介质划分,文件可以分为: (2分)

A.记录文件和流式文件

B.普通文件和设备文件

C.文本文件和二进制文件

D.程序文件和数据文件

评测结果:答案错误(0 分)

B

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

A.一个整数变量,代表要读入的数据项总数

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

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

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

评测结果:答案错误(0 分)

C

[解析] 数据块输入/输出函数的调用形式为:fread(buffer,size,count,fp)。

fread函数参数说明:“buffer”是一个指引,对fread来说,它是读入数据的存放地址;“size”是要读写的字节数;“count”是要进行读写多少个size字节的数据项;“fp”是指文件型指针。

9.有一文本文件test.txt,其内容为"cprogram"(不包含引号),以下程序段的运行结果是()。 (2分)

FILE *fp;

char str[20];

if((fp=fopen(“test.txt”,“r”))!=NULL)

str=fgets(str,5,fp); printf("%s",str);

A.cpro

B.cprog

C.prog

D.cprogram

评测结果:答案错误(0 分)

A

调用fgets函数时,最多只能读入n-1个字符

10.只能向指定文件写入一个字符的函数是

答:fputc

11.fgets(s,n,fp);语句用来从fp所指示的文本文件中读取字符串s,该语句最多读取 __________

(1分) 个字符。

答:n-1

调用fgets函数时,最多只能读入n-1个字符

编程题

波那契数列

已知斐波那契数列定义:f(0) = 0; f(1) = 1; f(n) = f(n-1) + f(n-2); 那么你的任务是根据已知的n(n<30),求出f(n);

输入格式:

输出格式:

输入样例:

在这里给出一组输入。例如:

1

2

3

4

5

输出样例:

在这里给出相应的输出。例如:

1

1

2

3

5

代码

#include

int f( int n );

int main()

{

int n;

scanf("%d", &n);

printf("%d\n", f(n));

return 0;

}

int f( int n )

{

int fn;

if(n==0)fn=0;

else if(n==1)fn=1;

else if(n>=2)fn=(f(n-2)+f(n-1));

return fn;

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值