c语言程序设计考试题及答案解析 c语言程序设计第二版课后题答案
很多朋友对于c语言程序设计考试题及答案解析和c语言程序设计第二版课后题答案不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
下半年计算机二级c语言基础试题
下半年计算机二级c语言基础试题
任何设计活动都是在各种约束条件和相互矛盾的需求之间寻求一种平衡,程序设计也不例外。下面是我收集的关于计算机二级c语言基础试题,希望大家认真阅读!
下半年计算机二级c语言基础试题1一、选择:
1.给出以下定义:
char acX[ ]="abcdefg";
char acY[ ]={'a','b','c','d','e','f','g'};
则正确的叙述为()
A)数组acX和数组acY等价 B)数组acX和数组acY的长度相同
C)数组acX的长度大于数组acY的长度 D)数组acX的长度小于数组acY的长度
答案:C
2.
void example(char acHello[])
{
printf("%d", sizeof(acHello));
return;
}
void main()
{
char acHello[]="hello";
example(acHello);//数组名称作参数,传的是地址,一个地址占四个字节
return;
}
的输出是
A 4 B 5 C 6 D不确定
答案:A
3.有以下程序段
char acArr[]="ABCDE";
char*pcPtr;
for(pcPtr= acArr; pcPtr< acArr+ 5; pcPtr++)
{
printf("%s/n", pcPtr);
}
return;
输出结果是()
A) ABCD B) A C) E D) ABCDE
B D BCDE
C C CDE
D B DE
E A E
答案:D
4.在中断中,不能同步获取信号量,但是可以释放信号量。
A.正确 B.错误
答案:A
5.以下叙述中不正确的是()
A)在不同的函数中可以使用相同名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)
答案:D
6.设有如下定义:
unsigned long pulArray[]={6, 7, 8, 9, 10};
unsigned long*pulPtr;
则下列程序段的输出结果为()
pulPtr= pulArray;
*(pulPtr+ 2)+= 2;
printf("%d,%d/n",*pulPtr,*(pulPtr+ 2));
A)8,10 B)6,8 C)7,9 D)6,10
答案:D
7.定义结构体时有下面几种说法,请指出正确的(多选):______
A、结构体中的每个部分,最好进行四字节对齐;
B、结构体的总长度最好是四字节对齐;
C、结构中成员的存放不用考虑字节对齐情况;
答案:A、B
8.void example()
{
int i;
char acNew[20];
for(i= 0; i< 10; i++)
{
acNew[i]='0';
}
printf("%d/n", strlen(acNew));
return;
}
的输出为()
A 0 B 10 C 11 D不确定
答案:D
9.switch(c)中的c的数据类型可以是char、long、float、unsigned、bool.()
A.正确 B.错误
答案:B
10.网络上传输的字节序默认是大字节的,如果主机是小字节序,在网络通信时则须进行字节序转换;如果主机是
大字节序,为了程序的一致性及可移植性,最好也在程序中加上字节序转换的操作(空操作)。
A.正确 B.错误
答案:A
二、填空题
1、 C语言函数返回类型的默认定义类型是
2、函数的实参传递到形参有两种方式:和
3、在一个函数内部调用另一个函数的调用方式称为。在一个函数内部直接或间接调用该函数成为函数的调用方式
4、C语言变量按其作用域分为和
5、凡在函数中未指定存储类别的局部变量,其默认的存储类别为
三、看程序写结果
1、#include
Int abc(int u,int v);
Void main()
{int a=24,b=16,c;
c=abc(a,b);
printf(“value=%d”,c);
}
Int abc(int u, int v)
{int w;
While(v)
{w=u%v;
u=v;
v=w;
}
Return u;
}
2、#include
int x1=30,x2=40;
main()
{int x3=10,x4=20;
sub(x3,x4);
sub(x2,x1);
printf(“%d,%d,%d,%d”,x3,x4,x1,x2);
}
sub(int x,int y)
{x1=x;x=y;y=x1;}
3、#include
Main()
{int i=5;
Printf(“%d”,sub(i));
}
sub(int n)
{int a;
If(n==1) return 1;
a=n+sub(n-1);
return(a);
}
4、#include
Void fun()
{static int m;
m+=2;
printf(“%d”,m);
}
Main()
{int a;
For(a=1;a<=4;a++) fun();
Printf(“”);
}
四、编程题
1、编写一个函数,判断任一整数是否为素数,用main()函数调用并测试之。
2、用递归方法求n!
3、有一个一维数组,内放10个学生成绩,写一个函数,求出平均分,最高分和最低分
下半年计算机二级c语言基础试题2 1.下列叙述中正确的是()。
A.所有数据结构必须有根结点
B.所有数据结构必须有终端结点(即叶子结点)
C.只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构
D.没有根结点或没有叶子结点的数据结构一定是非线性结构
【答案】D
【解析】D项正确,线性结构的特点是:
①集合中必存在“第一个元素"且惟一;
②集合中必存在“最后一个元素”且惟一;
③除最后一个元素外,其他数据元素均有惟一的“后继;
④除第一个元素外,其他数据元素均有惟一的“前驱”。所以没有根结点或没有叶子结点的数据结构一定是非线性结构。AB两项错误,不是所有数据结构都必须有根结点和叶子结点;C项错误,数据结构中若有中间结点不满足只有一个前件或者后件的条件,就不是线性结构。答案选择D选项。
2.以下叙述中错误的是()。
A. C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B. C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件
C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D. C语言源程序经编译后生成后缀为.obj的目标程序
【答案】A
【解析】A项错误,注释语句不会被翻译成二进制的'机器指令。C源程序经过C编译程序编译之后生成后缀为.obj的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把.obj文件与各种库函数连接起来生成一个后缀为.exe的可执行文件。答案选择A选项。
3. C语言主要是借助以下()功能来实现程序模块化的。
A.定义函数
B.定义常量和外部变量
C.三种基本结构语句
D.丰富的数据类型
【答案】A
【解析】C程序的模块化主要通过函数来实现。C语言允许对函数单独进行编译,从而可以实现模块化。答案选择A选项。
4.有以下程序段:
char ch;
int k;
ch='a';
k=12;
print("%c,%d,",h,ch,k);
printf("k=%d",k);
已知字符a的ASCII码十进制值为97,则执行上述程序段后输出的结果是()。
A.因变量类型与格式描述符的类型不匹配输出无定值
B.输出项与格式描述符个数不符,输出为零值或不定值
C.a,97,12k=12
D. a,97,k=12
【答案】D
【解析】字符变量的值是该字符的ASCII码值,可以参与整型变量所允许的任何运算。"ch='a",%c表示以字符格式输出ch的值,所以输出为a;%d表示以十进制代码的形式输出ch的值,为97;k没有对应的输出格式,不输出。在第二个语句中,首先输出"k=",然后以十进制代码输出k的值,为12。答案选择D选项。
5.下列叙述中正确的是()。
A.栈是“先进先出”的线性表
B.队列是“先进后出"的线性表
C.循环队列是非线性结构
D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
【答案】D
【解析】有序的线性表既可采用顺序存储结构,也可以采用链式存储结构。A项错误,栈是“先进后出"的线性表B项错误,队列是“先进先出"的线性表;C项错误,循环队列是线性结构的,有序的线性表既可采用顺序存储结构,也可采用链式存储结构。
答案选择D选项。
6.某二叉树的中序序列为DCBAEFG,后序序列为DCBGFEA,则该二叉树的深度(根结点在第1层)为()。
A. 5
B. 40
C.3
D. 2
【答案】B
【解析】二叉树的后序序列为DCBGFEA,则A为根结点。中序序列为DCBAEFG,则DCB为左子树结点,EFG为右子树结点。同理B为C父结点,C为D父结点。根据分析,可画出左子树,同理E为F父结点,F为G父结点。根据分析,可画出右子树,故二叉树深度为4层。答案选择B选项。
7.设有定义:struct{intn;floatx;}s[2],m[2]={{10,2.8},{0,0.0}};,则以下赋值语句中正确的是()。
A. s[0]=m[1];
B. s=m;
C.s.n=m.n;
D. s[2].x=m[2].x;
【答案】A
【解析】定义了结构体类型数组s,长度为2,结构体类型数组m,长度为2,并对数组m进行了初始化。同类型的结构体可以直接用变量名实现赋值,A项正确;数组名为数组首地址,地址常量之间不可以相互赋值,B项错误;数组名为地址常量不是结构体变量,不能引用成员,C项错误;s[2]与m[2]数组越界,D项错误。答案选择A选项。
8.关于C语言标识符,以下叙述错误的是()。
A.标识符可全部由数字组成
B.标识符可全部由下划线组成
C.标识符可全部由小写字母组成
D.标识符可全部由大写字母组成
【答案】A
【解析】C语言标识符只能由字母、数字、下划线构成,且只能以字母、下划线开头,故答案选择A选项。
9.以下程序段中的变量已定义为int类型,则
sum=pAd=5;
pAd=sum++,++pAd,pAd++;
printf("%d",pAd);
程序段的输出结果是()。
A. 6
B. 4
C. 5
D. 7
【答案】D
【解析】自增和自减运算符的两种用法:前置运算,运算符放在变量之前,规则是先使变量的值增(或减)1,然后以变化后表达式的值参与其他运算;后置运算,运算符放在变量之后,规则是变量先参与其他运算,然后再使变量的值增(或减)1。执行pAd=sum++,sum++是后置自增,执行完后,pAd=5,sum=6。++pAd和pAd++语句中没有其他运算,即效果相同,pAd分别加1,两句执行完后,pAd7。答案选择D选项。
;
求一份C语言程序设计的期末考试试题!!!谢谢了
一.选择题(共15题,每题2分,共30分)
1.定义结构体的关键字是()
A. union B. enum C.struct D.typedef
2.设整型变量a为5,使b不为2的表达式是()
A. b=a/2 B. b=6-(--a) C. b=a%2 D. b=a>3?2:1
3.下面哪一项是不正确的字符串赋值或赋初值的方法()
A. char*str; str=“china”;
B. char str[7]={‘c’,‘h’,‘i’,‘n’,‘a’};
C. char str1[]=“china”,str2[]=“123”;
D. char str1[10]; str1=“china”;
4.以下对二维数组a进行正确初始化的是()
A. int a[2][3]={{1,2},{3,4},{5,6}}; B. int a[ ][3]={1,2,3,4,5,6};
C. int a[2][ ]={1,2,3,4,5,6}; D. int a[2][ ]={{1,2},{3,4}};
5.选出下列标识符中不是合法的标识符的是()
A. hot_do B. cat1 C. _pri D. 2ab
6.以下说法中正确的是()
A. C语言程序总是从第一个的函数开始执行
B.在C语言程序中,要调用的函数必须在main()函数中定义
C. C语言程序总是从main()函数开始执行
D. C语言程序中的main()函数必须放在程序的开始部分
7.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式为()
A. p+1 B. a+1 C. a++ D.++p
8.若有说明: int i,j=7,*p=&i;,则与i=j;等价的语句是()
A. i=*p; B.*p=*&j; C. i=&j; D. i=**p;
9.若变量c为char类型,能正确判断出c为小写字母的表达式是()
A.‘a’<=c<=‘z’ B.(c>=‘a’)||(c<=‘z’)
C.(‘a’<=c) and(‘z’>=c) D.(c>=‘a’)&&(c<=‘z’)
10.以下程序的输出结果是()
main()
{ int a[]={1,2,3,4,5,6,7,8,9},*p;
p=a;
*(p+3)+=2;
printf(“%d,%d\n”,*p,*(p+3));}
A. 0, 5 B. 1, 6 C. 1, 5 D. 0, 6
11.以下程序的输出结果是()
main()
{ int a=5;
float x=3.14;
a*=x*(‘E’-‘A’);
printf(“%f\n”,(float)a);}
A. 62.000000 B. 62.800000 C. 63.000000 D. 62
12.以下程序的输出结果是()
#define f(x) x*x
main()
{ int a=6,b=2,c;
c=f(a)/f(b);
printf(“%d\n”,c);}
A. 9 B. 6 C. 36 D. 18
13.定义如下变量和数组:int i; int 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 B. 1 4 7 C. 3 5 7 D. 3 6 9
14.下列程序段的输出结果是()
void main()
{ int k;
for(k=1;k<5;k++)
{ if(k%2!=0)
printf(“#”);
else
printf(“*”);}
}
A.#*#* B.*#*# C.## D.**
15.下列程序执行后输出的结果是()
int d=1;
fun(int p)
{ int d=5;
d+=p++;
printf("%d,",d);}
main()
{ int a=3;
fun(a);
d+= a++;
printf("%d\n",d);}
A. 8, 4 B. 9, 6 C. 9, 4 D. 8, 5
二.填空题(共7题,每空2分,共30分)
1.数组 int a[3][5];共定义了_______________个元素。
2.有float f=3.1415927;则 printf(“%5.4f”, f);输出的结果是_______________。
3.下面程序的功能是:输出 100以内(不包含100)能被 3整除且个位数为 6的所有整数,请填空。
main()
{ int i;
for(i=1; _______________; i++)
if(_______________)
printf("%d", i);
}
4.设有“int x=2, y”说明,则逗号表达式“y=x+5,x+y”的值是 _______________
5.以下是使用指针,进行字符串复制的程序,请填空。
main()
{ char a[]=“Tsinghua University”, b[30],*p1,*p2;
p1=a;
p2=b;
for(;*p1!=‘_______________’; p1++, p2++)
_______________=_______________;
*p2=‘_______________’;
printf(“string a is:%s\n”,a);
printf(“string b is:%s\n”,b);
}
6.下面程序用冒泡法对数组a进行降序排序,请填空。
main()
{ int a[5]={4,7,2,5,1};
int i,j,m;
for(i=0;i<4;i++)
for(j=0;j<_______________;j++)
if( _______________< _______________)
{ m=a[ j];
a[ j]=a[ j+1];
a[ j+1]= m;}
for(i=0;i<5;i++)
printf("%d",a[i]);
}
7.函数fun的功能是:使一个字符串按逆序存放,请填空。
void fun(char str[])
{ char m; int i,j;
for(i=0,j=strlen(str);i<_______________;i++,j--)
{ m=str[i];
str[i]= _______________;
str[j-1]=m;
}
printf("the rotated string is%s\n",_______________);
}
2018年计算机二级考试C语言试题及答案(3)
2018年计算机二级考试C语言试题及答案(3)
1[单选题]以下叙述中正确的是
A.两个字符串可以用关系运算符进行大小比较
B.函数调用strlen(s);会返回字符串S实际占用内存的大小(以字节为单位)
C.C语言本身没有提供对字符串进行整体操作的运算符
D.当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和
参考答案:C
参考解析:本题考查字符串处理函数strien、strcat、strcmp。B选项中strlen返回的是字符串s实际占用内存大小加上结尾符,A选项中不能用关系运算符进行大小比较,可以使用strcmp。D选项当使用连接函数strcat时,内存空间会减少一个字符位置。
2[单选题]一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是()。
A.一对一B.一对多C.多对多D.多对一
参考答案:C
参考解析:因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。
3[单选题]对于while(!E)s;,若要执行循环体s,则E的取值应为:
A.E等于1B.E不等于0C.E不等于1D.E等于0
参考答案:D
参考解析:while语句的一般形式为:while(表达式)语句;其中表达式是循环条件,语句为循环体。while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。该题中如要执行语句s,则!E应为真,因此E应等于0,D选项正确。
4[单选题]在软件设计中不使用的工具是()。
A.系统结构图B.PAD图C.数据流图(DFD图)D.程序流程图
参考答案:C
参考解析:系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。PAD图是在详细设计阶段用到的。程序流程图是对程序流程的图形表示,在详细设计过程中用到。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选择C。
5[单选题]若有定义语句:char a='\82';则变量a()
A.说明不合法B.包含1个字符C.包含2个字符D.包含3个字符
参考答案:B
参考解析:char a='\82',定义字符量a,char型变量值为1个字节长度,并从右侧开始运算,所以a的值应为'2'。因此B选项正确。
6[单选题]若fp已定义为指向某文件的指针,且没有读到该文件的末尾,则C语言函数feof(fp)的函数返回值是
A.EOFB.非0C.-1D.0
参考答案:D
参考解析:本题考查文件的定位,feof函数的用法是从输入流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值,否则为0,所以选项D正确。
7[单选题]以下叙述中正确的是
A.只要适当地修改代码,就可以将do-while与while相互转换
B.对于“for(表达式1;表达式2;表达式3)循环体”首先要计算表达式2的值,以便决定是否开始循环
C.对于“for(表达式1;表达式2;表达式3)循环体”,只在个别情况下才能转换成while语句
D.如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用while语句
参考答案:A
参考解析:B选项中,for语句中需要先求解先求解表达式1;C选项中,for语句使用最为灵活,它完全可以取代while语句;D选项中,对于死循环,也可以使用for语句。因此A选项正确。
如果你还想了解更多这方面的信息,记得收藏关注本站。