收集了一些经典C语言计算机二级和C语言期末考试题库
整理不易,大家点赞收藏支持一下
祝大家计算机二级和期末考试都高分过
系列文章:
C语言计算机二级/C语言期末考试 刷题(一)
C语言计算机二级/C语言期末考试 刷题(二)
C语言计算机二级/C语言期末考试 刷题(三)
C语言计算机二级/C语言期末考试 刷题(四)
C语言计算机二级/C语言期末考试 刷题(五)
C语言计算机二级/C语言期末考试 刷题(六)
C语言计算机二级/C语言期末考试 刷题(七)
C语言计算机二级/C语言期末考试 刷题(八)
目录
一、填空 共20题 (共计20分)
二、判断 共10题 (共计10分)
三、单选 共20题 (共计20分)
四、程序填空 共2题 (共计10分)
五、程序改错 共2题 (共计20分)
六、程序设计 共2题 (共计20分)
第1题
C语言中的字符变量用保留字【1】来说明.
=======(答案1)=======
char
第2题
c语言表达式 5>2>7>8 的值是【1】.
=======(答案1)=======
0
第3题
int x=2,y=3,z=4; 则表达式x+y&&z的值为【1】.
=======(答案1)=======
1
第4题
int x=2;z=-x+++1; 则x的值为【1】.
=======(答案1)=======
3
第5题
已知x=3,y=2,则表达式x*=y+8的值为【1】.
=======(答案1)=======
30
第6题
当a=1,b=2,c=3时,执行以下程序段后c=【1】.
if (a>c)
b=a;
a=c;
c=b;
=======(答案1)=======
2
第7题
若先后输入country和side,则下列程序运行结果为【1】.
main()
{
char s1[40],s2[20];
int i=0,j=0;
scanf("%s",s1);
scanf("%s",s2);
while(s1[i]!='\0') i++;
while(s2[j]!='\0') s1[i++]=s2[j++];
s1[i]='\0';
printf("%s\n",s1);
}
=======(答案1)=======
countryside
第8题
若所用变量都已正确定义,请填写以下程序段的输出结果【1】.
s=7;
do s -= 2;
while (s==0);
printf("%d\n",s);
=======(答案1)=======
5
第9题
以下do-while语句中循环体的执行次数是【1】.
a=10;
b=0;
do {
b+=2;
a-=2+b;
} while (a>=0);
=======(答案1)=======
3
第10题
若所用变量均已正确定义,则执行下面程序段后的 值是【1】.
for(i=0 ; i<2 ; i++ )
printf("YES");
printf("\n");
=======(答案1)=======
YESYES
第11题
设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【1】.
for(i=0,j=10; i<=j; i++,j--)
k=i+j;
=======(答案1)=======
10
第12题
设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是【1】.
for (x=0,y=0; y!=123&&x<3; x++)
scanf ("%d",&y);
=======(答案1)=======
3
第13题
以下程序的输出结果为【1】.
#include "stdio.h"
void main()
{
int a;
for(a=0;a<10;a++);
printf("%d",a);
}
=======(答案1)=======
10
第14题
以下程序计算数n的阶乘.
main()
{
int i,n; long np;
scanf("%d",&n);
np=【1】;
for(i=2;i<=n;i++)
np=np*i;
printf(("n=%d,n!=%ld\n",n,np);
}
=======(答案1)=======
1
第15题
static int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};其中a[1][2]的值为【1】.
=======(答案1)=======
6
第16题
若有以下数组a,数组元素:a[0]~a[9],其值为
9 4 12 8 2 10 7 5 1 3
该数组可用的最大下标值是【1】.
=======(答案1)=======
9
第17题
若有定义:char s[ ]="china";
则VC++系统为数组s开辟【1】个字节的内存单元.
=======(答案1)=======
6
第18题
程序运行结果是【1】.
main()
{ int oddadd(int pt[ ],int n);
static int a[10]={1,2,3,4,5,6,7,8,9,10};
int total;
total=oddadd(a+1,9);
printf("%d\n",total);
}
oddadd(int pt[ ],int n)
{ int i,sum=0;
for(i=0;i
=======(答案1)=======
30
第19题
在C程序中,指针变量的值增1,表示指针变量指向下
一个存储单元,指针变量中具体增加的字节数由系统
自动根据指针变量的【1】决定.
=======(答案1)=======
所指对象数据类型
第20题
"下列程序的输出结果是【1】:
#include
void change(int k[ ])
{ k[0]=k[5]; }
void main()
{ int
x[10]={1,2,3,4,5,6,7,8,9,10},n=0;
while(n<=4)
{ change(&x[n]); n++; }
for(n=0;n<5;n++)
printf("%d ",x[n]);
printf("\n");
}
=======(答案1)=======
6 7 8 9 10
第1题
c程序总是从程序的第一条语句开始执行.
答案:N
第2题
C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的.
答案:Y
第3题
语句scanf("%7.2f",&a);是一个合法的scanf函数.
答案:N
第4题
表达式 (j=3, j++) 的值是4.
答案:N
第5题
a=(b=4)+(c=6) 是一个合法的赋值表达式.
答案:Y
第6题
若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28.
答案:N
第7题
int a=1,b=2,c=3;if(a>b)a=b;if(a>c)a=c;则a的值为3.
答案:N
第8题
若有int ⅰ=10, j=0;则执行完语句
if (j=0)ⅰ+ +; else ⅰ- -; ⅰ的值为11.
答案:N
第9题
while 和for循环都是先判断表达式的值,后执行循环体语句.
答案:Y
第10题
数组的特点是,数组元素排列有序且数据类型相同.
答案:Y
第1题
以下叙述中正确的是().
A:构成C程序的基本单位是函数
B:可以在一个函数中定义另一个函数
C:main()函数必须放在其它函数之前
D:所有被调用的函数一定要在调用之前进行定义
答案:A
第2题
C语言执行程序的开始执行点是().
A:程序中第一条可以执行语言
B:程序中第一个函数
C:程序中的main函数
D:包含文件中的第一个函数
答案:C
第3题
C语言程序中必须有的函数是().
A:#include "stdio.h"
B:main
C:printf
D:scanf
答案:B
第4题
以下对C语言函数的描述中,正确的是().
A:C程序必须由一个或一个以上的函数组成
B:C函数既可以嵌套定义又可以递归调用
C:函数必须有返回值,否则不能使用函数
D:C程序中有调用关系的所有函数必须放在同一个程序文件中
答案:A
第5题
以下关于long、int和short类型数据占用内存大小的叙述中正确的是().
A:均占4个字节
B:根据数据的大小来决定所占内存的字节数
C:由用户自己定义
D:由C语言编译系统决定
答案:D
第6题
下列标识符中,不合法的C语言用户自定义标识符是().
A:printf
B:enum
C:_
D:sin
答案:B
第7题
下列字符序列中,是C语言保留字的是().
A:sizeof
B:include
C:scanf
D:sqrt
答案:A
第8题
以下标识符中,不能作为合法的C用户定义标识符的是().
A:putchar
B:_double
C:_123
D:INT
答案:A
第9题
以下正确的字符串常量是().
A:"\\\"
B:'abc'
C:OlympicGames
D:'A'
答案:A
第10题
若有说明语句:char c='\72';则变量c().
A:包含1个字符
B:包含2个字符
C:包含3个字符
D:说明不合法,c的值不确定
答案:A
第11题
下列变量说明语句中,正确的是().
A:char:a b c;
B:char a;b;c;
C:int x;z;
D:int x,z;
答案:D
第12题
char a[]="This is a program.";输出前5个字符的语句是().
A:printf("%.5s",a);
B:puts(a);
C:printf("%5s",a);
D:a[5*2]=0;puts(a);
答案:A
第13题
printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列,如果字符串长度大于5,则输出按方式().
A:从左起输出该字符串,右补空格
B:按原字符长从左向右全部输出
C:右对齐输出该字串,左补空格
D:输出错误信息
答案:B
第14题
putchar函数可以向终端输出一个().
A:整型变量表达式值
B:实型变量值
C:字符串
D:字符或字符型变量值
答案:D
第15题
下列程序段的输出结果为().
float x=213.82631;
printf("%3d",(int)x);
A:213.82
B:213.83
C:213
D:3.8
答案:C
第16题
已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'.执行语句printf("%d,%d",c1,c2-2);后,输出结果是().
A:A,B
B:A,68
C:65,66
D:65,68
答案:C
第17题
以下程序段的执行结果是().
double x;x=218.82631; printf("%-6.2e\n",x);
A:输出格式描述符的域宽不够,不能输出
B:输出为21.38e+01
C:输出为2.2e+02
D:输出为-2.14e2
答案:C
第18题
C语言能正确处理的指数是().
A:8.5e4288
B:e-32
C:123000000000
D:4.5e-5.6
答案:C
第19题
设a为整型变量,初值为12,执行完语句a+=a-=a*a后,a的值是().
A:552
B:144
C:264
D:-264
答案:D
第20题
先用语句定义字符型变量c,然后要将字符a赋给c,则下列语句中正确的是().
A:c='a';
B:c="a";
C:c="97";
D:C='97'
答案:A
第1题
功能:将一个字符串中下标为m的字符开始的全部字符复制成为另
一个字符串。
#include
void strcopy(char* str1, char* str2, int m)
{
char* p1, * p2;
【 ? 】;
p2 = str2;
while (*p1)
【 ? 】;
【 ? 】;
}
main()
{
int m;
char str1[80], str2[80];
gets(str1);
scanf("%d", &m);
【 ? 】;
puts(str1);
puts(str2);
}
答案:
=======(答案1)=======
p1= str1 + m
=======(答案2)=======
*p2++=*p1++
=========或=========
*(p2++)=*(p1++)
=========或=========
*p2=*p1,p2++,p1++
=========或=========
*p2=*p1++,p2++
=========或=========
*p2++=*p1,p1++
=======(答案3)=======
*p2='\0'
=========或=========
*p2=0
=========或=========
*p2=NULL
=======(答案4)=======
strcopy(str1,str2,m)
第2题
功能:下面的程序是求1!+3!+5!+……+n!的和。
#include
main() {
long int f, s;
int i, j, n;
【 ? 】;
scanf("%d", &n);
for (i = 1; i <= n; 【 ? 】)
{
f = 1;
for (j = 1; 【 ? 】; j++)
【 ? 】;
s = s + f;
}
printf("n=%d,s=%ld\n", n, s);
}
答案:
=======(答案1)=======
s=0
=======(答案2)=======
i+=2
=========或=========
i=i+2
=========或=========
i++,i++
=======(答案3)=======
j<=i
=========或=========
i+1>j
=========或=========
i>=j
=========或=========
j
第1题
功能:利用二维数组输出如图所示的图形。
*******
*****
***
*
***
*****
*******
#include
#include
#define N = 7
main()
{
char a[N][N];
int i, j, z;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
a[i][j] = ;
z = 0;
for (i = 0; i < (N + 1) / 2; i++)
{
for (j = z; j < N - z; j++)
a[i][j] = '*';
z = z + 1;
}
z = 0;
for (i = (N + 1) / 2; i < N; i++)
{
z = z - 1;
for (j = z; j < N - z; j++)
a[i][j] = '*';
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
printf("%d", a[i][j]);
printf("\n");
}
}
答案:
=======(答案1)=======
#define N 7
=======(答案2)=======
a[i][j]=' ';
=======(答案3)=======
z=z-1;
=========或=========
z--;
=========或=========
z=-1+z;
=======(答案4)=======
printf("%c",a[i][j]);
第2题
题目:下列给定程序中函数fun的功能是:
计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。
其中x和y的值不相等,z和y的值不相等。
例如:当x的值为9,y的值为11,z的值为15时,函数值为-3.50。
#include
#include
#include
#define FU(m,n) ((m/n))
float fun(float a, float b, float c)
{
float value;
value = FU(a + b, a - b) + FU(c + b, c - b);
Rteurn(Value);
}
main()
{
float x, y, z, sum;
printf("Input x y z: ");
scanf("%f%f%f", &x, &y, &z);
printf("x=%f,y=%f,z=%f\n", x, y, z);
if (x == y || y == z)
{
printf("Data error!\n");
exit(0);
}
sum = fun(x, y, z);
printf("The result is : %5.2f\n", sum);
}
答案:
=======(答案1)=======
#define FU(m,n) (m)/(n)
=======(答案2)=======
return (value);
第1题
题目:编写函数void fun(char *tt,int pp[]),统计在tt所指的字符串中'a'到'z'26个
小写字母各自出现的次数,并依次放在pp所指的数组中。
例如:当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:
3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
#include
#include
void fun(char* tt, int pp[])
{
/**********Program**********/
/********** End **********/
}
void main()
{
char aa[1000];
int bb[26], k;
printf("\nPlease enter a char string:");
scanf("%s", aa);
fun(aa, bb);
for (k = 0; k < 26; k++)
printf("%d ", bb[k]);
printf("\n");
}
答案:
int i;
for (i = 0; i < 26; i++)
pp[i] = 0; /*初始化pp数组各元素为0*/
for (; *tt != '\0'; tt++)
if (*tt >= 'a' && *tt <= 'z')
pp[*tt - 'a']++;
第2题
#include
double sum(int n)
{
/**********Program**********/
/********** End **********/
}
main()
{
int n;
scanf("%d", &n);
printf("sum=%f\n", sum(n));
}
答案:
float s = 0;
int i, k = 1;
for (i = 1; i <= n; i++)
{
s = s + k * 1.0 / i;
k = -k;
}
return(s);
若有错误或疑问,欢迎评论区留言讨论。