起名
男孩起名 女孩起名 公司起名 店铺起名 牛年起名 虎年起名 生辰八字起名 英文起名 诗词起名
励志
励志文章 励志故事 励志文案 励志电影 励志名言 励志句子 励志歌曲 励志签名 励志格言 高考励志 励志诗句 励志网名 励志书籍 励志演讲稿 励志小说 励志座右铭 励志人物 励志对联 励志说说 励志作文
句子
伤感的句子 唯美的句子 爱情的句子 优美句子 正能量句子 经典句子 表白的句子 哲理句子 友情的句子 好词好句好段 美好的句子 朋友圈说说的好句子 搞笑的句子 想你的句子
个性签名
微信个性签名 QQ个性签名 伤感个性签名 霸气的个性签名 情侣个性签名 男生个性签名 女生个性签名 英文个性签名 超拽个性签名 非主流个性签名 搞笑个性签名 火星文个性签名 唯美个性签名
十二星座
白羊座 金牛座 双子座 巨蟹座 狮子座 处女座 天秤座 天蝎座 射手座 摩羯座 水瓶座 双鱼座 星座知识
十二生肖
属鼠 属牛 属虎 属兔 属龙 属蛇 属马 属羊 属猴 属鸡 属狗 属猪 生肖基础知识
祝福语大全
生日祝福语 结婚祝福语 订婚祝福语 新年祝福语 情人节祝福语 母亲节祝福语 父亲节祝福语 建党节祝福语 七夕节祝福语 教师节祝福语 国庆节祝福语 中秋节祝福语 爱情祝福语 毕业祝福语 开业祝福语 升学祝福语 高考祝福语 中考祝福语 考试祝福语 搬新家祝福语
说说大全
个性说说 伤感说说 搞笑说说 心情说说 爱情说说 经典说说 qq说说 朋友圈说说 情感说说 晚安说说 下雨说说 霸气说说 七夕说说
范文大全
入党申请书 入团申请书 自我鉴定 工作总结 工作计划 个人简历 辞职报告 检讨书 演讲稿 心得体会 实习报告 转正申请书 导游词 述职报告 策划书 加油稿 慰问信 感谢信 介绍信 邀请函

二级c语言真题 二级c语言题库

更新时间:2023-01-21 来源:互联网 点击:

  (11)以下叙述中正确的是

  A)在C语言程序中,main 函数必须放在其他函数的最前面

  B)每个后缀为.C的C语言源程序都可以单独进行编译

  C)在C语言程序中,只有main 函数才可单独进行编译

  D)每个后缀为.C的C语言源程序都应该包含一个main函数

  (12)C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是

  A)预定义标识符(如库函数中的函数名)可用作用户标识符,但失去原有含义

  B)用户标识符可以由字母和数字任意顺序组成

  C)在标识符中大写字母和小写字母被认为是相同的字符

  D)关键字可用作用户标识符,但失去原有含义

  (13)以下选项中表示一个合法的常量是(说明:符号□表示空格)

  A)9□9□9

  B)0Xab

  C)123E0.2

  D)2.7e

  (14)C语言主要是借助以下哪个功能来实现程序模块化

  A)定义函数

  B)定义常量和外部变量

  C)三种基本结构语句

  D)丰富的数据类型

  (15)以下叙述中错误的是

  A)非零的数值型常量有正值和负值的区分

  B)常量是在程序运行过程中值不能被改变的量

  C)定义符号常量必须用类型名来设定常量的类型

  D)用符号名表示的常量叫符号常量

  (16)若有定义和语句:int a,b; scanf(%d,%d,a,b); 以下选项中的输入数据,不能把值3 赋给变量a、5 赋给变量b 的是

  A)3,5,

  B)3,5,4

  C)3 ,5

  D)3,5

  (17)C语言中char 类型数据占字节数为

  A)3

  B)4

  C)1

  D)2

  (18)下列关系表达式中,结果为假的是

  A)(3+4):6

  B)(3!=4):2

  C)3=4||3

  D)(34)==1

  (19)若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch 语句是

  A)switch(a+9)

  { case c1:y=a-b;

  case c1:y=a+b;

  }

  B)switch a*b

  { case 10:x=a+b;

  default :y=a-b;

  }

  C)switch(a+b)

  { case1 : case3:y=a+b;break;

  case0 : case4:y=a-b;

  }

  D)switch (a*b+b*b)

  { default :break;

  case 3:y=a+b; break;

  } case 2:y=a-b; break;

  }

  (20)有以下程序

   include

  main()

  {

  int a=-2,b=0;

  while(a++++b);

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

  }

  程序运行后的输出结果是

  A)1,3

  B)0,2

  C)0,3

  D)1,2

  (21)设有定义:int x=0,*p;,立即执行以下语句,正确的语句是

  A)p=x;

  B)*p=x;

  C)p=NULL;

  D)*p=NULL;

  (22)下列叙述中正确的是

  A)可以用关系运算符比较字符串的大小

  B)空字符串不占用内存,其内存空间大小是0

  C)两个连续的单引号是合法的字符常量

  D)两个连续的双引号是合法的字符串常量

  (23)有以下程序

  include

  main()

  {

  char a='H';

  a=(a:='A'a='Z')?(a-'A'+'a'):a;

  printf(%c ,a);

  }

  程序运行后的输出结果是

  A)A

  B)a

  C)H

  D)h

  (24)有以下程序

  include

  int f(int x);

  main()

  { int a,b=0;

  for(a=0;a3;a++)

  {b=b+f(a);putchar('A'+b);

  }

  }

  int f(int x)

  {return x*x+1;}

  程序运行后的输出结果是

  A)ABE

  B)BDI

  C)BCF

  D)BCD

  (25)设有定义:int x[2][3];,则以下关于二维数组x 的叙述错误的是

  A)x[0]可看作是由3 个整型元素组成的一维数组

  B)x[0]和x[1]是数组名,分别代表不同的地址常量

  C)数组x 包含6 个元素

  D)可以用语句x[0]=0;为数组所有元素赋初值0

  (26)设变量p 是指针变量,语句p=NULL;,是给指针变量赋NULL 值,它等价于

  A)p=;

  B)p='0';

  C)p=0;

  D)p='';

  (27)有以下程序

  include

  main()

  { int a[]={10,20,30,40},*p=a,i;

  for(i=0;i=3;i++){a[i]=*p;p++;}

  printf(%d ,a[2]);

  }

  A)30

  B)40

  C)10

  D)20

  (28)有以下程序

  include

  define N 3

  void fun(int a[][N],int b[])

  { int i,j;

  for(i=0;i{ b[i]=a[i][0];

  for(j=1;jif(b[i]}

  }

  main()

  { int x[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;

  fun(x,y);

  for(i=0;iprintf( );

  }

  A)2,4,8

  B)3,6,9

  C)3,5,7

  D)1,3,5

  (29)有以下程序(strcpy 为字符串复制函数,strcat 为字符串连接函数)

  include

  include

  main()

  { char a[10]=abc,b[10]=012,c[10]=xyz;

  strcpy(a+1,b+2);

  puts(strcat(a,c+1));

  }

  程序运行后的输出结果是

  A)a12xyz

  B)12yz

  C)a2yz

  D)bc2yz

  (30)以下选项中,合法的是

  A)char str3[]={'d', 'e', 'b', 'u', 'g', ''};

  B)char str4; str4=hello world;

  C)char name[10]; name=china;

  D)char str1[5]= pass,str2[6]; str2=str1;

  (31)有以下程序

  include

  main()

  { char *s=12134;int k=0,a=0;

  while(s[k+1]!='')

  { k++;

  if(k%2==0){a=a+(s[k]-'0'+1);continue;}

  a=a+(s[k]-'0');

  }

  printf(k=%d a=%d ,k,a);

  }

  程序运行后的输出结果是

  A)k=6 a=11

  B)k=3 a=14

  C)k=4 a=12

  D)k=5 a=15

  (32)有以下程序

  include

  main()

  { char a[5][10]={one,two,three,four,five};

  int i,j;

  char t;

  for(i=0;i4;i++)

  for(j=i+1;j5;j++)

  if(a[i][0]:a[j][0])

  { t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;}

  puts(a[1]);

  }

  程序运行后的输出结果是

  A)fwo

  B)fix

  C)two

  D)owo

  (33)有以下程序

  include

  int a=1,b=2;

  void fun1(int a, int b)

  { printf(%d%d,a,b); }

  void fun2( )

  { a=3; b=4; }

  main()

  { fun1(5,6); fun2();

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

  }

  程序运行后的输出结果是

  A)1 2 5 6

  B)5 6 3 4

  C)5 6 1 2

  D)3 4 5 6

  (34)有以下程序

  include

  func(int n)

  { static int num=1;

  num=num+n;printf(%d,num);

  }

  void main()

  { func(3);func(4);printf( ); }

  程序运行后的输出结果是

  A)4 8

  B)3 4

  C)3 5

  D)4 5

  (35)有以下程序

  include

  include

  fun(int *p1,int *p2,int *s)

  { s=(int*)malloc(sizeof(int));

  *s=*p1+*p2;

  free(s);

  }

  void main()

  { int a=1,b=40,*q=a;

  fun(a,b,q);

  printf(%d ,*q);

  }

  程序运行后的输出结果是

  A)42

  B)0

  C)1

  D)41

  (36)有以下程序

  include

  struct STU{char name[9];char sex;int score[2];};

  void f(struct STU a[])

  { struct STU b={zhao,'m',85,90};

  a[1]=b;

  }

  main()

  { struct STU c[2]={{Qian,'f',95,92},{Sun,'m',98,99}};

  f(c);

  printf(%s,%c,%d,%d,,c[0].name,c[0].sex,c[0].score[0],c[0].score[1]);

  printf(%s,%c,%d,%d ,,c[1].name,c[1].sex,c[1].score[0],c[1].score[1]);

  }

  程序运行后的输出结果是

  A)Zhao,m,85,90,Sun,m,98,99

  B)Zhao,m,85,90, Qian,f,95,92

  C)Qian,f,95,92,Sun,m,98,99

  D)Qian,f,95,92,Zhao,m,85,90

  (37)以下叙述中错误的是

  A)可以用trpedef 说明的新类型名来定义变量

  B)trpedef 说明的新类型名必须使用大写字母,否则会出编译错误

  C)用trpedef 可以为基本数据类型说明一个新名称

  D)用trpedef 说明新类型的作用是用一个新的标识符来代表已存在的类型名

  (38)以下叙述中错误的是

  A)函数的返回值类型不能是结构体类型,只能是简单类型

  B)函数可以返回指向结构体变量的指针

  C)可以通过指向结构体变量的指针访问所指结构体变量的任何成员

  D)只要类型相同,结构体变量之间可以整体赋值

  (39)若有定义语句 int b=2; 则表达式(b2)/(3||b)的值是

  A)4

  B)8

  C)0

  D)2

  (40)有以下程序

  include

  main()

  { FILE *fp;int i,a[6]={1,2,3,4,5,6};

  fp=fopen(d2.dat,w+);

  for(i=0;i6;i++) fprintf(fp,%d ,a[i]);

  rewind(fp);

  for(i=0;i6;i++) fscanf(fp,%d,a[5-i]);

  fclose(fp);

  for(i=0;i6;i++) printf(%d,a[i]);

  }

  程序运行后的输出结果是

  A)4,5,6,1,2,3

  B)1,2,3,3,2,1

  C)1,2,3,4,5,6

  D)6,5,4,3,2,1

  二、填空题。

  (6)请写出与 !(a=b)等价的C语言表达式 【6】 。

  (7)以下程序运行时从键盘输入:1.0 2.0,输出结果是:1.000000 2.000000,请填空。

  include

  main()

  { double a; float b;

  scanf( 【7】 ,a,b); printf(%f%f ,a,b);

  }

  (8)有以下程序

  include

  main()

  { int n1=0,n2=0,n3=0; char ch;

  while((ch=getchar())!='!')

  switch(ch)

  { case '1':case '3': n1++;break;

  case '2':case '4': n2++;break;

  default : n3++;break;

  }

  printf(%d%d%d ,n1,n2,n3);

  }

  若程序运行时输入01234567!回车:,则输出结果是 【8】 。

  (9)有以下程序

  include

  main()

  { int i,sum=0;

  for(i=1;i9;i+=2)sum+=i;

  printf(%d ,sum);

  }

  程序运行后的输出结果是 【9】 。

  (10)有以下程序

  include

  main()

  { int d,n=1234;

  while(n!=0)

  { d=n;n=n/10;printf(%d,d);}

  }

  程序运行后的输出结果是【10】 。

  (11)有以下程序

  include

  int k=7;

  int *st(int *a)

  { int *c=k;

  if(*a:*c)c=a;

  return c;

  }

  main()

  { int i=3,*p=i,*r;

  r=st(p);printf(%d ,*r);

  }

  程序运行后的输出结果是 【11】 。

  (12)以下程序的输出结果是 【12】

  include

  define N 3

  define M(n) (N+1)*n

  main()

  { int x;

  x=2*(N+M(2));

  printf(%d ,x);

  }

  (13)若有定义语句:char str[]=0;,则字符串str 在内存中实际占【13】 字节。

  (14)有以下程序

  include

  int fun(int n)

  { if(n==0)return(1);

  return(fun(n-1*n));

  }

  main()

  { int t;

  t=fun(3); printf(%d ,t);

  }

  程序运行后的输出结果是【14】 。

  (15)以下函数的功能是输出链表结点中的数据,形参指针h 已指向如下链表

  h A B C

  请填空。

  struct slist{ char data; struct slist *next};

  void fun(struct slist *h)

  { struct slist *p;

  p=h;

  while(p)

  { printf(%c ,p-:data);p= 【15】 ; }

  printf( );

  }

  参考答案:

  (11)B) 【解析】每一个C 语言的文件或函数都可以单独编译,但只有main 函数的才可以执行。

  (12)A) 【解析】预定义标识符是C语言中的标识符,在C语言中也有特定的含义,如函数printf、 scanf、sin 等和编译预处理命令名(如define 和include)。预定义标识符可以作为用户标识符使用,只是这样会失去系统规定的原义。

  (13)B) 【解析】0xab 是十六进制表示的常量。

  (14)A) 【解析】C语言用函数实现软件的模块化设计。

  (15)C) 【解析】C语言中,常常用一个标识符来代表一个常量,称为符号常量。符号常量在使用之前要先定义,定义格式如下:define符号常量名:(常量) 其中,符号常量名)用标识符,习惯上用大写字母,常量:可以是数字常量,也可以是字符

  (16)C) 【解析】题目中用scanf 函数以整数的形式输入a,b 的值。选项C)整型数字3 后面有一个空格,当输入空格时,scanf 函数输入就会终止。

  (17)C) 【解析】C语言中char 类型数据占字节数为1.

  (18)B) 【解析】由于3!=4 的结果为1,而1:2 的结果为假。

  (19)D) 【解析】使用switch 语句直接处理多个分支,其一般形式为:

  switch(表达式)

  {

  case 常量表达式1:

  语句1;

  break;

  case 常量表达式2:

  语句2;

  break;

  case 常量表达式n:

  语句n;

  break;

  default:

  语句n+1;

  break;

  }

  switch 语句的执行流程是:首先计算switch 后面圆括号中表达式的值,然后用此值依次与各个case 的常量表达式比较,若圆括号中表达式的值与某个case 后面的常量表达式的值相等,就执行此case 后面的语句,执行后遇break 语句就退出switch 语句;若圆括号中表达式的值与所有case 后面的常量表达式都不等,则执行default后面的语句n+1,然后退出switch 语句。

  (20)D) 【解析】由于a 的初始值等于-2,所以while 循环语言执行两次结束,此时变量a 的值等于1,变量b 的等于2。

  (21)C) 【解析】定义指针变量时,必须将指针变量初始化为NULL(为空),否则,如果不赋给它地址,系统会随机给它分配一个地址。

  (22)D) 【解析】两个连续的双引号:,是一个字符串常量,称为空串。

  (23)D) 【解析】由于a 的值为'H',符合(a:='A'a='Z'),所以条件表达式的值等于(a-'A'+'a'),即'h'。

  (24)B) 【解析】在函数main()中,第一次执行for 循环时,b 的值等于1,此时输出字母B;第二次执行for 循环时,b 的`值等于3,此时输出字母D;第三次执行for 循环时,b 的值等于8,此时输出字母I。

  (25)D) 【解析】x[0]可看作是由3 个整型元素组成的一维数组,不可以用语句x[0]=0,为数组所有元素赋初值0。

  (26)C) 【解析】给指针变量p 赋NULL 值,NULL 是在stdio.h 头文件中定义的预定义符,其代码值为0,当执行p=NULL;语句后,称p 为空指针。因为NULL 的代码值为0,所以p=NULL;语句等价于p='';或 p=0;。

  (27)A) 【解析】因为指针变量p 的初始值指向数组a,所以执行for 循环语句后,数组a 中的元素的值不变。

  (28)B) 【解析】函数fun()的作用是求出二维数组a[][N]中每一行中的最大元素,所以在main()函数中执行完fun(x,y)后,数组y 中的元素为二维数组x[N][N]每一行的最大元素。

  (29)C) 【解析】程序执行后strcpy(a+1,b+2)后,字符数组a 的值为a2,再进行字符串的连接strcat(a,c+1),此时字符数组a 的值为a2yz。

  (30)A) 【解析】选项A)是定义了字符数组str3[],并对其赋初值。

  (31)C) 【解析】这个程序的执行过程如下:当k=0 时,s[1]=2!= '',k++=1,a=0+(s[1]- '')=2;当k=1 时,s[2]=1!= '',k++=2,a=2+(s[2]- ''+1)=2+(1+1)=4;当k=2 时,s[3]=3!= '',k++=3,a=4+(s[3]- '')=4+3=7;当k=3 时,s[4]=4!= '',k++=4,a=7+(s[4]- ''+1)=7+(4+1)=12;当k=4 时,s[5]= ''结束循环,输出变量k 和 a 值。

  (32)A) 【解析】这个程序的执行过程是当i=0 时,j=1,a[0][0]=oa[3][0]=f;置换a[2][0]=f, a[3][0]=t;此时,a[2][0]=f,a[1][0]=t,再置换a[2][0]=t,a[1][0]=f,;当i=3时,j=4,a[3][0]=f=a43][0]=f;不置换;所以a[1]的结果为fwo。

  (33)B) 【解析】函数fun1()的作用是输出局部变量a 和b 的值,在主函数中执行fun1(5,6)的结果是输出5,6;函数fun2()的作用是给变量a 和b 分别赋值3,4;执行fun2()的作用是输出3,4。

  (34)A) 【解析】在函数func(int n)中定义了局部静态变量num,,其初始值等于1,所以在主函数中执行func(3),输出4,此时静态变量num的值等于4,当退出函数func(3)时,其值不会丢失,所以当在执行func(4)时,输出8。

  (35)C) 【解析】执行fun(a,b,q);语句时,在内存中开辟了一块内存空间,存放变量a 与b 的和,并用指针变量q 引用它,但是当这条语句执行结束,这块内存空间又释放了,指针这量q 仍然引用的是变量a的地址,所以输出结果为1。

  (36)D) 【解析】在主函数中,定义了结构体STU数组c[2],并对其赋初始值。执行f(c)时,在函数f()中,把结构体变量b 的值赋给了c[1]。

  (37)B) 【解析】typedef 语句的作用仅仅是用标识符来代表已存在的类型名,并未产生新的数据类型,原来类型名依然有效。为了便于识别,一般习惯将新的类型名用大写字母表示。

  (38)A) 【解析】函数的返回值类型可以是结构体类型。

  (39)B) 【解析】变量b 的值等于2,其向左移动2 位,其值等于8,即b2 的值等于8。而3||b 做或运算的结果等于1。所以表达式(b2)/(3||b)的值等于8。

  (40)D) 【解析】在程序中定义了一个整型数组a[6],并对它赋初值,并以写入的方式打开了文件d2.dat。然后利用一个for 循环把数组a 中的元素数据写入文件d2.dat 中,调用函数rewind 把将文件内部的位置指针重新指向一个文件的开头,再利用for 循环语句把文件中的数据依次写入到倒序排列的数组a 中,最后输出数组a 中的数组元素。

  二、填空题

  (6)【6】(a=b)||(a:b)

  【解析】表达式!(a=b)含义是对a 小于等于b 取非,所以与其等价的表达式是(a=b)||(a:b)。

  (7)【7】%lf%f

  【解析】对于变量a 和b 的输入采用实数的形式,所以scanf 函数的输入格式符为 %lf%f。

  (8)【8】224

  【解析】当从键盘上输入01234567!时,根据程序中switch()语句,当输入的字符为'1'、'3'时,变量n1++;所以n1 的值等于2;当输入的字符为'2'、'4'时,变量n2++;所以n2的值等于2;当输入的字符为其他字符时,变量n3++;所以n3 的值等于4。所以答案为224。

  (9)【9】16

  【解析】程序的功能是求1、3、5、7 之和,等于16。

  (10)【10】4321

  【解析】在程序的while 循环中,每次求出n 的个位上的数字,然后n 的值减小10 位,所以输出结果为4321。

  (11)【11】7

  【解析】函数*st()的作用是返回*a 与*c 中较大数的指针,所以在主函数中,执行st(p)时,返回变量k 的指针,因而输出结果为7。

  (12)【12】22

  【解析】根据C语言中对带参数的宏的定义,2*(N+M)2))=2*(3+(3+1)*2)=22。

  (13)【13】2

  【解析】在C语言中在每个字符串的最后都增加一个字符串结束标识字符'',所以本题中的字符串在内存中占有2 个字节。

  (14)【14】6

  【解析】根据函数的迭代,f(3)=3*f(2)=3*2*f(1)=3*2*1*f(1)=3*2*1*1=6。

  (15)【15】 p-:next

  【解析】在while 循环中输出循环链表的每个结点,p-:next 指向当前结点的下一个结点。__

上一篇:搭石教学设计 搭石教学设计一等奖 下一篇:返回列表
造句推荐
  • 2023重庆铜梁消费券领取使用指南
  • 茶油加工程序是什么意思 茶油加工
  • 智赛网进入比赛就掉线怎么回事 智
  • 2023年1月12日北京升旗降旗时间查
  • 娓娓道来的意思是什么如何造句(娓娓道来造句子)
  • 犒劳一词是什么意思如何造句(犒劳犒劳自己是什么意思啊?)
  • 谁是卧底游戏词语大全_哪些词比较好玩
  • 针砭时弊的意思和造句_针砭时弊的词义(针砭时弊的意思解释)
  • review的用法和短语例句(review的短语搭配)
  • 闻名中外的是什么意思如何造句(中外闻名和闻名中外的意思)
  • 猜你喜欢的造句