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++;
}
若有错误或疑问,欢迎评论区留言讨论。