二级 C 语言笔试-19

文章详细解答了C语言中的选择题,涉及字符数组、指针、整型数组、枚举类型、二叉树结构、字符串操作、软件开发基础知识以及C语言语法等内容,提供了一系列实例和解释。
摘要由CSDN通过智能技术生成

一、选择题 下列各题 A、B、C、D 四个选项中,只有一个选项是正确的。
1. 设有以下说明语句,则变量 a______。 char a='\72';

A. 包含 1 个字符 B. 包含 2 个字符

C. 包含 3 个字符

D. 该说明不合法

2. 下列程序的运行结果为______。

main ( )

int a, *p;

p=&a;

a=100;

printf("a=%d *p=%d *&a=%d &*p=%u ",a,*p,*&a,&*p);

a++;

printf("a++=%d ",a);

(*p) ++;

printf("(*p)++=%d ",*p);

*p++;

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

A. a=100 *p=100 *&a=100 &*p=65498 a++=101 (*p)++=102 *p++=-24 B. a=100 *p=100 *&a=100 &*p=65498 a++=101 (*p)++=102 *p++=-102 C. a=100 *p=100 *&a=65498 &*p=65498 a++=101 (*p)++=102 *p++=-24 D. a=100 *p=100 *&a=100 &*p=65498 a++=101 (*p)++=101 *p++=-24 3. 下列叙述中,不正确的是______。
A. 字符型数组中可以存放字符串 B. 可以对字符型数组进行整体输入、输出 C. 可以对整型数组进行整体输入、输出

D. 不能在赋值语句中通过赋值运算符:对字符型数组进行整体赋值 4. 下列程序运行后,输出结果是______。
#include <stdio. h> #include <string. h> fun (char *w ,int n)
char t,*s1,*s2; s1=w; s2=w+n-1; while (s1<s2)
t=*s1++; *s1=*s2--; *s2=t;
main () char *p; p="1234567"; fun (p, strlen (p)); puts (p);

A. 1234567

B. 7654321

C. 1711717

D. 7177171

5. 以下对枚举类型名的定义中正确的是______。

A. enum a=one,two,three; B. enum aone=9,two=-1,three; C. enum a=one","two","three"; D. enum a"one","two","three"; 6. 有一个深度为 4 的满二叉树,下面关于序号为 7 的结点的叙述中,正确的是______。

A. 该结点双亲的序号为 4

B. 该结点处于二叉树的第 4 层

C. 该结点没有右子树

D. 该结点左子树根结点的序号为 14

7. 若有以下定义和语句,则输出结果是______。

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

A. 4

B. 5

C. 9

D. 10

8. 下面程序运行的结果是______。

main()

int x,y,z; x=0; y=z=-1; x+=-z---y; printf("x=%d\n",x);

A. x=4

B. x=0

C. x=2

D. x=3

9. 在 C 语言中,如果下面的变量都是血类型,则输出的结果是______。 sum=pad=5;pAd=sum++,pad++,++pAd;

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

A. 7

B. 6

C. 5

D. 4

10. 设有二维数组 A[8][9],其每个元素占 2 个字节,从首地址 400 开始,按行优先顺序存 放,则元素 A[8,5]的存储地址为______。

A. 570

B. 506

C. 410

D. 482

11. 软件危机是大型软件开发中出现的现象,下列选项中的______是其主要表现。 ①软件生产的复杂性。

②软件生产进度无法控制。

③软件生产高成本、无法控制。

④软件需求定义不准确。

A. 全部 B. ②和③

C. ①、②和④

D. ②和④

12. 在下列叙述中,不正确的一条是______。

A. 在 C 语言中,函数中的自动变量可以赋初值,每调用一次,赋一次初值 B. 在 C 语言中,外部变量的隐含类别是自动存储类别 C. 在 C 语言中,在调用函数时,实际参数和对应形参在类型上只需赋值兼容 D. 在 C 语言中,函数形参可以说明为 register 变量 13. 下列程序的输出结果是______。
main() int i,k,a[10],p[3]; k=5; for (i=0;i<10;i++) a[i]=i for (i=0;i<3;i++) p[i]=a[i*(i+1)];

for (i=0;i<3;i++)k+=p[i]*2; printf("%d\n",k);

A. 20

B. 21

C. 22

D. 23

14. 若变量已正确定义并赋值,下面符合 C 语言语法的表达式是______。

A. a:=b+1;

B. a=b=C+2;

C. int18.5%3;

D. a=a+7=c+b;

15. 下列程序的输出结果是______。

#include

main() char b[30],*chp;

strcpy(&b[0],"CH"); strcpy(6b[1],"DEF");

strcpy(6b[2],"ABC"); printf("%s\n",b);

A. CHDEF

B. DEFABC

C. CDABC

D. CHABC

16. 下列程序的输出结果是______。

int i=010,J=10;

printf("%d,%d\n",++i,j--);

A. 11,10

B. 9,10

C. 010,9

D. 10,9

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

main()

unsigned a=32768;

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

A. a=32768

B. a=32767

C. a=-32767

D. a=-1

18. 下列程序的输出结果是______。

main() float x=3.6;

int i; i=(int)x; printf("x=%f,i=%d",x,i);

A. x=3.600000,i=4

B. x=3 i=3

C. x=3.600000,i=3

D. x=3 i=3.600000

19. 下列程序运行后的输出结果是______。

main() int a=2,b=-1,c=2;

if(a<b) if(b<0) c=0; else c++; printf ("%d\n",c);

A. 0

B. 1

C. 2

D. 3

20. 下列程序的输出结果是______。

#include<stdio.h>

main ()

int a=2,c=5; printf("a=%%d,b=%%d\n",a,c);

A. a=%2,b=%5

B. a=2,b=5

C. a=%%d,%%d

D. a=%d,b=%d

21. 一个 C 语言的源程序中,______。

A. 必须有一个主函数 B. 可以有多个主函数

C. 必须有主函数和其他函数

D. 可以没有主函数

22. 下列选项中,不是关于栈的基本运算的叙述是______。

A. 从栈顶删除一个元素

B. 判断一个栈是否为空

C. 在栈中的第 i 个元素之前插入一个新元素

D. 读取栈顶元素的值

23. 设 a=3、b=4、c=5,则表达式!(a+b)+c-1&&b+c/2 的值为______。

A. 6.5

B. 6

C. 0

D. 1

24. 下列程序执行后的输出结果是______。

main()

char arr[2][4];

atrcpy(arr,"you");strcpy(arr[1],"me");

art[0][3]='&';

printf("%s\n",arr);

A. you&me

B. you

C. me

D. err

25. 执行以下程序段后,m 的值为______。

int a[2][3]= 1,2,3,4,5,6 ;

int m,*p;

p=&a[0][0];

m=(*p)*(*(p+2))*(*(p+4));

A. 15

B. 14

C. 13

D. 12

26. 软件(结构)设计阶段产生的文档是______。

A. 程序流程图

B. 系统功能说明书

C. 系统模型说明书

D. 模块结构图和模块说明书

27. 下列程序运行后,如果从键盘上输入 ABCDE<回车>,则输出结果为______。

#include<stdio.h> #include<string.h>

fuch (char str[] ) int num=0;

while (*(str+num)!='\0')num++; return(num);

main() char str[10],*p=str; gets(p);printf("%d\n",fuch(p));

A. 8

B. 7

C. 6

D. 5

28. 下列程序中的 for 循环执行的次数是______。

#define N 2

#define M N+1 #define NUM 2*M+1 #main ( )
int i; for (i=1;i<=NUM;i++) printf ("%d\n", i);

A. 5

B. 6

C. 7

D. 8

29. 假定 a 和 b 为 int 型变量,则执行以下语句后,b 的值为______。

a=1;b=10;

do b-=a; a++;
while (b--<0);

A. 9

B. -2

C. -1

D. 8

30. 下列叙述中,正确的一条是______。

A. 语句 int*pt 中的*pt 是指针变量名 B. 运算符*和&都是取变量地址的运算符 C. 已知指针变量 p 指向变量 a,则&a 和*p 值相同,都是变量 a 的值 D. 语句“int *p=a;”等价于“int*p;p=&a[0];”

二、填空题 请将每一个空的正确答案写在序号为[1]~[15]的横线上。注意;以命令关键字填空的必须
拼写完整。
1. 对有 14 个结点的完全二叉树的结点以从上到下、从左到右的顺序进行编号后,序号最小 的叶结点的序号 【1】 。

2. 对于长度为 n 的线性表,若进行顺序查找,时间复杂性为 【2】 ;若进行二分查找,则 时间
复杂性为 【3】 。

3. 近年来形成了软件开发的多种模式,大致有 3 种类型:基于瀑布模型的结构化生命周期 方法、基于动态定义需求的 【4】 方法和基于结构的面向对象的软件开发方法。

4. 下列程序的运行结果为 【5】 。 main ( ) int a,b, c,x,y, z; a=10;b=2; c=! (a%b) ;x=! (a/b); y=(a<b) && (b>=0); z=(a<b) || (b>=0); printf ("c=%d, x=%d, y=%d, z=%d\n", c,x, y, z);
5. 以下函数用来求出 2 个整数之和,并通过形参将结果传回。 void func(int x, int y, 【6】 z) *z=x+y;
6. 下列程序的运行结果为 【7】 。 main ( ) int i, j, row=0, colum=0, max, a[3] [4]=1,2,3,4, 9,8,7,6, -10,10,-5,2; max=a[0] [0]; for (i=0;i<3;i++) for (j=0; j<4; j++) if (max<a [i] [j]) max=a[i] [j]; row=i; colum=j;
printf("max=%-5d row=%-3d colum=%-3d\n",max, row, colum);
7. 下列程序的输出结果是 【8】 。 int t(int x, int y, int cp, int dp) cp=x*x+y*y; dp=x*x-y*y;
main () int a=4, b=3, c=5, d=6; t (a,b, c,d); printf("%d %d \n",c,d);

8. 输出若干学生 3 门课程的成绩。 #include <stdio.h> 【9】 struct student int num; float score[3];
main () int i=0, n; float a[3]; 【10】 *ptr [200]; printf ("请输入学生学号和 3 门课成绩,学号为 0 表示数据输入结束\n");
do ptr[i]=(struct student *)malloc(sizeof(struct student)); scanf("%d%f%f%f",&ptr[i]->num,&a[O],&a[1],&a[2]); ptr[i]->score[O]=a[O]; ptr[i]->score[1]=a[1]; ptr[i]->score[2]=a[2]; if( 【11】 ) break; i++;
while(1); n=i-1;
【12】 ; for(i=O;i<=n;i++) printf("%-6d%.1f %.1f %.1f\n",ptr[i]->num, ptr[i]->score[0], ptr[i]->score[1], ptr[i]->score[2]);
9. 下列程序的功能是计算 1~100 的整数的累加和。 main() int i, sum= 【13】 ; i=1; for( 【14】 ) sum+=i; i++;
printf("sum=%d\n", 【15】 );



 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞莲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值