收集了一些经典C语言计算机二级和C语言期末考试题库
整理不易,大家点赞收藏支持一下
祝大家计算机二级和期末考试都高分过
系列文章:
目录
一、填空 共10题 (共计10分)
1.
以下程序的输出结果是【1】.
#include<stdio.h>
void main()
{ char s[ ]="abcdef";
s[3]='\0';
printf("%s\n",s); }
=======(答案1)=======
abc
2.
C语言中,数组元素的最小下标为【1】.
=======(答案1)=======
0
3.
复制字符串的库函数是【1】,只写函数名即可.
=======(答案1)=======
strcpy
4.
以下程序可求出所有水仙花数(提示:所谓水仙花数是指一个3位正整数,其各位数字的立方之和等于该正整数.如407=4*4*4+0*0*0+7*7*7,故407是一个水仙花数).请填空.
#include<stdio.h>
void main()
{ int x,y,z,a[8],m,i=0;
printf ("the special number are(in the arrange of 1000):\n");
for(【1】;m++)
{ x=m/100;
y= 【2】;
z=m%10;
if(x*100+y*10+z= =x*x*x+y*y*y+z*z*z)
{【3】;i++ ;}
}
for(x=0;x<i;x++)
printf("%6d",a[x]);
}
=======(答案1)=======
m=100;m<1000
=======(答案2)=======
m/10%10
=========或=========
m%100/10
=========或=========
(m-m/100*100)/10
=========或=========
m/10-m/100*10
=======(答案3)=======
a[i]=m
5.
C语言中,数组元素的下标下限为【1】.
=======(答案1)=======
0
6.
合并字符串的库函数是【1】,只写函数名即可.
=======(答案1)=======
strcat
7.
下列程序的输出结果是【1】 .
#define N 3
#define Y(n) ((N+1)*n)
void main()
{
printf("%d\n", 2 * (N + Y(5 + 1)));
}
=======(答案1)=======
Y(n)=((N+1)*n)=4*5+1=21
2*(N+Y(5+1))=2*(3+21)=48
8.
下列程序的输出结果是【1】 .
#define N 20
fun(int a[], int n, int m)
{
int i, j;
for (i = m; i > n; i--)
a[i + 1] = a[i];
}
void main()
{
int i, a[N] = { 1,2,3,4,5,6,7,8,9,10 };
fun(a, 2, 9);
for (i = 0; i < 5; i++)
printf("%d", a[i]);
}
=======(答案1)=======
1 2 3 4 4
9.
执行语句char str[81]="abcdef";后,字符串str结束标志存储在str[【1】]
(在括号内填写下标值)中.
=======(答案1)=======
6
10.
若有定义:char s[ ]="china";
则VC++系统为数组s开辟【1】个字节的内存单元.
=======(答案1)=======
6
二、单选 共20题 (共计20分)
第1题
以下不能对二维数组a进行正确初始化的语句是().
A:int a[2][3]={0};
B:int a[][3]={{1,2},{0}};
C:int a[2][3]={{1,2},{3,4},{5,6}};
D:int a[][3]={1,2,3,4,5,6};
答案:C
第2题
在C语言中,引用数组元素时,其数组下标的数据类型允许是().
A:整型常量
B:整型表达式
C:整型常量或整型表达式
D:任何类型的表达式
答案:C
第3题
当调用函数时,实参是一个数组名,则向函数传送的是().
A:数组的长度
B:数组的首地址
C:数组每一个元素的地址
D:数组每个元素中的值
答案:B
第4题
假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是().
A:3
B:6
C:10
D:20
答案:D
第5题
下列定义数组的语句中不正确的是().
A:static int a[2][3]={1,2,3,4,5,6};
B:static int a[2][3]={{1},{4,5}};
C:static int a[][3]={{1},{4}};
D:static int a[][]={{1,2,3},{4,5,6}};
答案:D
第6题
设有数组定义: char array [ ]="China"; 则数组 array所占的空间为().
A:4个字节
B:5个字节
C:6个字节
D:7个字节
答案:C
第7题
若有说明 int a[3][4];则对a数组元素的正确引用是().
A:a[2][4]
B:a[1,3]
C:a[1+1][0]
D:a(2)(1)
答案:C
第8题
若有
char s1[]="abc",s2[20],*t=s2;gets(t);
则下列语句中能够实现当字符串s1大于字符串s2时,输出s2的语句是().
A:if(strcmp(s1,s1)>0)puts(s2);
B:if(strcmp(s2,s1)>0)puts(s2);
C:if(strcmp(s2,t)>0)puts(s2);
D:if(strcmp(s1,t)>0)puts(s2);
答案:D
第9题
若有说明:int a[3][4];则数组a中各元素().
A:可在程序的运行阶段得到初值0
B:可在程序的编译阶段得到初值0
C:不能得到确定的初值
D:可在程序的编译或运行阶段得到初值0
答案:D
第10题
以下不能正确进行字符串赋初值的语句是().
A:char str[5]="good!";
B:char str[]="good!";
C:char *str="good!";
D:char str[5]={'g','o','o','d',0};
答案:A
第11题
若有说明: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
第12题
下列语句中,不正确的是().
A:static char a[2]={1,2};
B:static int a[2]={'1','2'};
C:static char a[2]={'1','2','3'};
D:static char a[2]={'1'};
答案:C
第13题
已定义两个字符数组a,b,则以下正确的输入格式是().
A:scanf("%s%s", a, b);
B:get(a, b);
C:scanf("%s%s", &a, &b);
D:gets("a"),gets("b");
答案:A
第14题
以下数组定义中不正确的是().
A:int a[2][3];
B:int b[][3]={0,1,2,3};
C:int c[100][100]={0};
D:int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
答案:D
第15题
在C语言中,一维数组的定义方式为:类型说明符 数组名().
A:[整型常量表达式]
B:[整型表达式]
C:[整型常量或整型表达式]
D:[整型常量]
答案:A
第16题
以下程序中函数sort()的功能是对数组a中的数据进行由大到小的排序.
#include<stdio.h>
void sort(int a[], int n)
{
int i, j, t;
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
if (a[i] < a[j])
{
t = a[i]; a[i] = a[j]; a[j] = t;
}
}
void main()
{
int aa[10] = { 1,2,3,4,5,6,7,8,9,10 }, i;
sort(&aa[3], 5);
for (i = 0; i < 10; i++)
printf("%d,", aa[i]);
printf("\n");
}
程序运行后的输出结果是().
A:1,2,3,4,5,6,7,8,9,10
B:10,9,8,7,6,5,4,3,2,1
C:1,2,3,8,7,6,5,4,9,10,
D:1,2,10,9,8,7,6,5,4,3
答案:C
第17题
int i,j,a[2][3];按照数组a的元素在内存的排列次序,不能将数1,2,3,4,5,6存入a数组的是().
A:for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]=i*3+j+1;
B:for(i=0;i<3;i++)for(j=0;j<2;j++)a[j][i]=j*3+i+1;
C:for(i=0;i<6;i++)a[i/3][i%3]=i+1;
D:for(i=1;i<=6;i++)a[i][i]=i;
答案:D
第18题
函数调用:strcat(strcpy(str1,str2),str3)的功能是().
A:将串str1复制到串str2中后再连接到串str3之后
B:将串str1连接到串str2之后再复制到串str3之后
C:将串str2连接到串str1之后再将串str1复制到串str3中
D:将串str2复制到串str1中后再将串str3连接到串str1之后
答案:D
第19题
下列字符数组长度为5的是().
A:char a[]={'h', 'a', 'b', 'c', '\0'};
B:char b[]= {'h', 'a', 'b', 'c', 'd', '\0'};
C:char c[10]= {'h', 'a', 'b', 'c', 'd'};
D:char d[6]= {'h', 'a', 'b', 'c', '\0' };
答案:A
第20题
若有说明 int a[3][4];则a数组元素的非法引用是().
A:a[0][2*1]
B:a[1][3]
C:a[4-2][0]
D:a[0][4]
答案:D
三、程序填空 共2题 (共计20分)
第1题
题目:下列给定程序中,函数fun的功能是:把形参a所指数组中的奇数按原顺序依次存放
到a[0]、a[1]、a[2]、……中,把偶数从数组中删除,奇数个数通过函数值返回。
例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后a所
指数组中的数据为:9、1、3、5、7,返回值为5。
#include <stdio.h>
#define N 9
int fun(int a[], int n)
{
int i, j;
j = 0;
for (i = 0; i < n; i++)
if (a[i] % 2 == 【 ? 】)
{
a[j] = a[i]; 【 ? 】;
}
return 【 ? 】;
}
main()
{
int b[N] = { 9,1,4,2,3,6,5,8,7 }, i, n;
printf("\nThe original data :\n");
for (i = 0; i < N; i++) printf("%4d ", b[i]);
printf("\n");
n = fun(b, N);
printf("\nThe number of odd : %d \n", n);
printf("\nThe odd number :\n");
for (i = 0; i < n; i++) printf("%4d ", b[i]);
printf("\n");
}
答案:
=======(答案1)=======
1
=======(答案2)=======
j++
=======(答案3)=======
j
第2题
题目:给定程序中,函数fun的作用是:统计整型变量m中各数字出现的次数,并存放到数组a中,
其中:a[0]存放0出现的次数,a[1]存放1出现的次数,…… a[9]存放9出现的次数。
例如:若m为14579233,则输出结果应为:0,1,1,2,1,1,0,1,0,1,
#include <stdio.h>
void fun(int m, int a[10])
{
int i;
for (i = 0; i < 10; i++)
【 ? 】 = 0;
while (m > 0)
{
i = 【 ? 】;
a[i]++;
m = 【 ? 】;
}
}
main()
{
int m, a[10], i;
printf("请输入一个整数 : ");
scanf("%d", &m);
fun(m, a);
for (i = 0; i < 10; i++)
printf("%d,", a[i]);
printf("\n");
}
答案:
=======(答案1)=======
a[i]
=======(答案2)=======
m%10
=======(答案3)=======
m/10
四、程序改错 共1题 (共计20分)
第1题
功能:利用二维数组输出如图所示的图形。
*******
*****
***
*
***
*****
*******
#include <stdio.h>
#include <conio.h>
#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]);
五、程序设计 共1题 (共计30分)
第1题
题目:(一维数组)将1-200中所有11的倍数存放到一个一维数组中,并输出。
#include <stdio.h>
void main()
{
int i, j = 0, a[100];
/**********Program**********/
/********** End **********/
for (i = 0; i < j; i++)
printf("%d ", a[i]);
printf("\n");
}
答案:
for (i = 1; i < 200; i++)
{
if (i % 11 == 0)
{
a[j] = i;
j++;
}
}
若有错误或疑问,欢迎评论区留言讨论。