在空闲时间整理了一些C语言计算机二级和C语言期末考试题库
整理不易,大家点赞收藏支持一下
祝大家计算机二级和期末考试都高分过
系列文章:
C语言计算机二级/C语言期末考试 刷题(一)
C语言计算机二级/C语言期末考试 刷题(二)
C语言计算机二级/C语言期末考试 刷题(三)
目录
一、填空 共25题 (共计25分)
二、判断 共10题 (共计10分)
三、单选 共25题 (共计25分)
四、程序填空 共2题 (共计10分)
五、程序改错 共2题 (共计10分)
六、程序设计 共2题 (共计20分)
第1题
C语言中,【1】是程序的基本组成部分.
=======(答案1)=======
函数
第2题
C语言源程序的基本单位是【1】.
=======(答案1)=======
函数
第3题
C程序执行过程称生成的3种文件及扩展名为【1】、【2】和【3】。
=======(答案1)=======
源程序文件.c 或.cpp
=======(答案2)=======
目标程序文件.obj
=======(答案3)=======
可执行程序文件.exe
第4题
C语言中一个函数由函数首部和【1】两部分组成.
=======(答案1)=======
函数体
第5题
C语言源程序文件的后缀是.C,经过编译之后,生成后缀为.OBJ的【1】文件,经连接生成后缀.EXE的可执行文件.
=======(答案1)=======
目标
第6题使用强制转换方法将正整数转换成字符.若输入100,则本程序的执行结果是【1】.
#include
void main()
{
char c; int i;
printf("输入一个正整数(小于255):");
scanf("%d", &i);
c = (char)i;
printf("%c的ASCII码为%d\n", c, i);
}
=======(答案1)=======
d的ASCⅡ码为100
第7题
设a,b,t 为整型变量,初值为a=7,b=9,执行完语句t=(a>b)?a:b后,t 的值是【1】.
=======(答案1)=======
9
第8题
程序运行的结果是【1】.
main()
{
int a = 3, b = 4;
printf("%d\n", (a < b) ? a : b);
}
=======(答案1)=======
3
第9题
下列程序的输出是【1】,
main()
{
int a=011;
printf("%d\n",++a);
}
=======(答案1)=======
10
第10题
程序运行的结果是【1】.
#include "stdio.h"
main()
{
char c;
c = 'B' ;
putchar(c) ;
}
=======(答案1)=======
B
第11题
以下程序的输出结果是【1】.
#include
void main()
{
int i=10,j=0;
do
{
j=j+i;
i--;
}while(i>2);
printf("%d\n",j);
}
=======(答案1)=======
52
第12题
设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【1】.
for(i=0,j=10; i<=j; i++,j--)
k=i+j;
=======(答案1)=======
10
第13题
程序填空:用递归方法求n!
float fac(int n)
{
float f;
if (n < 0)
printf(" n<0,data error! ");
else
if (n == 0 || n == 1)
f = 1;
else
f = n * (【1】);
return (f);
}
=======(答案1)=======
fac( n-1 )
第14题
若所用变量都已正确定义,请填写以下程序段的输出结果【1】.
for(i=1;i<=5;i++);
printf("OK\n");
=======(答案1)=======
OK
第15题
以下程序运行结果是【1】.
void main()
{
int a = 4, b = 3, c = 5, t = 0;
if (a < b) t = a; a = b; b = t;
if (a < c) t = a; a = c; c = t;
printf("%d %d %d\n", a, b, c);
}
=======(答案1)=======
5 0 3
第16题
若在程序中用到strlen()函数时,应在程序开头写上包含命令# include "【1】".
=======(答案1)=======
string.h
第17题
下述程序的输出结果是【1】 .
#include
long fun(int n)
{
long s;
if (n == 1 || n == 2)
s = 2;
else
s = n + fun(n - 1);
return s;
}
void main()
{
printf("\n%d", fun(4));
}
=======(答案1)=======
9
第18题
请选择下列程序的运行结果【1】 .
#include
int try()
{
static int x = 3;
x++;
return (x);
}
void main()
{
int i, x;
for (i = 0; i <= 2; i++)
x = try();
printf("%d\n", x);
}
=======(答案1)=======
6
第19题
有如下程序:
#include
int max(int x, int y)
{
int z;
if (x > y) z = x;
else z = y;
return(z);
}
void main()
{
int a = 3, b = 5;
printf("%d\n", max(a, b));
}
运行结果为【1】 .
=======(答案1)=======
5
第20题
以下程序输出的结果是【1】 .
#include
int func(int a, int b)
{
return(a + b);
}
void main()
{
int x = 2, y = 5, z = 8, r;
r = func(func(x, y), z);
printf("%d\n", r);
}
=======(答案1)=======
15
第21题
若有以下数组a,数组元素:a[0]~a[9],其值为
9 4 12 8 2 10 7 5 1 3
该数组可用的最大下标值是【1】.
=======(答案1)=======
9
第22题
数组在内存中占一段连续的存储区,由【1】代表它的首地址.
=======(答案1)=======
数组名
第23题
按内存排列顺序, 数组char a[2]中的所有元素是a[1]和【1】.
=======(答案1)=======
a[0]
第24题
在C程序中.只能给指针变量赋【1】值和【2】值.
=======(答案1)=======
地址
=========或=========
确定地址
=======(答案2)=======
NULL
第25题
下列程序的运行结果为【1】.
main()
{
int x, * p, ** q;
x = 10;
p = &x;
q = &p;
printf("%d\n", **q);
}
=======(答案1)=======
10
第1题
c程序总是从程序的第一条语句开始执行.
答案:N
第2题
表达式 (j=3, j++) 的值是4.
答案:N
第3题
十进制数15的二进制数是1111.
答案:Y
第4题
for(;;);是错误的.
答案:N
第5题
for(i=0;i<9;i++)能控制循环10次.
答案:N
第6题
在调用函数时,实参把值传送给对应位置上的形参,形参的值不能传给实参.
答案:Y
第7题
C程序在执行过程中对预处理命令进行处理.
答案:N
第8题
static char str[]="China";没有定义数组元素个数.
答案:N
第9题
数组名是一个不可变的地址常量,不能对它进行赋值运算.
答案:Y
第10题
char *s1="hello",*s2;s2=s1;是正确的.
答案:Y
第1题
以下叙述中正确的是 ().
A:C程序中注释部分可以出现在程序中任意合适的地方
B:花括号"{"和"}"只能作为函数体的定界符
C:构成C程序的基本单位是函数,所有函数名都可以由用户命名
D:分号是C语句之间的分隔符,不是语句的一部分
答案:A
第2题
下列程序的运行结果是().
#include
void main()
{
int i, j, m = 55;
for (i = 1; i <= 3; i++)
for (j = 3; j <= i; j++) m = m % j;
printf("%d\n", m);
}
A:0
B:1
C:2
D:3
答案:B
第3题
结构化程序的三种控制结构分别是().
A:循环、分支、递归
B:顺序、循环、嵌套
C:循环、递归、选择
D:顺序、选择、循环
答案:D
第4题
在while(x)语句中的x与下面条件表达式等价的是().
A:x= =0
B:x= =1
C:x!=1
D:x!=0
答案:D
第5题
下面有关 for 循环的正确描述是().
A:for 循环只能用于循环次数已经确定的情况
B:for 循环是先执行循环循环体语句,后判断表达式
C:在 for 循环中,不能用 break 语句跳出循环体
D:for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
答案:D
第6题
对下述程序,()是正确的判断.
#include
void main()
{
int x, y;
scanf("%d,%d", &x, &y);
if (x > y)
x = y; y = x;
else
x++; y++;
printf("%d,%d", x, y);
}
A:语法错误,不能通过编译
B:输入数据3和4,则输入4和5
C:输入数据4和3,则输入3和4
D:输入数据4和3,则输出4和4
答案:A
第7题
以下叙述中错误的是().
A:用户所定义的标识符允许使用关键字
B:用户所定义的标识符应尽量做到"见名知意"
C:用户所定义的标识符必须以字母或下划线开头
D:用户定义的标识符中,大、小写字母代表不同标识
答案:A
第8题
如果int a=2,b=3,c=0,下列描述正确的是().
A:a>b!=c和a>(b!=c)的执行顺序是一样的
B:!a!=(b!=c)表达式的值为1
C:a||(b=c)执行后b的值为0
D:a&&b>c的结果为假
答案:B
第9题
能正确表示逻辑关系"a≥10或a≤0"的C语言表达式是().
A:a>=10 or a<=0
B:a>=0|a<=10
C:a>=10&&a<=0
D:a>=10||a<=0
答案:D
第10题
执行下列语句后,a和b的值分别为().
int a,b;
a=1+'a';
b=2+7%-4-'A';
A:-63,-64
B:98,-60
C:1,-60
D:79,78
答案:B
第11题
下列程序段的输出结果为().
int a=7,b=9,t;
t=a*=a>b?a:b;
printf("%d",t);
A:7
B:9
C:63
D:49
答案:C
第12题
以下叙述中正确的是().
A:构成C程序的基本单位是函数
B:可以在一个函数中定义另一个函数
C:main()函数必须放在其它函数之前
D:所有被调用的函数一定要在调用之前进行定义
答案:A
第13题
以下叙述正确的是().
A:在C程序中,main函数必须位于程序的最前面
B:C程序的每行中只能写一条语句
C:C语言本身没有输入输出语句
D:在对一个C程序进行编译的过程中,可发现注释中的拼写错误
答案:C
第14题
以下正确的说法是:在C语言中().
A:实参和与其对应的形参各占用独立的存储单元
B:实参和与其对应的形参共占用一个存储单元
C:只有当实参和与其对应的形参同名时才共占用存储单元
D:形参是虚拟的,不占用存储单元
答案:A
第15题
以下函数调用语句中实参的个数是().
exce((v1,v2),(v3,v4,v5),v6);
A:3
B:4
C:5
D:6
答案:A
第16题
数组名作为实参数传递给函数时,数组名被处理为().
A:该数组的长度
B:该数组的元素个数
C:该数组的首地址
D:该数组中各元素的值
答案:C
第17题
C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是().
A:void
B:int
C:float
D:double
答案:B
第18题
以下程序的输出结果是().
#include
fun(int a, int b, int c)
{
c = a * b;
}
void main()
{
int c;
fun(2, 3, c);
printf("%d\n", c);
}
A:0
B:1
C:6
D:无定值
答案:D
第19题
int a[10];
给数组a的所有元素分别赋值为1、2、3、……的语句是().
A:for(i=1;i<11;i++)a[i]=i;
B:for(i=1;i<11;i++)a[i-1]=i;
C:for(i=1;i<11;i++)a[i+1]=i;
D:for(i=1;i<11;i++)a[0]=1;
答案:B
第20题
设有数组定义:char array[ ]="China";,则数组array所占的空间为().
A:4个字节
B:5个字节
C:6个字节
D:7个字节
答案:C
第21题
有下面的程序段:
char a[3],b[ ]="china";
a=b;
printf("%s",a);
则().
A:运行后将输出china
B:运行后将输出ch
C:运行后将输出chi
D:编译出错
答案:D
第22题
若有说明:int a[ ][3]={1,2,3,4,5,6,7};,则a数组第一维的大小是().
A:2
B:3
C:4
D:无确定值
答案:B
第23题
若有说明 int a[][4]={0,0};则下面不正确的叙述是().
A:数组a的每个元素都可得到初值0
B:二维数组a的第一维大小为1
C:因为二维数组a中第二维大小的值除经初值个数的商为1,故数组a的行数为1
D:有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
答案:D
第24题
若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是().
A:p=q;
B:*p=*q;
C:n=*q;
D:p=n;
答案:D
第25题
设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是().
A:p=1;
B:*q=2;
C:q=p;
D:*p=5;
答案:D
第1题
题目:下列程序从键盘输入所需数据,求出z的值并输出,要求输出结果保留2位小数。
#include
【 ? 】
main()
{
int x;
double y, z;
scanf("【?】", &x, &y);
z = 2 * x * sqrt(y);
printf("z=【?】", z);
}
答案:
=======(答案1)=======
#include
=========或=========
#include "math.h"
=======(答案2)=======
%d%f
=======(答案3)=======
%.2f
第2题
功能:输出Fibonacci数列的前15项,要求每行输出5项。
Fibonacci数列:1,1,2,3,5,8,13...........
#include
main()
{
int 【 ? 】[14], i;
fib[0] = 1; fib[1] = 1;
for (i = 2; i < 15; i++)
fib[i] = 【 ? 】;
for (i = 0; i < 15; i++)
{
printf("%d\t", fib[i]);
if (【 ? 】) printf("\n");
}
}
答案:
=======(答案1)=======
fib
=======(答案2)=======
fib[i-2]+fib[i-1]
=========或=========
fib[i-2] + fib[i-1]
=======(答案3)=======
i%5 == 4
第1题
功能:输入一个圆的半径,计算圆的周长和面积并输出。
#include
#define PI 3.1415926
void main()
{
double r, l, s;
scanf("%lf", r);
l = 2 * PI * r;
s = PI * r * r;
printf("%6.2f,%6.2f\n", l, s);
}
答案:
=======(答案1)=======
void main()
=======(答案2)=======
scanf("%lf",&r);
第2题
在主函数中从键盘输入若干个数放入数组中,用0结束输入并放
在最后一个元素中。下列给定程序中,函数fun()的功能是计算
数组元素中值为负数的平均值(不包括0)。
例如:数组中元素的值依次为43,-47,-21,53,-8,12,0,
则程序的运行结果为-25.333333。
请改正程序中的错误,使它能得到正确结果。
#include
#include
#include
double fun(int x[])
{
double sum = 0.0;
int c = 0, i = 0;
while (x[i] == 0)
{
if (x[i] < 0)
{
sum = sum + x[i];
c++;
}
i++;
}
sum = sum\c;
return sum;
}
void main()
{
int x[1000];
int i = 0;
system("CLS");
printf("\nPlease enter some data(end with 0) :");
do
{
scanf("%d", &x[i]);
} while (x[i++] != 0);
printf("%f\n", fun(x));
}
答案:
=======(答案1)=======
while(x[i]!=0)
=======(答案2)=======
sum=sum/c;
第1题
题目:下面的公式可以用来计算圆周率PI的近似值:
pi/8=1/(1*3)+1/(5*7)+1/(9*11)+……
请编程序计算公式的前15项,并输出pi值。
要求:循环控制变量用i,中间项存于变量p中,若使用其他变量用n。
#include
void main()
{
/**********Program**********/
/********** End **********/
}
答案:
答案一:
int i;
float n, pi = 0, p;
for (i = 1; i <= 60; i += 4)
{
p = 1.0 / (i * (i + 2));
pi = pi + p;
}
printf("PI=%8.3f\n", pi * 8);
答案二:
int i;
float n, pi = 0, p;
for (i = 1; i <= 15; i++)
{
n = 4 * i - 3;
p = 1.0 / (n * (n + 2));
pi = pi + p;
}
printf("PI=%8.3f\n", pi * 8);
第2题
题目:编写函数fun,w是一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求
出w的后n-1位的数作为函数值返回。
例如:w值为5923,则函数返回923;若w值为923,则函数返回23。
#include
#include
#include
unsigned fun(unsigned w)
{
/**********Program**********/
/********** End **********/
}
void main()
{
unsigned x;
printf("Enter a unsigned integer number: ");
scanf("%u", &x);
printf("The original data is:%u\n", x);
if (x < 10)
printf("Data error! ");
else
printf("The result :%u\n", fun(x));
}
答案:
int n = 1, j, s = 1;
unsigned t;
t = w;
/*首先确定w的位数,用变量n保存*/
while (t >= 10)
{
/*每次循环使s的位数减1,同时n加1*/
t = t / 10;
n++;
}
/*求10的n-1次方*/
for (j = 1; j < n; j++)
s = s * 10;
/*用w对10的n-1次方求余即可得到所求*/
return w % s;
若有错误或疑问,欢迎评论区留言讨论。