Bootstrap

c语言浮点数出错_20192020第二学期C语言练习题03 原创

一、单选题(共100题,50分)

1、若有定义int a[10],*p=a; 则表达式p+5表示()

A、 元素a[5]的地址

B、 元素a[6]的地址

C、 元素a[5]的值

D、 元素a[6]的值

正确答案:A

2、题号:8281若有定义:int aa[ 8];则以下表达式中不能代表数组元aa[1]的地址的是()。

A、 &aa[0]++

B、 aa+1

C、 &aa[0]+1

D、 &aa[1]

正确答案:A

3、现代计算机之父是(   ):

A、 阿兰·图灵

B、 冯·诺依曼

C、 莫言

D、 莱布尼兹

正确答案:B

4、能正确定义整型变量a和b,并为它们赋初值5的语句是(            )

A、 a=b=5;

B、 int a=5,b=5;

C、 int a=b=5;

D、 int a,b=5;

正确答案:B

5、题号:8282若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是()。

A、 *p=*q;

B、 n=*q;

C、 p=n;

D、 p=q;

正确答案:C

6、假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,
则数组x在内存中所占字节数是()。

A、 10

B、 3

C、 20

D、 6

正确答案:C

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

A、 递归

B、 转移

C、 嵌套

D、 循环

正确答案:D

8、有以下定义:

struct person { char name[10] ;  int age; } ;

struct person class[10]={ "John", 17, "Paul", 19, "Mary", 18, "Adam", 16 } ;

能输出字母M的语句是:()

A、 printf( "%c \n",class[2].name[0] ) ;

B、 printf( "%c \n",class[3].name[0] ) ;

C、 printf( "%c \n",class[3].name[1] ) ;

D、 printf( "%c \n",class[2].name[1] ) ;

正确答案:A

9、若用数组名作为函数调用的实参,则传递给形参的是 (     )

A、 数组的首地址

B、 数组第一个元素的值

C、 数组中全部元素的值

D、 数组元素的个数

正确答案:A

10、以下不正确的if语句形式是(   )。

A、 if(x!=y) scanf("%d",&x) else scanf("%d",&y);

B、 if(x

C、 if(x>y&&x!=y);

D、 if(x==y) x+=y;

正确答案:A

11、下列结构体的定义语句中,错误的是()

A、 struct ord{int x; int y; int z; }struct ord a;

B、 struct ord{int x; int y; int z; }; struct ord a;

C、 struct ord{int x; int y; int z; }a;

D、 struct {int x; int y; int z; }a;

正确答案:A

12、以下对宏替换的叙述不正确的是(   )

A、 宏名无类型,其参数也无类型

B、 宏替换只是字符的替换

C、 带参的宏替换在替换时,先求出实参表达式的值,然后代入形参运算求值

D、 宏替换不占运行时间

正确答案:C

13、
C语言的源程序通常的扩展名是(          )

A、 .cpp

B、 .c

C、 .obj

D、 .exe

正确答案:B

14、

有如下程序:有如下程序:

#include

void main()

char a,b,c,d;

scanf("%c,%c,%d,%d",&a,&b,&c,&d);

printf("%c, %c, %c, %c ",a,b,c,d);

}

     若运行时从键盘输入:6,5,65,66,则输出结果是(  )。

A、 6,5,A,B

B、 6,5,65,66

C、 6,5,6,5

D、 6,5,6,6

正确答案:A

15、以下程序运行时,输入的x值在(    )范围时才会有输出结果。

#include

void main()

{

  int x;

  scanf("%d",&x);

  if(x<5)

    ;

  else if(x!=20)

      printf("%d",x);

}

A、 大于等于5且不等于20的整数

B、 不等于20的整数

C、 小于5的整数

D、 大于等于5且等于20的整数

正确答案:A

16、若整型变量a=1,b=2,c=3,d=4,则表达式 a>b && c

A、 0

B、 1

C、 2

D、 -1

正确答案:A

17、以下程序的运行结果是()。
#include
void main()
{
int i=1,sum=0;
while(i<10)
{
sum=sum+1;
i++;
}
printf("i=%d,sum=%d"; i,sum);
}

A、 运行出现错误

B、 i=9,sum=9

C、 i=2,sum=1

D、 i=10,sum=9

正确答案:A

18、阅读下面的程序:

#include

void main()

   int swap();

   int a,b;

    a=3;b=10;

    swap(a,b);

    printf("a=%d,b=%d\n",a,b);

 }

swap(int a,int b)

{

   int temp;

   temp=a; a=b; b=temp; 

}

下面的说法中,正确的是(    )。

A、 在main()函数中调用swap()后,能使变量a和b的值交换

B、 在main()函数中输出的结果是:a=3,b=10

C、 .程序第2行的语句int swap();是对swap()函数进行调用

D、 swap()函数的类型是void

正确答案:B

19、若调用一个函数,且此函数中没有return语句,则正确的说法是:
该函数()。

A、 没有返回值

B、 返回若干个系统默认值

C、 返回一个不确定的值

D、 能返回一个用户所希望的值

正确答案:C

20、为了避免嵌套的条件分支语句if-else二义性,C语言规定,C程序中的else总是与(    )组成配对关系。

A、 缩排位置相同的if

B、 在其之前未配对的最近的if

C、 在其之前未配对的if

D、 同一行上的if

正确答案:B

21、
设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用(  )最节省时间。

A、 带尾指针的单循环链表

B、 单循环链表

C、 带头结点的双循环链表

D、 单链表

正确答案:C

22、设变量定义为int a[2]={ 1, 3 }, *p=&a[0]+1; 则表达式*p的值是( )。

A、 1

B、 2

C、 3

D、 &a[0]+1

正确答案:C

23、静态链表中的游标表示的是(  )。

A、 逻辑上下一个结点在数组中的下标

B、 内存地址

C、 数组下标

D、 逻辑上下一个结点的实际地址

正确答案:A

24、C语言中用于结构化程序设计的三种基本结构是()。

A、 for、while、do-while

B、 顺序结构、选择结构、循环结构

C、 if、switch、break

D、 if、for、continue

正确答案:B

25、在C语言中,为了结束由while语句构成的循环,while后一对圆括号
中表达式的值应该为()。

A、 1

B、 0

C、 True

D、 非0

正确答案:B

26、以下所列的C语言常量中,错误的是()。

A、 '\72'

B、 0xFF

C、 2L

D、 1.2e0.5

正确答案:D

27、题号:8284变量的指针,其含义是指该变量的()。

A、 名

B、 地址

C、 一个标志

D、 值

正确答案:B

28、

设有以下宏定义:

#define N 4

#define Y(N) ((N+1)+1)

    则执行语句:z=2*(N+Y(5+1)); 后,z的值为(    )。

A、 24

B、 出错

C、 60

D、 48

正确答案:A

29、下列程序的输出结果为(    )。
main()
{

    int m=7,n=4;
    float a=38.4,b=6.4,x;
    x=m/2+n*a/b+1/2;
    printf("%f\n",x);
}

A、 28.000000

B、 27.500000

C、 28.500000

D、 27.000000

正确答案:D

30、题号:4350具有相同类型的指针变量p与数组a,不能进行的操作是()。

A、 p=&a[0];

B、 p=a;

C、 p=&a;

D、 *p=a[0];

正确答案:C

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

A、 a=b=5;

B、 y=(a=3,6*5);

C、 a=1,b=2

D、 j=j+1;

正确答案:C

32、以下语法中正确的是(   )

A、 C语言程序中的main函数必须放在程序的开始部分

B、 C语言程序总是从main开始执行

C、 在C语言程序中,要调用的函数必须在main函数中定义

D、 C语言程序总是从第一个定义的函数开始执行

正确答案:B

33、若有定义如下:

typedef int * T;

T a[10];

则a的定义与下面哪个语句等价()?

A、 int  (*a)[10];

B、 int  *a[10];

C、 int  *a;

D、 int  a[10];

正确答案:B

34、以下选项中不属于C语言程序运算符的是:(   )

A、 <>

B、 sizeof

C、 ()

D、 &&

正确答案:A

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

A、 p=&a[j];

B、 p=a;

C、 p=10;

D、 p=&j,p=p1;

正确答案:C

36、能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是(   )

A、 a>=0 | a<=10

B、 a>=10 or a<=0

C、 a>=10 && a<=0

D、 a>=10 || a<=0

正确答案:D

37、若有double *p, x[10]; int i=5;使指针变量p指向元素x[5]的语句为()。

A、 p=x;

B、 p=x[i];

C、 p=&(x+i)

D、 p=&x[i];

正确答案:D

38、题号:1057
经过下列的语句 int j,a[10],*p;定义后,下列语句中合法的是()。

A、 p=a[5];

B、 p=&(j+2);

C、 p=a[2]+2;

D、 p=p+2;

正确答案:B

39、若k为int型变量,则以下程序段的执行结果是()。
k=8567; printf("|%6d|\n",k);

A、 输出为|%6D|

B、 输出为| 8567|

C、 格式描述符不合法,输出无定值

D、 输出为|8567 |

正确答案:B

40、int a[2][4]={1,2,3,4,5,6,7,8};

int (*p)[4]=a;

此时p的数据类型是()?

A、 int

B、 int *

C、 int *[4]

D、 int (*)[4]

正确答案:D

41、
下列属于C语言中合法标识符的是(          )

A、 ex-1

B、 _cook

C、 951a

D、 if

正确答案:B

42、已知字母a的ASCII值为97,则执行下列语句后的输出结果为(     )。
char a='a'; a--;
printf("%d,%c\n",a+'2'-'0',a+'3'-'0');

A、 b,c

B、 格式描述和输出项不匹配,输出无定值

C、 a--运算不合法,故有语法错

D、 98,c

正确答案:D

43、
两个指针p和q,分别指向单链表的两个结点,p是q的前驱结点的条件是(    )。

A、 p->next==q->next

B、 p->next==q

C、 q->next==p

D、 p==q

正确答案:B

44、题号:914若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为()。

A、 512

B、 511

C、 a的地址

D、 无确定值

正确答案:B

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

A、 a++

B、 &a

C、 p+2

D、 &a[5]

正确答案:C

46、假设c语言中int型数据类型占4个字节,经下列语句定义后,sizeof(x),
sizeof(y),sizeof(a),sizeof(b)在微机上的值分别为()。
char x=65;
float y=7.3;
int a=100;
double b=4.5;

A、 1,4,4,8

B、 2,2,2,4

C、 1,2,2,4

D、 2,4,2,8

正确答案:A

47、执行语句 for(i=1;i++<4;); 后变量 i 的值是()。

A、 不定

B、 3

C、 4

D、 5

正确答案:D

48、下列浮点数的形式表示错误的是(     )

A、 10.6

B、 12E2.0

C、 100000

D、 .5

正确答案:B

49、设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是()。

A、 p1=p2;

B、 c=*p1+*p2;

C、 c=*p1*(*p2);

D、 p2=c;

正确答案:D

50、下列关于指针定义的描述,___________是错误的

A、 指针变量的类型与它所指向的变量类型一致

B、 指针是一种变量,该变量用来存放某个变量的地址值的

C、 指针变量的命名规则与标识符相同

D、 指针是一种变量,该变量用来存放某个变量的值

正确答案:D

51、
C语言属于(          )

A、 机器语言

B、 汇编语言

C、 高级语言

D、 低级语言

正确答案:C

52、C语言中,while语句和do-while语句的主要区别是(    )

A、 do-while的循环体不能是复合语句

B、 do-while的循环体至少无条件执行一次

C、 while的循环控制条件比do-while的循环控制条件严格

D、 do-while允许从外部转到循环体内

正确答案:B

53、题号:8292对于基本类型相同的两个指针变量之间,不能进行的运算是()。

A、 +

B、 <

C、 =

D、 -

正确答案:A

54、

若a为实型变量,则以下程序段的输出结果是(         )。

a=2.389;

printf("%.2f",a);

A、 2.389

B、 0.38

C、 2.4

D、 2.39

正确答案:D

55、若定义int i;则以下循环语句的循环执行次数是(    )。

for(  i=2 ; i==0 ;  ) 

   printf("%d",i--);

A、 1

B、 2

C、 0

D、 无限次

正确答案:C

56、题号:8279若有int i=3,*p;p=&i;下列语句中输出结果为3的是()。

A、 printf("%d",*p);

B、 printf("%d",*i);

C、 printf("%d",p);

D、 printf("%d",&p);

正确答案:A

57、题号:8300若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5的语句为()。

A、 printf("%d",*(a+5));

B、 printf("%d",*(p+5));

C、 printf("%d",p[5]);

D、 printf("%d",*p[5]);

正确答案:D

58、若用fopen()函数打开一个新的二进制文件,该文件可以读也可以写,则文件的打开方式是(    )。

A、 "ab+"

B、 "wb+"

C、 "rb+"

D、 "ab"

正确答案:B

59、题号:6490若有说明:int *p,m=5,n;以下正确的程序段是()。

A、 scanf("%d",&n);*p=n;

B、 p=&n;*p=m;

C、 p=&n;scanf("%d",*p)

D、 p=&n;scanf("%d",&p);

正确答案:B

60、字符型指针变量中存入的是:()

A、 第一个字符

B、 字符串

C、 字符串的首地址

D、 字符串变量

正确答案:C

61、题号:2319下面判断正确的是()。

A、 char *a="china";等价于 char *a;*a="china";

B、 char str[10]={"china"};等价于char str[10];str[]={"china"};

C、 char c[4]="abc",d[4]="abc";等价于 char c[4]=d[4]="abc";

D、 char *s="china";等价于 char *s;s="china";

正确答案:D

62、题号:8291若有double *p,x[10];int i=5;使指针变量p指向元素x[5]的语句为()。

A、 p=x[i];

B、 p=x;

C、 p=&(x+i)

D、 p=&x[i];

正确答案:D

63、以下字符中不是转义字符的是()。

A、 '\c'

B、 '\b'

C、 '\\'

D、 '\t'

正确答案:A

64、下列说法正确的是()。

A、 在利用返回值方式传递数据时,可以省略数据类型说明符

B、 利用地址返回值方式传递数据时,返回值可以赋予普通变量

C、 在函数间通过全局变量的传递数据,只能用外部变量,不能用内部变量

D、 利用全局变量传递数据,可以简化程序,提倡使用

正确答案:C

65、下列说法不正确的是()。

A、 不同函数中,可以使用相同名字的变量

B、 在一个函数内部,可以在复合语句中定义变量,这些变量只在复合语句中有效

C、 形式参数是局部变量

D、 主函数main中定义的变量在整个文件或程序中有效

正确答案:D

66、在函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则()。

A、 称为函数的直接递归调用

B、 C语言中不允许这样的递归调用

C、 称为函数的循环调用

D、 称为函数的间接递归调用

正确答案:D

67、
链表不具有的特点是( )。

A、 插入、删除不需要移动元素

B、 可随机访问任意元素

C、 所需空间与链表长度成正比

D、 不必事先估计存储空间

正确答案:B

68、以下的选择中,正确的赋值语句是()。

A、 j++;

B、 a=1,b=2;

C、 a=b=5;

D、 y=int(x);

正确答案:C

69、在宏定义#define PI 3.1415926中,用宏名PI代替一个(    )。

A、 字符串

B、 单精度数

C、 双精度数常量

D、 常量

正确答案:A

70、题号:8311若有下列定义,能正确引用元素a[2]的是()。int a[5],*p=a;

A、 *p+2

B、 *(a+2)

C、 p+2

D、 a+2

正确答案:B

71、若有说明:int *p,m=5,n; 以下正确的程序段是()。

A、 p=&n;*p=m;

B、 p=&n;scanf("%d",*p)

C、 p=&n;scanf("%d",&p);

D、 scanf("%d",&n);*p=n;

正确答案:A

72、已知i、j、k为int型变量,若从键盘输入:1,2,3,使i的值为1、j的值为2、k的值为3,
以下选项中正确的输入语句是

A、 scanf("%d %d %d",&i,&j,&k);

B、 scanf("%d,%d,%d",&i,&j,&k);

C、 scanf("%2d%2d%2d",&i,&j,&k);

D、 scanf("i=%d,j=%d,k=%d",&i,&j,&k);

正确答案:B

73、下列合法的转义字符是(       )

A、 '\"'

B、 '\ee'

C、 '\018

D、 'xab'

正确答案:A

74、题号:8323char h,*s=&h;可将字符H通过指针存入变量h中的语句是()。

A、 *s='H';

B、 *s=H;

C、 s=H;

D、 s='H'

正确答案:A

75、可在C程序中用作标识符的一组标识符是(   )

A、 2c DO SiG

B、 void Define WORD

C、 as_b3 _123 If

D、 For -abc case

正确答案:C

76、
若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。

A、 顺序表

B、 双链表

C、 带头结点的双循环链表

D、 单循环链表

正确答案:A

77、int a[10]={1,2,3,4,5,6,7,8};
int *p=&a[0];
则p[3]的值是()。

A、 2

B、 3

C、 4

D、 不一定

正确答案:C

78、有如下枚举类型定义:

enum language { English=6, French,Chinese=1,Japanse,Italian};

则枚举量Italian的值为(    )。

A、 10

B、 3

C、 4

D、 5

正确答案:B

79、

下面程序的输出结果是(    )。

#include

void main()

{

 int x=10,y=3,z;

  printf("%d\n",z=(x%y,x/y));

   }

A、 4

B、 3

C、 1

D、 0

正确答案:B

80、在以下给出的表达式中,与 do--while(E)语句中的(E)不等价的
表达式是()。

A、 (!E==0)

B、 (E==0)

C、 (E>0||E<0)

D、 (E!=0)

正确答案:B

81、
以下叙述不正确的是(         )

A、 注释说明被计算机编译系统忽略

B、 注释说明必须跟在“//”之后不能换行或者括在“/*”和“*/”之间且注释符必须配对使用

C、 注释符“/”和“*”之间不能有空格

D、 在C程序中,注释说明只能位于一条语句的后面

正确答案:D

82、以下程序的输出结果是(    )。

#include

double f(int n)

   int i;

  double s=0;

  for(i=1;i<=n;i++)

        s+=1/i;

  return s;

}

int main()

   int i,m=3;

  float a=0.0;

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

    a=a+f(i);

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

   return 0;

}

A、 3.000000

B、 5.5000000

C、 4.000000

D、 8.25

正确答案:A

83、以下关于typedef的叙述不正确的是(    )。

A、 用typedef可以说明各种类型名,但不能用来定义变量

B、 用typedef可以增加新类型

C、 用typedef只是将已存在的类型用一个新的名称来代表

D、 用typedef便于程序的通用和移植

正确答案:B

84、
若变量x,y均定义为int型,z定义为double型,下列不合法的scanf语句是(        )

A、 scanf("%d%d%lf",&x,&y,&z);

B、 scanf("%d,%x,%lf",&x,&y,&z);

C、 scanf("%x,%o,%6.2f",&x,&y,&z);

D、  scanf("%x,%o",&x,&y);

正确答案:C

85、若有说明 int a[3][4];则a数组元素的非法引用是()。

A、 a[1][3]

B、 a[0][4]

C、 a[4-2][0]

D、 a[0][2*1]

正确答案:B

86、
以下可以实现“输入一个字符到变量ch”的语句是(            )。

A、 scanf("%c",ch);

B、 ch=getchar( );

C、 getchar(ch);

D、 getch();

正确答案:B

87、#include

int main( )

{       FILE *fp;

        fp=fopen("file1.txt","w");

        fprintf(fp,"abc");

        fclose(fp);

}

假设file1.txt中原有内容为:hello,则以上代码运行后,文件file1.txt中的内容是:________。

A、 helloabc

B、 abclo

C、 abc

D、 abchello

正确答案:C

88、函数调用:strcat(strcpy(str1,str2),str3)的功能是()。

A、 将串str2连接到串str1之后再将串str1复制到串str3中

B、 将串str1复制到串str2中后再连接到串str3之后

C、 将串str2复制到串str1中后再将串str3连接到串str1之后

D、 将串str1连接到串str2之后再复制到串str3之后

正确答案:C

89、若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是

A、 scanf(“%d%d%d”, &a,&b,&c);

B、 scanf(“%d%d%d”,a,b,c);

C、 read(a,b,c)

D、 scnaf(“%D%D%D”,&a,&b,&C);

正确答案:A

90、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。

A、 传递方式由用户指定

B、 地址传递

C、 由实参传给形参,再由形参传回实参

D、 单向值传递

正确答案:D

91、题号:1768char *s1="hello",*s2;s2=s1;则()。

A、 s2指向不确定的内存单元

B、 s1不能再指向其它单元

C、 不能访问"hello"

D、 puts(s1);与puts(s2);结果相同

正确答案:D

92、假设a、b均为字符数组,则以下正确的输入语句是(    )。

A、 gets("a");gets("b");

B、 gets(a,b);

C、 scanf("%s %s",&a,&b);

D、 scanf("%s %s",a,b);

正确答案:D

93、代码编制中,累乘器变量的初始值一般设置为(   )?

A、 0

B、 1

C、 2

D、 3

正确答案:B

94、题号:5467若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是()。

A、 n=*q;

B、 p=q;

C、 p=n;

D、 *p=*q;

正确答案:C

95、以下程序的输出结果是(    )。

#include

int func(int a,int b)

return(a+b);

}

int main()

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

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

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

  return 0;

}

A、 20

B、 31

C、 15

D、 21

正确答案:D

96、穷举法适用范围是(   )

A、 一切问题

B、 解的个数极多问题

C、 解的个数有限且可以列举

D、 不适合设计算法

正确答案:C

97、题号:5537有定义:char *p1,*p2;则下列表达式中正确合理的是

A、 p1/=5

B、 p1+=5

C、 p1=&p2

D、 p1*=p2

正确答案:B

98、若k,g均为int型变量,则下列语句的输出为()。
k=017; g=111;
printf("%d\t",k);
printf("%x\n",g);

A、 16 70

B、 15 71

C、 15 6f

D、 16 6f

正确答案:C

99、题号:8307char *s1="hello",*s2;s2=s1;则()。

A、 s2指向不确定的内存单元

B、 puts(s1);与puts(s2);结果相同

C、 s1不能再指向其它单元

D、 不能访问"hello"

正确答案:B

100、若整型变量a=3;b=2;c=1; 则表达式a>b>c的结果是(     )。

A、 0

B、 1

C、 2

D、 3

正确答案:A

二、多选题(共5题,10分)

1、设有以下程序段

struct book

{   float price;

     char language;

     char title[20];

} rec, *ptr;

ptr=&rec;

现要求输入字符串给结构体变量rec的title成员,下列正确的输入语句有:()

A、 scanf( "%s",ptr.title );

B、 scanf( "%s",rec.title );

C、 scanf( "%s",(*ptr).title );

D、 scanf( "%s",ptr->title );

正确答案:BCD

2、下列函数,可以用来向计算机外部设备输出单个字符的有?

A、 getchar()

B、 putchar()

C、 scanf

D、 printf

正确答案:BD

3、C语言源程序中的注释标志有(   )?

A、 //

B、 /

C、 /*       */

D、 //*    *//

正确答案:AC

4、C语言中的浮点型数据类型有(   )?

A、 float

B、 double

C、 long

D、 char

正确答案:AB

5、下列哪些文件的使用方式可以对已经存在的二进制文件进行“读和写”的双向操作()?

A、 ab

B、 rb+

C、 wb+

D、 ab+

正确答案:BCD

三、填空题(共20题,20分)

1、使用fputc函数从“程序数据区”向 "磁盘文件缓冲区" 输出一个字符时,则该磁盘文件的使用方式必须是_________。(填r或w)

正确答案:第1空:

w

2、采用普通的基本数据类型定义的变量只能存放1个数据,而采用______类型定义的变量允许我们存放多个性质不同的数据。

正确答案:第1空:

结构体

3、需要根据某个条件是否成立来决定是否执行指定的操作和任务,我们称这种结构为________结构?

正确答案:第1空:

选择;选择结构

4、C语言编译器是在内存的______区中进行动态内存分配的。

正确答案:第1空:

5、如果文件尾标志EOF已被读出,此时feof函数的值是:______。

正确答案:第1空:

真;1

6、C语言库函数_______是用来在内存的动态存储区中分配n个长度为size字节的连续空间的。(填函数名)

正确答案:第1空:

calloc

7、函数中的非静态局部变量都是存储在内存的_______区中的。

正确答案:第1空:

8、C语言编译器一般采用“__________”处理数据文件内容的。

正确答案:第1空:

缓冲文件系统;文件缓冲系统;文件缓冲区;缓冲;文件缓冲

9、int a[5]={1,2,3,4,5},*p=a;

则表达式*p的值是_____。

正确答案:第1空:

1

10、struct student

{     int num;

      float score;

      struct student *next;

}a={10101,89.5}, b={10103,90}, c={10107,85};

a.next=&b;  b.next=&c;  c.next=NULL;

struct student *head=&a, *p=NULL;

_____________;

p=head;

do 

{  printf("%d,%5.2f\n",p->num,p->score); 

    p=(*p).next;

}while(p!=NULL); 

上述代码功能是:去掉当前链表中的第1个结点即a结点,重新组建一个链表,则横线上应该填上?

正确答案:第1空:

head=head->next;head=(*head).next

11、字符数组中的字符串结束标志是1个字符,即字符 '______' 。

正确答案:第1空:

\0

12、int a=3,b=4;

则逻辑表达式a&&b的值是(   )?

正确答案:第1空:

1

13、C语言库函数_______是用来在内存的动态存储区中分配一个长度为size字节的连续空间的。(填函数名)

正确答案:第1空:

malloc

14、C语言中,我们利用______函数,将磁盘文件中的数据以二进制形式读入到程序数据区。

正确答案:第1空:

fread

15、union

{ struct {int x,y,z;}u;

  int k;

}a;

a.u.x=4;

a.k=123;

printf("%d",a.u.x);

上述程序的输出结果是:______。

正确答案:第1空:

123

16、max函数原型是:int max(int,int);

已知p已经指向该函数;则通过函数指针变量p调用max函数的表达式是________。(假设实参是3和4)

正确答案:第1空:

(*p)(3,4)

17、单向的静态链表或动态链表中的结点成员一般由2个部分组成:数据域和_______。

正确答案:第1空:

指针域

18、如下程序的功能是通过递归函数Fib()求斐波那契数列的第n项。斐波那契数列为1,1,2,3,5,8,13,…公式如下图,在横线上填入正确的代码。

#include

int main()

{

       int n;

       long Fib(int n);

       do

       {    

              printf("please input n:");

              scanf("%d",&n);

       }while(n<=0);

       printf("fib(%d)=%ld",n,             );

       return 0;

}

long Fib(int n)

{

       if(n==1 ||              )

              return 1;

       else

              return Fib(n-1)+Fib(          );

}

正确答案:第1空:

Fib(n)

第2空:

n==2

第3空:

n-2

19、struct student

{    char name[10];

     int num;

     int age;

     char address[15];

}a;

上述构造的结构体数据类型变量a所占的内存字节数是______。

正确答案:第1空:

36

20、操作系统是以_______为单位对计算机中的所有数据进行管理的。

正确答案:第1空:

文件

四、判断题(共40题,20分)

1、int a[2][4]={1,2,3,4,5,6,7,8};

int *p[2];

此时p是一个包含2个指向普通数组元素的数组名称。

正确答案:正确

2、8E2是不合法的整型常量。(  )

正确答案:正确

3、

以下程序的输出结果是15。

#define T(x,y) (x)

void main()

int i=10,j=15,k;

  k=10*T(i,j);

  printf("%d",k);

}

正确答案:正确

4、C语言是面向对象的高级程序设计语言。()

正确答案:错误

5、若有int x=8,y=5,z;则执行语句“z=x/y+0.4”后,z的值为1。(   )

正确答案:正确

6、假设结构体类型是struct student, p1,p2,p3为3个该类型的指针变量,则p1,p2,p3都可以同时指向struct student类型声明的同一个变量。()

正确答案:正确

7、FILE * fp;

fp=fopen("C:\a.doc",w);

上述2行代码中的第2行代码存在明显的语法错误。

正确答案:正确

8、int a[6]={6,5,4,3,2,1},b[2][3]={1,2,3,4,5,6},*p1,*p2;

可以让p1去指向数组a中的元素a[5],也可以让p2去指向数组b中的元素b[1][2]。

正确答案:正确

9、在定义或构造一个枚举数据类型时,也可以同时声明1个或多个枚举变量。

正确答案:正确

10、采用结构体数据类型声明的2个变量可以直接相互赋值。()

正确答案:正确

11、ASCII文件中的数据是以“字符形式”存放的,每个ASCII字符对应了一个唯一的ASCII编码。()

正确答案:正确

12、C语言中,标准的输出文件是“显示器”,标准的输入文件是“键盘”。()

正确答案:正确

13、语句 (a

正确答案:错误

14、建立链表的前提是:构建一个含有指针变量的结构体数据类型。()

正确答案:正确

15、int i,*p;

p=(int *)malloc(5*sizeof(int));    

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

 printf("%p\n",*p+i);

以上代码可以打印出申请到的5个整型内存空间的20个连续字节的地址。

正确答案:正确

16、用结构体变量作函数实参的时候,形参也必须是同类型的结构体变量,实参向传递的是“实参变量的所有内存单元的内容”。

正确答案:正确

17、对于双向的静态链表或动态链表中的结点,其指针域一般要有2个:一个是前驱结点指针、一个是后驱结点指针。()

正确答案:正确

18、fgets函数的功能是:将“磁盘文件缓冲区“中的字符串数据读入到“程序数据区”的。()

正确答案:正确

19、下面程序段循环一次也不执行。()

int x=10; 

while(x==0) 

   x=x-1;

正确答案:正确

20、指针变量是一种特殊的变量,只能用来存储地址,它在内存中不占用存储空间。()

正确答案:错误

21、已定义了一个指针变量p1并指向普通变量num1,假设已知num1的内存地址是2008,则可以将2008直接赋值给p1。()

正确答案:错误

22、int a[10],*p;

p=&a[2];

上述2行代码的作用是:让指针变量p去指向数组的第3个元素。()

正确答案:正确

23、函数名代表该函数代码段所占内存空间的入口地址。

正确答案:正确

24、
数组比链表的插入与删除运算更方便。

正确答案:错误

25、
数组适合于随机存储,而链表不适合。

正确答案:正确

26、函数指针变量不仅可以指向函数的入口处,也可以指向函数中间的某一条指令处。

正确答案:错误

27、
中的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。

正确答案:错误

28、当数据是从文件流向计算机内存或主机时,我们把这样的操作叫做“输入”。()

正确答案:正确

29、
“#define”和“printf”都不是C语句。

正确答案:正确

30、在使用"a"方式打开某个文本文件时,该文本文件事先必须在磁盘中存在。()

正确答案:正确

31、在使用"a+"方式打开某个文本文件时,该文本文件事先必须在磁盘中存在。()

正确答案:正确

32、共用体变量中起作用的成员是最后一次被赋值的成员。()

正确答案:正确

33、C语句为:scanf(“%d%d%d”,&a,&b,&c); 该语句可以给3个整型变量a、b、c赋值。

正确答案:正确

34、
已知带头结点的双向循环链表L,判断其为空表的条件是L->next==L && L->prior==L。

正确答案:正确

35、条件运算符是C语言中唯一的一个三目运算符(    )。

正确答案:正确

36、rewind和fseek两个函数都可以让文件标记回到文件的开头。()

正确答案:正确

37、函数的返回值类型可以是整型、字符型、指针等;也可以是结构体数据类型。()

正确答案:正确

38、使用C语句scanf("%c,%c,%c",&c1,&c2,&c3);给3个字符型变量依次赋值为'a'、'b'、'c',正确的输入格式是a,b,c。

正确答案:正确

39、随机读写方式访问磁盘文件时,文件位置标记可以随意移动。()

正确答案:正确

40、假设已构造好struct student数据类型;

则函数头void fun ( struct student stu[ ] )完全等价于void fun ( struct student *stu )

正确答案:正确

ed08d160d63c1a4bc3ae76650d0cd0d0.png

更多精彩内容敬请关注微信公众号:

科文计算机


精彩内容导读:

  1. 科文2017级计算机基础-选择题复习题

  2. 2017级Visual Basic 程序设计-A 单选题练习

  3. 计算机基础知识1

  4. 计算机概述

  5. 数制转换

  6. VB实验1

  7. VB实验2

  8. VB实验3

  9. VB实验4

  10. VB实验5

  11. VB实验6

  12. VB实验7

  13. VB实验8

  14. 2019-2020-2计算机基础期末练习

  15. 2019-2020第二学期C语言练习1

  16. 2019-2020第二学期C语言练习2

;