收集了一些经典C语言计算机二级和C语言期末考试题库
整理不易,大家点赞收藏支持一下
祝大家计算机二级和期末考试都高分过
系列文章:
C语言计算机二级/C语言期末考试 刷题(一)
C语言计算机二级/C语言期末考试 刷题(二)
C语言计算机二级/C语言期末考试 刷题(三)
C语言计算机二级/C语言期末考试 刷题(四)
C语言计算机二级/C语言期末考试 刷题(五)
C语言计算机二级/C语言期末考试 刷题(六)
C语言计算机二级/C语言期末考试 刷题(七)
目录
一、填空 共10题 (共计20分)
二、判断 共5题 (共计10分)
三、单选 共30题 (共计60分)
四、程序填空 共2题 (共计10分)
五、程序改错 共2题 (共计40分)
六、程序设计 共2题 (共计60分)
第1题
C语言中,【1】是程序的基本组成部分.
=======(答案1)=======
函数
第2题
getchar()函数只能接收一个【1】.
=======(答案1)=======
字符
第3题
若s是int型变量,且s=6,则s%2+(s+1)%2表达式的值为【1】.
=======(答案1)=======
1
第4题
int x=2,y=2,z=0; 则表达式x= =y>z的值为【1】.
=======(答案1)=======
0
第5题
在C语言中的实型变量分为两种类型,它们是float型和【1】型.
=======(答案1)=======
double
第6题
如下程序的运行结果是【1】.
#include
void main()
{ int y=3,x=3,z=1;
printf("%d%d\n",(++x,y++),z+2); }
=======(答案1)=======
33
第7题
当a=1,b=2,c=3时,执行以下程序段后c=【1】.
if (a>c)
b=a;
a=c;
c=b;
=======(答案1)=======
2
第8题
若输入字符串:abcde<回车>,则以下while循环体将执行 【1】 次.
while((ch=getchar())=='e')
printf("*");
=======(答案1)=======
0
第9题
请选择下列程序的运行结果【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
第10题
读程序,填运行结果【1】.
main()
{ char c[10]={'I',' ','a','m',' ','a',' ','b','o','y'};
int i;
for(i=0;i<10;i++)
printf("%c",c[i]);
printf("\n");
}
=======(答案1)=======
I am a boy
第1题
参加逻辑运算的数据可以是任何类型的数据.
答案:Y
第2题
putchar('\n');与printf("\n");作用相同.
答案:Y
第3题
若i =3,则printf("%d",-i++);输出的值为 -4.
答案:N
第4题
C语言程序中,当调用函数时实参和形参各占一个独立的存储单元.
答案:Y
第5题
数组说明 int a[3][3]={1,2,3,4,5}; 是正确的.
答案:Y
第1题
以下叙述正确的是().
A:在C程序中,main()函数必须位于程序的最前面
B:C程序中的每行中只能写一条语句
C:C语言本身没有输入输出语句
D:在对一个C程序进行编译的过程中,可发现注释中的拼写错误
答案:C
第2题
以下叙述中正确的是 ().
A:C程序中注释部分可以出现在程序中任意合适的地方
B:花括号"{"和"}"只能作为函数体的定界符
C:构成C程序的基本单位是函数,所有函数名都可以由用户命名
D:分号是C语句之间的分隔符,不是语句的一部分
答案:A
第3题
下列()表达式的值为真,其中a=5;b=8;c=10;d=0
A:a*2>8+2
B:a&&d
C:(a*2-c)||d
D:a-b
答案:D
第4题
若变量已正确定义,执行语句scanf("%d,%d,%d ",&k1,&k2,&k3);时,()是正确的输入.
A:2030,40
B:20 30 40
C:20, 30 40
D:20,30,40
答案:D
第5题
以下选项中合法的C语言赋值语句是().
A:a=b=34
B:a=34,b=34
C:--i
D:m=(int)(x+y)
答案:D
第6题
printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列,如果字符串长度大于5,则输出按方式().
A:从左起输出该字符串,右补空格
B:按原字符长从左向右全部输出
C:右对齐输出该字串,左补空格
D:输出错误信息
答案:B
第7题
以下关于long、int和short类型数据占用内存大小的叙述中正确的是().
A:均占4个字节
B:根据数据的大小来决定所占内存的字节数
C:由用户自己定义
D:由C语言编译系统决定
答案:D
第8题
结构化程序的三种控制结构分别是().
A:循环、分支、递归
B:顺序、循环、嵌套
C:循环、递归、选择
D:顺序、选择、循环
答案:D
第9题
下面程序的输出结果是().
#include
void main()
{ int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d %d",x--,y); }
A:10 19 2
B:9 87 6
C:10 99 0
D:10 109 1
答案:D
第10题
下列程序的输出结果是().
main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:switch(y)
{
case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
A:a=1,b=0
B:a=2,b=1
C:a=1,b=1
D:a=2,b=2
答案:B
第11题
以下不正确的if语句形式是().
A:if(x>y&&x!=y);
B:if(x==y) x+=y;
C:if(x!=y) scanf("%d",&x) else scanf("%d",&y);
D:if(x
答案:C
第12题
以下程序的输出结果是().
#include
void main( )
{ int a =-1,b =4,k;
k =(++a<0)&&! (b--<= 0);
printf(" %d%d%d \n",k,a,b); }
A:104
B:103
C:003
D:004
答案:D
第13题
对建立良好的程序设计风格,下面描述正确的是().
A:程序应简单、清晰、可读性好
B:符号名的命名要符合语法
C:充分考虑程序的执行效率
D:程序的注释可有可无
答案:A
第14题
C语言中while和do—while循环的主要区别是().
A:While的循环控制条件比do—while的循环控制条件严格
B:do—while的循环体至少无条件执行一次
C:do—while允许从外部转到循环体内
D:do—while循环体不能是复合语句
答案:B
第15题
假定所有变量以正确说明,下列程序段运行后x的值是().
a=b=c=0;x =35;
if(!a)x--;
else if(b);
if(c) x=3;
else x=4;
A:34
B:4
C:35
D:3
答案:B
第16题
以下程序段中,能够正确地执行循环的是().
A、
for(i = 1; i > 10; i++)
B、
static int a;
while (a)
C、
int s = 6;
do {
s -= 2;
} while (s);
D、
int s = 6;
m:if (s < 100)
exit(0);
else s -= 2;
goto m:
答案:C
第17题
有下列程序段:
int n,t=1,s=0;
scanf("%d",&n) ;
do{s=s+t ;t=t-2 ;}while(t !=n) ;
为使此程序段不陷入死循环,从键盘输入的数据应该是().
A:任意正奇数
B:任意负偶数
C:任意正偶数
D:任意负奇数
答案:D
第18题
以下正确的函数形式是().
A:
double fun(int x, int y)
{
z = x + y; return z;
}
B:
fun(int x, y)
{
int z; return z;
}
C:
fun(x, y)
{
int x, y; double z; z = x + y; return z;
}
D:
double fun(int x, int y)
{
double z; z = x + y; return z;
}
答案:D
第19题
C程序的基本结构单位是().
A:文件
B:语句
C:函数
D:表达式
答案:C
第20题
C语言程序中,若对函数类型未加显式说明,则函数的隐含说明类型为().
A:void
B:double
C:int
D:char
答案:C
第21题
表达式18/4*sqrt(4.0)/8值的数据类型为().
A:int
B:float
C:double
D:不确定
答案:C
第22题
以下叙述中不正确的是().
A:预处理命令行都必须以#号开始
B:在程序中凡是以#号开始的语句行都是预处理命令行
C:C程序在执行过程中对预处理命令行进行处理
D:以下是正确的宏定义 #define IBM_PC
答案:C
第23题
下面程序中的错误的行是().
(1)main()
(2){
(3)int a[3]={1};
(4)int i;
(5)scanf("%d",&a);
(6)for(i=1;i<3;i++) a[0]=a[0]+a[i];
(7)printf("%f\n",a[0]);
(8)}
A:3
B:6
C:7
D:5
答案:D
第24题
以下程序的输出结果是().
#include
f(int b[ ],int m,int n)
{ int i,s=0;
for(i=m;i
A:10
B:18
C:8
D:15
答案:A
第25题
下列数组说明中,正确的是().
A:static char str[]="China";
B:static char str[]; str="China";
C:static char str1[5],str2[]={"China"}; str1=str2;
D:static char str1[],str2[];str2={"China"}; strcpy(str1,str2);
答案:A
第26题
当调用函数时,实参是一个数组名,则向函数传送的是().
A:数组的长度
B:数组的首地址
C:数组每一个元素的地址
D:数组每个元素中的值
答案:B
第27题
int a[10];合法的数组元素的最小下标值为().
A:10
B:9
C:1
D:0
答案:D
第28题
设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是().
A:p=1;
B:*q=2;
C:q=p;
D:*p=5;
答案:D
第29题
char *match(char c)是().
A:函数定义的头部
B:函数预说明
C:函数调用
D:指针变量说明
答案:A
第30题
若有下列定义和语句,则对a数组元素的非法引用是().
int a[2][3], (*pt)[3]; pt=a;
A:pt[0][0]
B:*(pt+1)[2]
C:*(pt[1]+2)
D:*(a[0]+2)
答案:B
第1题
题目: 以下程序按每行5个数的格式输出1至n范围内能被7或17 整除的整数,并求出其和。
如输入:50 则输出:
7 14 17 21 28
34 35 42 49
Sum=247
#include
void main()
{
int i, n, ct = 0, sum = 0;
scanf("%d", &n);
for (i = 1; i <= n; i++)
if (【 ? 】)
{
printf("%d\t", i);
【 ? 】;
ct++;
if (【 ? 】)
printf("\n");
}
printf("\nSum=%d\n", sum);
}
答案:
=======(答案1)=======
i%7==0 || i%17==0
=======(答案2)=======
sum+=i
=========或=========
sum=sum+i
=======(答案3)=======
ct%5==0
第2题
功能:将一个数组中的元素按逆序存放。
#include
#define N 7
main()
{
static int a[N] = { 12,9,16,5,7,2,1 }, k, s;
printf("\n the origanal array:\n");
for (k = 0; k < N; k++)
printf("%4d", a[k]);
for (k = 0; k < N / 2; 【 ? 】)
{
s = a[k];
【 ? 】;
【 ? 】;
}
printf("\n the changed array:\n");
for (k = 0; k < N; k++)
【 ? 】 ("%4d", a[k]);
}
答案:
=======(答案1)=======
k++
=========或=========
k= k + 1
=========或=========
k+=1
=========或=========
++k
=======(答案2)=======
a[k]=a[N-k-1]
=========或=========
a[k]=a[N-1-k]
=========或=========
a[k]=a[6-k]
=========或=========
*(a+k)=*(a+N-k-1)
=========或=========
*(a+k)=*(a+N-1-k]
=========或=========
a[k]=a[-1+N-k]
=========或=========
a[k]=a[-1-k+N]
=========或=========
a[k]=a[-k-1+N]
=========或=========
a[k]=a[-k+N-1]
=========或=========
*(a+k)=*(a+N-k-1)
=========或=========
a[6-k]=s
=======(答案3)=======
a[N-k-1]=s
=========或=========
a[N-1-k]=s
=========或=========
a[6-k]=s
=========或=========
a[N -k -1]=s
=========或=========
*(a +N -k -1)=s
=======(答案4)=======
printf
第1题
功能:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果
为两位数,9*??的结果为3位数。求??代表的两位数,及809*??
后的结果。
#include
output(long b, long i)
{
printf("\n%ld=800*%ld+9*%ld+1\n", b, i, i);
printf("??代表的两位数: %d", i);
printf("\n809*??后的结果:%d", b);
getch();
}
main()
{
long int a; b; i;
a = 809;
for (i = 10; i < 100, i++)
{
b = i / a + 1;
if (b >= 1000 && b <= 10000 && 8 * i < 100 && 9 * i >= 100)
output(b, i);
}
}
答案:
=======(答案1)=======
long int a,b,i;
=======(答案2)=======
for(i=10;i<100;i++)
=========或=========
for(i=10;i<=99;i++)
=======(答案3)=======
b=i*a+1;
=========或=========
b=a*i+1;
第2题
题目:编写函数fun求整数n以内(不包括n)3的倍数之和,
在main函数中由键盘输入n值,并输出运算结果。
例如:若n值为500时,则结果为41583。
请改正程序中的错误,使它能得出正确的结果。
#include
long fun(int n)
{
int i;
int s = 0;
for (i = 1; i < n; i++)
if (i % 3 = 0)
s += i;
return s;
}
void main()
{
int n;
long int result;
printf("Enter n: ");
scanf("%d", &n);
result = fun(n);
printf("Result=%ld\n", result);
}
答案:
=======(答案1)=======
long int s=0;
=========或=========
long s=0;
=======(答案2)=======
if(i%3==0)
第1题
功能:求一组数中大于平均值的数的个数。
例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函
数值为3。
#include
int fun(int a[], int n)
{
/**********Program**********/
//要求:用for,循环变量用i,平均值用ave,个数统计用k,和用s
/********** End **********/
}
main()
{
int a[10] = { 1,3,6,9,4,23,35,67,12,88 };
int y;
y = fun(a, 10);
printf("y=%d\n", y);
}
答案:
int i, k = 0;
float s = 0, ave;
for (i = 0; i < n; i++)
s += a[i];
ave = s / n;
printf("%f ", ave);
for (i = 0; i < n; i++)
if (a[i] > ave)k++;
return k;
第2题
题目:输入一个正整数repeat (0
#include
void main()
{
int repeat, ri;
double x, y;
scanf("%d", &repeat);
for (ri = 1; ri <= repeat; ri++)
{
scanf("%lf", &x);
/**********Program**********/
/********** End **********/
printf("f(%.2f) = %.1f\n", x, y);
}
}
答案:
if (x != 0)
y = 1 / x;
else
y = 0;
若有错误或疑问,欢迎评论区留言讨论。