C语言期末第一弹

Posted 苏师19大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言期末第一弹相关的知识,希望对你有一定的参考价值。



选择题


1

结构体类型的定义允许嵌套是指_______。

A.定义多个结构体型

C.结构体型可以派生

B.成员可以重名

D.持续稳定

点击空白处查看答案

D

2

使用共用体变量,不可以_______。

A.同时访问所有成员

C.简化程序设计

B.进行动态管理

D.节省存储空间

点击空白处查看答案

A

3

函数 rewind 的作用是_______。

A.将位置指针指向文件中所要求的特定位置

C.使位置指针重新返回文件的开头

B.使位置指针自动移至下一个字符位置

D.使位置指针指向文件的末尾

点击空白处查看答案

C

4

fwrite函数的一般调用形式是_______。

A.fwrite(buffer,count,size,fp);

C.fwrite(buffer,size,count.fp);

B.fwrite(fp,countsize,buffer);

D.fwrite(fp,size,countbuffer);

点击空白处查看答案

C

5

下列运算符中,不属于关系运算符的是_____。

A.>=

C.>

B.!

D.<

点击空白处查看答案

B

!表示“非”,为逻辑运算符

6

若给定条件表达式(M)?(a++):(a--),则其中表达式M_______。

A.和(M!=1)等价

C.和(M!=0)等价

B.和(M==1)等价

D.和(M==0)等价

点击空白处查看答案

C

由题干中表达式知,若M不等于0,则表达式为真

7

以下叙述中正确的是_______。

A.在以下定义中C R是称为“宏名”的标识符

#defineC R 045

C.宏替换不占用运行时间,只占编译时间

B.在程序的一行上可以出现多个有效的预处理命令行

D.使用带参的宏时,参数的类型应与宏定义时的一致

点击空白处查看答案

C

8

执行下列语句后,a和b的值分别为_______。
int a,b;
a=1+'a'; 

b=2+7%-4-'A';

A.-63,-64

C.98,-60

B.79,78

D.1,-60

点击空白处查看答案

C

字符a的ASCII是97,a=97+1

字符A的ASCII是65,7%(-4)=3,b=3+2-65=-60

9

以下不符合C语言语法的赋值语句是_______。

A.k=2*4,k*4;

C.y=float(j);

B.j++;

D.j=j=5;

点击空白处查看答案

C

应该为y=(float)j

10

经过以下语句定义后,表达式z+=x>y?++x:++y的值为_______。

 int x=1,y=2,z=3;

A.6

C.2

B.3

D.5

点击空白处查看答案

A

x>y为假,输出++y=3
z=z+y=3+3=6

11

以下叙述不正确的是_______。

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


C.一个C源程序可由一个或多个函数组成

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

D.一个C源程序必须包含一个main函数

点击空白处查看答案

B

12

下列运算符中是C语言关系运算符的是_______。

A.!

C.!=

B.&

D.~

点击空白处查看答案

C

!为逻辑运算符

&、~为位运算符

13

若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,
以下不正确的输入形式是_______。

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

A.10.0,22.0,33.0


C.10 22

    30

B.10.0

   22.0 33.0

D.10

    22

    30

点击空白处查看答案

A

14

下列语句的结果是_______。

main()
{ int j;
   j=3;
printf("%d,",++j);
printf("%d",j++);}

A.3,4

C.4,3

B.4,4

D.3,3

点击空白处查看答案

B

j++为先计算,再自加

++j是先自加,再计算

15

若变量已正确说明,要求用以下语句给c1赋予字符%、给c2赋予字符#、给a赋予2.0、给b赋予4.0,则正确的输入形式是_______。

scanf("%f%c%f%c", &a, &c1, &b, &c2);

A.2.0%4.0#

C.2.0 % 4.0 #

B.2% 4#

D.2 % 4 #

点击空白处查看答案

A

空格也会被%c接收

16

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

main()
 {  int  x = 10,  y = 3;
    printf(“%d\n” , y = x / y);   }

A.不确定的值

C.1

B.0

D.3

点击空白处查看答案

D

17

已有语句double x;scanf("%lf",&x);

则不可以赋值给x变量的常量是_______。

A.100000

C.5.8

B.123

D."abc"

点击空白处查看答案

D

%lf:双精度浮点型数据

18

有以下程序
main()
 {  int a=5, b=4, c=3, d=2;
if(a>b>c)
printf("%d\n",d);
else if((c-1 >= d) == 1)
printf("%d\n",d+1);
else  printf("%d\n",d+2);  }
执行后输出结果是_______。

A.2

C.编译时出错

B.4

D.3

点击空白处查看答案

D

a>b为真 输出1,1>c为假
c-1>=d为真 1==1为真
输出d+1=3 

19

选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达式,但其值只能被判断为"真"或"假"。那么下面哪个数作为逻辑"假"值_______。

A.非零的数

C.-1

B.1

D.0

点击空白处查看答案

D

20

为表示关系x≥y≥z,应使用的表达式是_______。

A.(x>=y)&&(y>=z)

C.(x>=y)AND(y>=z)

B.(x>=y>=z)

D.(x>=y)&(y>=z)

点击空白处查看答案

A

21

在C语言中,if语句后的一对原括号中,用以决定分支的流程的表达式_______。

A.只能用关系表达式

C.只能用逻辑表达式或关系表达式

B.只能用逻辑表达式

D.可用任意表达式


点击空白处查看答案

D

22

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

A.(E==0)

C.(!E==0)

B.(E>0||E<0)

D.(E!=0)

点击空白处查看答案

A

题干中E=0为假

23

以下程序段的输出结果是_______。

int n=10;
while(n>7)
{  n--;  printf("%d", n ); }

A.1098

C.987

B.10987

D.9876

点击空白处查看答案

C

24

有以下程序段
int n=0,p;
do  { scanf("%d",&p);  n++;  }
while(p!=12345&&n<3);

此处do-while循环的结束条件是_______。

A.p的值等于12345并且n的值大于等于3

C.p的值不等于12345或者n的值小于3

B.p的值不等于12345并且n的值小于3

D.p的值等于12345或者n的值大于等于3

点击空白处查看答案

D

25

以下程序段的输出结果为_______。

char c[]="abc"; int  i=0;
do ;  while(c[i++]!='\0');printf("%d",i-1);

A.ab

C.abc

B.3

D.2

点击空白处查看答案

B

26

在C语言中,一维数组的定义方式为:

类型说明符  数组名_______。

A.[整型常量]和[常量表达式]

C.[常量表达式]

B.[整型常量]或[整型表达式]

D.[整型表达式]

点击空白处查看答案

A

27

若想将一个字符数组a的内容存入另一个字符数组b中,下列正确的是_______。

A.strcat(b,a)

C.strcpy(b,a)

B.b=a

D.strcpy(a,b)

点击空白处查看答案

C

strcat为连接函数

28

若有说明int a[3][4]={0};

则下面正确的叙述是_______。

A.数组a中每个元素均可得到初值0

C.此说明语句不正确


B.只有元素a[0][0]可得到初值0

D.数组a中各元素都可得到初值,但其值不一定为0

点击空白处查看答案

A

29

以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是_______。

A.char s[10];

strcpy(s,"abcdefg");

C.char t[]="abcdefg",

*s=t;

B.char s[10]="abcdefg";


D.char s[10];

s="abcdefg";

点击空白处查看答案

D

30

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

main()
{ int i,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)   printf("%d,", x[i][2-i]);}

A.1,5,9,

C.1,4,7,

B.3,6,9,

D.3,5,7,

点击空白处查看答案

D

在草稿纸上列出数组即可

31

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

A.单向值传递


B.由实参传给形参,再由形参传回实参

D.传递方式由用户指定

点击空白处查看答案

A

32

以下不正确的说法是:C语言规定_______。

A.实参可以为任何类型


C.形参应与其对应的实参类型一致

B.形参可以是常量变量或表达式

D.实参可以是常量变量或表达式

点击空白处查看答案

B

33

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

main()
{   int  k=4,m=1, p;
p=func(k, m);   printf("%d,", p );
p=func(k, m);  printf("%d\n", p );  }
 func( int  a,  int  b)
{   static  int  m=0,i=2;
i+=m+1;  m=i+a+b;return (m); }

A.8,20

C.8,8

B.8,17

D.8,16

点击空白处查看答案

B

i+=m+1=3 m=i+a+b=8
(m和i
是静态变量,还是上次退出时的值
i+=m+1=12 m=i+a+b=17 

34

下列程序运行结果为_______。

#define  P  3
#define  S(a) P*a*a
main()
{int  ar;  ar=S(3+5);printf("\n%d",ar);  }

A.192

C.29

B.25

D.27

点击空白处查看答案

C

ar=3*3+5*3+5

35

以下说法不正确的是_______。

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

C.形式参数是局部变量


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


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

点击空白处查看答案

B

36

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

main()
{  int  a[]= {2, 4, 6, 8}, *p=a, i;
 for(i=0; i<4; i++)  a[i] = *p++;printf("%d\n", a[2]); }

A.4

C.2

B.8

D.6

点击空白处查看答案

D

37

若有以下说明和定义,则对fun函数的正确调用语句是_______。

 main()
{   int  (*a)(int),  *b(),  w[10],  c;  …}fun(int *c )  {  …  }

A.a=fun;(*a)(c);

C.fun(b);

B.b=fun; *b(w);

D.a=fun;(*a)(w);

点击空白处查看答案

D

38

下面判断正确的是_______。

A.char *s="china";

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


C.char *a="china";

等价于

char *a;

*a="china"

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

D.char c[4]="abc",

d[4]="abc";

等价于

char c[4]=d[4]="abc"

点击空白处查看答案

A

39

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

A.p=x

C.p=&(x+i)

B.p=x[i]

D.p=&x[i]

点击空白处查看答案

D

40

若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5的语句为_______。

A.printf("%d",*p[5])

C.printf("%d",*(p+5))

B.printf("%d",p[5])

D.printf("%d",*(a+5))

点击空白处查看答案

A



程序设计




01

功能:将字符串中的大写字母转换为对应的小写字母,其它字符不变。

#include "stdio.h"
void change(char str[])
{
  /*********Begin**********/



  /**********  End  **********/
}
#include "string.h"
int main()
{
  void change();
  char str[40];
  gets(str);
  change(str);
  puts(str);
}

点击空白处查看答案


【参考代码】
    int i;
    for(i=0;str[i]!='\0';i++)
    if(str[i]>='A' && str[i]<='Z')
    str[i]=str[i]+32;



程序改错




01

功能:根据整型形参n,计算某一数据项的值。
      A[1]=1, A[2]=1/(1 + A[1]), A[3]=1/(1 + A[2]), …,A[n]=1/(1 + A[n-1])
例如:若 n=10,则应输出:a10=0.617977。

#include "conio.h"
#include "stdio.h"
/**********ERROR**********/
int fun ( int n )
{
  float A=1; int i;
  /**********ERROR**********/
  for (i=2; i<n; i++)
  /**********ERROR**********/
  A = 1.0\(1+A);
  return A ;
}
int main()
{
  int n ;
  printf("\nPlease enter n: ") ;
  scanf("%d", &n ) ;
  printf("A%d=%f\n", n, fun(n) ) ;
}

点击空白处查看答案


【改错1】
【参考答案】
float fun(int n)
double fun(int n)

【改错2】
【参考答案】
for (i=2; i<=n; i++)
for (i=2; i<n+1; i++)

【改错3】
【参考答案】
A = 1.0/(1+A);
A=1.0/(A+1);
A=1.0/(1.0+A);




程序填空




01

功能:产生并输出如下形式的方阵。
1 2 2 2 2 2 1
3 1 2 2 2 1 4
3 3 1 2 1 4 4
3 3 3 1 4 4 4
3 3 1 5 1 4 4
3 1 5 5 5 1 4
1 5 5 5 5 5 1

#include <stdio.h>
int main()
{
 int a[7][7];
 int i,j;
 for (i=0;i<7;i++)
   for (j=0;j<7;j++)
     {
/**********FILL**********/
      if (i==j_____i+j==6) a[i][j]=1;
/**********FILL**********/
      else if (i<j&&i+j<6) a[i][j]=_____;
      else if (i>j&&i+j<6) a[i][j]=3;
      else if (i<j&&i+j>6) a[i][j]=4;
      else a[i][j]=5;
      }
   for (i=0;i<7;i++)
     {
     for (j=0;j<7;j++)
     printf("%4d",a[i][j]);
/**********FILL**********/
    putchar(_____);
     }
}

点击空白处查看答案

【空 1 】 
【参考答案】
||

【空 2 】
【参考答案】
2

【空 3 】
【参考答案】
'\n'


以上是关于C语言期末第一弹的主要内容,如果未能解决你的问题,请参考以下文章

C语言嵌入式项目中一些常用知识及技巧:第一弹

C语言小游戏第一弹~关机搞怪小程序

开发工具的安装与使用(第一弹)

Object Oriented个人总结第一弹

Python基础学习——第一弹

C语言计算机二级/C语言期末考试 刷题