> 文章列表 > C语言计算机二级/C语言期末考试 刷题(二)

C语言计算机二级/C语言期末考试 刷题(二)

C语言计算机二级/C语言期末考试 刷题(二)

收集了一些经典C语言计算机二级和C语言期末考试题库

整理不易,大家点赞收藏支持一下

祝大家计算机二级和期末考试都高分过

系列文章:

C语言计算机二级/C语言期末考试 刷题(一)

目录

一、填空   共25题 (共计25分)

二、单选   共40题 (共计40分)

三、程序填空   共1题 (共计10分)

四、程序改错   共1题 (共计10分)

五、程序设计   共1题 (共计15分)


一、填空   共25题 (共计25分)

第1题 (1.0分)

C语言中的字符变量用保留字【1】来说明.

=======(答案1)=======

char

第2题 (1.0分)

下列程序的输出结果是【1】. 

#include<stdio.h>
void main()
{int i = 560, h, m;h = i / 60;m = i - 60 * h;printf("%d分钟<=>%d小时%d分钟\\n", i, h, m);
}

=======(答案1)=======

560分钟<=>9小时20分钟

第3题 (1.0分)

以下程序的输出结果为【1】.

#include "stdio.h"
main()
{int a = 010, j = 10;printf("%d,%d\\n", ++a, j--);
}

=======(答案1)=======

9,10

第4题 (1.0分)

int a=1,b=2;  c语言表达式(a&b)||(a|b) 的值是【1】

=======(答案1)=======

1

第5题 (1.0分)

下列程序的输出结果是【1】.

#include<stdio.h>
void main()
{int i = -200, j = 25;printf("%d %d", i, j);printf("i=%d,j=%d\\n", i, j);
}

=======(答案1)=======

-200 25i=-200,j=25

第6题 (1.0分)

以下程序运行结果是【1】.

#include<stdio.h>
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

第7题 (1.0分)

C语言的三种基本结构是【1】结构、选择结构、循环结构.

=======(答案1)=======

顺序

第8题 (1.0分)

为了避免嵌套条件语句的二义性,C语言规定else与其前面最近的并没有与其他else配过对的【1】语句配对.

=======(答案1)=======

if

第9题 (1.0分)

下面程序段中循环体的执行次数是【1】 .

a = 10;
b = 0;
do {b += 2;a -= 2 + b;
} while (a >= 0);

=======(答案1)=======

3

第10题 (1.0分)

下面程序的运行结果是【1】.       

#include<stdio.h>        
void main()
{int a, s, n, count;a = 2; s = 0; n = 1; count = 1;while (count <= 7){n = n * a;s = s + n;++count;}printf("s=%d", s);
}

=======(答案1)=======

s=254

第11题 (1.0分)

下面程序的运行结果是【1】

#include<stdio.h>
int a = 5; int b = 7;
void main()
{int a = 4, b = 5, c;c = plus(a, b);printf("A+B=%d\\n", c);
}int plus(int x, int y)
{int z;z = x + y;return(z);
}

=======(答案1)=======

A+B=9

第12题 (1.0分)

表达式pow(2.8,sqrt(fabs(x))值的数据类型为【1】.

=======(答案1)=======

double

第13题 (1.0分)

以下程序的输出结果是【1】 .

#include<stdio.h>
int f(int n)
{if (n == 1)return 1;else return f(n - 1) + 1;}void main()
{int i, j = 0;for (i = 1; i < 3; i++)j += f(i);printf("%d\\n", j);
}

=======(答案1)=======

3

第14题 (1.0分)

预处理命令行都必须以【1】号开始.

=======(答案1)=======

#

第15题 (1.0分)

下面程序的运行结果是【1】 .

#include<stdio.h>
void main()
{int x = 10;func(int x);func(x);printf("%d\\n", x);
}func(int x)
{x = 20;
}

=======(答案1)=======

10

第16题 (1.0分)

若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};,则初始化后,a[1][2]得到的初值是【1】  ,a[2][1]得到的初值是 【2】 .

=======(答案1)=======

0

=======(答案2)=======

6

第17题 (1.0分)

求字符串长度的库函数是【1】,只写函数名即可.

=======(答案1)=======

strlen

第18题 (1.0分)

在C语言中,二维数组元素在内存中的存放顺序是【1】.

=======(答案1)=======

按行优先存储

第19题 (1.0分)

执行语句char str[81]="abcdef";后,字符串str结束标志存储在str[【1】]

 (在括号内填写下标值)中.

=======(答案1)=======

6

第20题 (1.0分)

C语言中,数组元素的下标下限为【1】.

=======(答案1)=======

0

第21题 (1.0分)

程序运行时若依次输入25,3,40,则输出结果是【1】.

#include<stdio.h>
main()
{int* p1, * p2, * p3;int i, j, k, t;scanf("%d%d%d", &i, &j, &k);p1 = &i;p2 = &j;p3 = &k;if (*p1 < *p2){t = *p1; *p1 = *p2; *p2 = t;}if (*p1 < *p3){t = *p1; p1 = *p3; *p3 = t;}if (*p2 < *p3){t = *p2; *p2 = *p3; *p3 = t;}printf("%d\\n", *p2);
}

=======(答案1)=======

25

第22题 (1.0分)

在C程序中,只能给指针变量赋【1】值和【2】值.

=======(答案1)=======

地址

=========或=========

确定地址

=======(答案2)=======

NULL

第23题 (1.0分)

设char *s="\\ta\\017bc";则该指针变量s指向的字符串所占的字节数是【1】.

=======(答案1)=======

6

第24题 (1.0分)

设有如下宏定义:

#define SWAP(z, x, y) { z = x, x = y, y = z }

以下程序段通过宏调用实现变量A)b内容的交换.请填空将语句补充完整.

int a=5,b=16,c;SWAP(【1】 ,a,b);

=======(答案1)=======

c

第25题 (1.0分)

程序运行时若依次输入2,3,40,则输出结果是【1】.

#include<stdio.h>
main()
{int* p1, * p2, * p3;int i, j, k, t;scanf("%d%d%d", &i, &j, &k);p1 = &i;p2 = &j;p3 = &k;if (*p1 < *p2){t = *p1; *p1 = *p2; *p2 = t;}if (*p1 < *p3){t = *p1; *p1 = *p3; *p3 = t;}if (*p2 < *p3){t = *p2; *p2 = *p3; *p3 = t;}printf("%d\\n", *p1);
}

=======(答案1)=======

40

二、单选   共40题 (共计40分)

第1题 (1.0分)

C语言源程序文件经过C编译程序编译连接之后生成一个后缀为()的可执行文件. 

A:.cB:.objC:.exeD:.bas

答案:C

第2题 (1.0分)

在一个C程序中().

A:main函数必须出现在所有函数之前B:main函数可以在任何地方出现C:main函数必须出现在所有函数之后D:main函数必须出现在固定位置

答案:B

第3题 (1.0分)

以下叙述不正确的是().

A:一个C源程序可由一个或多个函数组成B:一个C源程序必须包含一个main()函数C:C程序的基本组成单位是函数D:在C程序中,注释说明只能位于一条语句的后面

答案:D

第4题 (1.0分)

C语言程序中必须有的函数是().

A:#include "stdio.h"B:mainC:printfD:scanf

答案:B

第5题 (1.0分)

任何一个C语言的可执行程序都是从()开始执行的.

A:程序中的第一个函数B:main()函数的入口处C:程序中的第一条语句D:编译预处理语句

答案:B

第6题 (1.0分)

下列运算符中是C语言关系运算符的是().

A:~B:!C:&D:!=

答案:D

第7题 (1.0分)

下列语句的结果是().

#include<stdio.h>
main()
{int j;j = 3;printf("%d,", ++j);printf("%d", j++);
}
A:3,3B:3,4C:4,3D:4,4

答案:D

第8题 (1.0分)

以下程序的输出结果为().

#include<stdio.h>
main()
{int i = 010, j = 10;printf("%d,%d\\n", ++i, j--);}
A:11,10B:9,10C:010,9D:10,9

答案:B

第9题 (1.0分)

已知int a;int b;float c;double d;,

则表达式a*b==c-d结果为()型.

A:DoubleB:intC:floatD:char

答案:B

第10题 (1.0分)

设以下变量均为int类型,则值不等于7的表达式是().

A:(x=y=6,x+y,x+1)B:(x=y=6,x+y,y+1)C:(x=6,x+1,y=6,x+y)D:(y=6,y+1,x=y,x+1)

答案:C

第11题 (1.0分)

已知year为整型变量,不能使表达式(year%4==0&&year%100!=0)||year%400==0的值为"真"的数据是().

A:1990B:1992C:1996D:2000

答案:A

第12题 (1.0分)

若以下变量均是整型,且num=sum=7;则计算表达式sum=num++,sum++,++num后sum的值为().

A:7B:8C:9D:10

答案:B

第13题 (1.0分)

对于条件表达式(M)?(a++):(a--),其中表达式M等价于().

A:M==0B:M==-1C:M!=0D:M!=1

答案:C

第14题 (1.0分)

以下程序的输出结果是().

#include<stdio.h>
main()
{float x = 3.6;int i;i = (int)x;printf("x=%f,i=%d\\n", x, i);
}
A:x=3.600000,i=4B:x=3,i=3C:x=3.600000,i=3D:x=3 i=3.600000

答案:C

第15题 (1.0分)

printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列,如果字符串长度大于5,则输出按方式().

A:从左起输出该字符串,右补空格B:按原字符长从左向右全部输出C:右对齐输出该字串,左补空格D:输出错误信息

答案:B

第16题 (1.0分)

下面的程序().

#include <stdio.h>
void main()
{int x = 3, y = 0, z = 0;if (x = y + z)printf(" * * * *");elseprintf("# # # #");
}
A:有语法错误不能通过编译B:输出 * * * *C:可以通过编译,但是不能通过连接,因而不能运行D:输出# # # #

答案:D

第17题 (1.0分)

如下程序段的输出结果是().

#include <stdio.h>
void main()
{int n = 9;while (n > 6){n--;printf("%d", n);}
}
A:987B:876C:8765D:9876

答案:B

第18题 (1.0分)

语句while(!E);中的表达式!E等价于().

A:E==0B:E!=1C:E!=0D:E==1

答案:A

第19题 (1.0分)

有定义语句:int a =1 ,b =2,c =3,x;,则以下选项中各程序段执行后,x的值不等于3的是().

#include <stdio.h>
A:
if (c < a) x = 1;
else if(b < a) x = 2;
else x = 3;B:
if (a < 3) x = 3;
else if(a < 2) x = 2;
else x = 1;C:
if (a < 3) x = 3;
if (a < 2) x = 2;
if (a < 1) x = 1;D:
if (a < b) x = b;
if (b < c) x = c;
if (c < a) x = a;

答案:C

第20题 (1.0分)

以下程序中,while循环的循环次数是().

main()
{int i = 0;while (i < 10){if (i < 1) continue;if (i == 5) break;i++;}
}
A:1B:4C:6D:死循环,不能确定次数

答案:D

第21题 (1.0分)

有以下程序段

int n = 0, p;
do
{scanf("%d", &p);n++;
} while (p != 12345 && n < 3);

此处do-while循环的结束条件是().

A:p的值不等于12345并且n的值小于3B:p的值等于12345并且n的值大于等于3C:p的值不等于12345或者n的值小于3D:p的值等于12345或者n的值大于等于3

答案:D

第22题 (1.0分)

结构化程序的三种控制结构分别是().

A:循环、分支、递归B:顺序、循环、嵌套C:循环、递归、选择D:顺序、选择、循环

答案:D

第23题 (1.0分)

为了避免在嵌套的条件语句 if-else 中产生二义性,C语言规定:else子句总是与()配对.

A:缩排位置相同的ifB:其之前最近的ifC:其之后最近的ifD:同一行上的if

答案:B

第24题 (1.0分)

在C语言中,if语句后的一对原括号中,用以决定分支的流程的表达式().

A:只能用逻辑表达式B:只能用关系表达式C:只能用逻辑表达式或关系表达式D:可用任意表达式

答案:D

第25题 (1.0分)

int a = 3, b = 2, c = 1;
if (a > b > c)a = b;
else a = c;

则a的值为().

A:3B:2C:1D:0

答案:C

第26题 (1.0分)

在C语言中,调用函数除函数名外,还必须有().

A:函数预说明B:实际参数C:()D:函数返回值

答案:C

第27题 (1.0分)

以下说法中正确的是().

A:宏替换是在程序编译时进行的B:函数调用是在程序编译时进行的C:宏替换时,如果实参是表达式,应先求表达式的值,再替换D:函数调用时,如果实参是表达式,应将表达式的值传递给形参

答案:D

第28题 (1.0分)

以下正确的函数形式是().

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

第29题 (1.0分)

以下叙述中不正确的是().

A:函数中的自动变量可以赋初值,每调用一次,赋一次初值B:在调用函数时,实参和对应形参的类型要一致C:全局变量的隐含类别是自动存储类别D:函数形参可以说明为register变量

答案:C

第30题 (1.0分)

凡是函数中未指定存储类别的局部变量,其隐含的存储类别为().

A:自动(auto)B:静态(static)C:外部(extern)D:寄存器(register)

答案:A

第31题 (1.0分)

以下程序的输出结果是().

#include <stdio.h>
f(int b[], int m, int n)
{int i, s = 0;for (i = m; i < n; i = i + 2) s = s + b[i];return s;
}void main()
{int x, a[] = { 1,2,3,4,5,6,7,8,9 };x = f(a, 3, 7);printf("%d\\n", x);
}
A:10B:18C:8D:15

答案:A

第32题 (1.0分)

如下程序的输出结果是().

#include<stdio.h>
void main()
{int a[3][3] = { {1,2},{3,4},{5,6} }, i, j, s = 0;for (i = 1; i < 3; i++)for (j = 0; j < i; j++)s += a[i][j];printf("%d\\n", s);
}
A:14B:19C:20D:21

答案:A

第33题 (1.0分)

假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是().

A:3B:6C:10D:20

答案:D

第34题 (1.0分)

若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是().

A:&t[3][2]B:t[3]C:&t[1]D:t[2]

答案:D

第35题 (1.0分)

若二维数组a有m列,则在a[i][j]前的元素个数为().

A:j*m+iB:i*m+jC:i*m+j-1D:i*m+j+1

答案:B

第36题 (1.0分)

以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是().

A:char s[10]="abcdefg";B:char t[]="abcdefg",*s=t;C:char s[10];s="abcdefg";D:char s[10];strcpy(s,"abcdefg");

答案:C

第37题 (1.0分)

经过下列的语句 int j,a[10],*p;定义后,下列语句中合法的是().

A:p=p+2;B:p=a[5];C:p=a[2]+2;D:p=&(j+2);

答案:A

第38题 (1.0分)

char *match(char c)是().

A:函数定义的头部B:函数预说明C:函数调用D:指针变量说明

答案:A

第39题 (1.0分)

若有下列定义和语句,则对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

第40题 (1.0分)

若有语句int *point,a=4;和 point=&a;下面均代表地址的一组选项是().

A:a,point,*&aB:&*a,&a,*pointC:*&point,*point,&aD:&a,&*point,point

答案:D

三、程序填空   共1题 (共计10分)

第1题 (10.0分)

题目:以下程序的功能是打印以下图形。
#include<stdio.h>
int main()
{static char a[5][9];int i, j;for (i = 0; i < 5; i++)for (j = i; 【 ? 】; j++)a[i][j] = '*';for (i = 0; i < 5; i++){for (j = 0; j < 9; j++)printf("%c", 【 ? 】);【 ? 】;}
}

答案:

=======(答案1)=======
j< i + 5
=========或=========
i + 5 >j=======(答案2)=======
a[i][j]=======(答案3)=======
printf("\\n")

四、程序改错   共1题 (共计10分)

第1题 (10.0分)

功能:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入。例如:若k的值为500,则函数值为4622。
#include <stdio.h>
int fun(int k)
{int m = 0, mc = 0;while ((k >= 2) || (mc < 10)){if ((k % 13 = 0) || (k % 17 = 0)){m = m + k;mc++;}k++;}return ;
}int main()
{printf("%d\\n", fun(500));
}

答案:

=======(答案1)=======
while ((2<=k)&&(mc<10))
=========或=========
while ((k>=2)&&(mc<10))
=========或=========
while ((2<=k)&&(mc<=9))
=========或=========
while ((k>=2)&&(mc<=9))=======(答案2)=======
if(!(k%17!=0||k%13!=0 ))
=========或=========
if(k%13==0||k%17==0)=======(答案3)=======
k--;
=========或=========
k=k-1;
=========或=========
k-=1;=======(答案4)=======
return  m;
=========或=========
return(m);

五、程序设计   共1题 (共计15分)

第1题 (15.0分)

题目:编程从键盘输入一个字符串和一个字符,统计该字符串中指定字符出现的次数。
#include <stdio.h>
#include <string.h>
void main()
{char str[100], c;int i = 0, count = 0;printf("请输入一个字符串:");gets(str);printf("请输入指定的查找字符:");scanf("%c", &c);/**********Program**********//**********  End  **********/printf("%d\\n", count);
}

答案:

while (str[i])//该循环扫描字符数组
{if (str[i] == c)count++;i++;
}

若有错误或疑问,欢迎评论区留言讨论。

英语口语听力