收集了一些经典C语言计算机二级和C语言期末考试题库
整理不易,大家点赞收藏支持一下
祝大家计算机二级和期末考试都高分过
目录
一、填空,共20题 (共计20分)
二、单选 共25题 (共计25分)
三、程序填空 共2题 (共计15分)
四、程序改错 共2题 (共计20分)
五、程序设计 共2题 (共计20分)
一、填空,共20题 (共计20分)
第1题 (1.0分)
若有以下定义,则计算表达式 y+=y-=m*=y 后的y值是【1】.
int m=5,y=2;
=======(答案1)=======
-16
第2题 (1.0分)
在C语言中,格式化输入操作是由库函数 【1】完成的,格式化输出操作是由库函数【2】完成的.
=======(答案1)=======
scanf
=======(答案2)=======
printf
第3题 (1.0分)
如下程序的运行结果是【1】.
#include<stdio.h>
void main()
{
int y=3,x=3,z=1;
printf("%d%d\n",(++x,y++),z+2);
}
=======(答案1)=======
33
第4题 (1.0分)
int x=2,y=3,z=4;
则表达式x+y&&(x=y)的值为【1】.
=======(答案1)=======
1
第5题 (1.0分)
下列程序的输出是【1】
main()
{
int a=011;
printf("%d\n",++a);
}
=======(答案1)=======
10
第6题 (1.0分)
下面程序段中循环体的执行次数是【1】 .
a=10;
b=0;
do{
b+=2;
a-=2+b;
}while(a>=0);
=======(答案1)=======
3
第7题 (1.0分)
当a=3,b=2,c=1;时,执行以下程序段后 a=【1】.
if(a>b)
a=b;
if(b>c)
b=c;
else
c=b;
c=a;
=======(答案1)=======
2
第8题 (1.0分)
若所用变量都已经正确定义,请填写以下程序段的输出结果【1】.
s=7;
while ( --s );
s -= 2;
printf("%d\n",s);
=======(答案1)=======
-2
第9题 (1.0分)
C语言的三种基本结构是【1】结构、选择结构、循环结构.
=======(答案1)=======
顺序
第10题 (1.0分)
下列程序的运行结果为【1】.
#include "stdio.h"
main()
{
int x=2,y=4,z=40;
x*=3+2;
x=y=z;
pritnf("%d\n",x);
}
=======(答案1)=======
40
第11题 (1.0分)
以下程序输出的结果是【1】 .
#include<stdio.h>
int func(int a,int b)
{
return(a+b);
}
void main()
{
int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r);
}
=======(答案1)=======
15
第12题 (1.0分)
以下程序的输结果是【1】 .
#include<stdio.h>
double sub(double x,double y,double z)
{
y-=1.0;
z=z+x;
return z;
}
void main()
{
double a=2.5,b=9.0;
printf("%f\n",sub(b-a,a,a));
}
=======(答案1)=======
9.000000
第13题 (1.0分)
函数的定义不可以嵌套,但函数的调用【1】嵌套.
=======(答案1)=======
可以
第14题 (1.0分)
下列程序的输出结果是【1】 .
#define MIN(x,y) (x)<(y)?(x):(y)
void main()
{
int i,j,k;
i=10;j=20;
k=2*MIN(i,j);
printf("%d\n",k);
}
=======(答案1)=======
20
第15题 (1.0分)
有如下程序:
#include<stdio.h>
int max(int x,int y)
{
int z;
if(x>y) z=x;
else z=y;
return(z);
}
void main()
{
int a=3,b=5;
printf("%d\n",max(a,b));
}
运行结果为【1】 .
=======(答案1)=======
5
第16题 (1.0分)
以下程序运行后的输出结果是【1】 .
void f(int b[])
{
int i;
for(i=2;i<6;i++)
b[i]*=2;
}
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10},i;
f(a);
for(i=0;i<10;i++)
printf("%d,",a[i]);
}
=======(答案1)=======
1,2,6,8,10,12,7,8,9,10,
第17题 (1.0分)
C语言中,数组元素的下标下限为【1】.
=======(答案1)=======
0
第18题 (1.0分)
下列程序的输出结果是【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
第19题 (1.0分)
程序运行结果是【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<n;i+=2)
sum=sum+pt[i];
return(sum);
}
=======(答案1)=======
30
第20题 (1.0分)
以下程序的输出结果是【1】.
#include<stdio.h>
void main()
{
char s[ ]="abcdef";
s[3]='\0';
printf("%s\n",s);
}
=======(答案1)=======
abc
二、单选 共25题 (共计25分)
第1题 (1.0分)
C语言程序中必须有的函数是().
A:#include "stdio.h"
B:main
C:printf
D:scanf
答案:B
第2题 (1.0分)
以下叙述中正确的是 ().
A:C语言比其他语言高级
B:C语言可以不用编译就能被计算机识别执行
C:C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D:C语言出现的最晚,具有其他语言的一切优点
答案:C
第3题 (1.0分)
以下叙述中正确的是().
A:C语言程序总是从第一个定义的函数开始执行
B:在C语言程序中,要调用的函数必须在main()函数中定义
C:C语言程序总是从main()函数开始执行
D:C语言程序中的main()函数必须放在程序的开始部分
答案:C
第4题 (1.0分)
一个C语言程序总是从()开始执行的.
A:主过程
B:主函数
C:子程序
D:主程序
答案:B
第5题 (1.0分)
一个C语言程序是由().
A:一个主程序和若干子程序组成
B:函数组成
C:若干过程组成
D:若干子程序组成
答案:B
第6题 (1.0分)
以下数据中,不正确的数值或字符常量是().
A:8.9e1.2
B:10
C:0xff00
D:82.5
答案:A
第7题 (1.0分)
设a为整型变量,初值为12,执行完语句 a+=a-=a*a 后,a的值是().
A:552
B:144
C:264
D:-264
答案:D
第8题 (1.0分)
下列四个选项中,均是C语言关键字的选项是().
A:auto enum include
B:switch typedef continue
C:signed union scanf
D:if struct type
答案:B
第9题 (1.0分)
下列程序段的输出结果为().
int a=7,b=9,t;
t=a*=a>b?a:b;
printf("%d",t);
A:7
B:9
C:63
D:49
答案:C
第10题 (1.0分)
下列语句的结果是().
main()
{
int j;
j=3;
printf("%d,",++j);
printf("%d",j++);
}
A:3,3
B:3,4
C:4,3
D:4,4
答案:D
第11题 (1.0分)
以下程序的输出结果是().
#include <stdio.h>
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
第12题 (1.0分)
下列程序的运行结果是().
#include<stdio.h>
void main()
{
int x=8;
for(;x>0;x--)
{
if(x%3)
{
printf("%d,",x--);
continue;
}
printf("%d,",--x);
}
}
A:7,4,2
B:8,7,5,2
C:9,7,6,4
D:8,5,4,2
答案:D
第13题 (1.0分)
下面程序的输出结果是().
#include<stdio.h>
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
第14题 (1.0分)
以下不正确的 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<y) {x++;y++;}
答案:C
第15题 (1.0分)
以下程序中,while循环的循环次数是().
main()
{
int i=0;
while(i<10)
{
if(i<1) continue;
if(i==5) break;
i++;
}
}
A:1
B:4
C:6
D:死循环,不能确定次数
答案:D
第16题 (1.0分)
以下叙述中正确的是().
A:全局变量的作用域一定比局部变量的作用域范围大
B:静态(static)类别变量的生存期贯穿于整个程序的运行期间
C:函数的形参都属于全局变量
D:未在定义语句中赋初值的auto变量和static变量的初值都是随机值
答案:B
第17题 (1.0分)
C语言中的函数().
A:可以嵌套定义
B:不可以嵌套调用
C:可以嵌套调用,但不能调用自己
D:嵌套调用和调用自己均可
答案:D
第18题 (1.0分)
以下说法中正确的是().
A:宏替换是在程序编译时进行的
B:函数调用是在程序编译时进行的
C:宏替换时,如果实参是表达式,应先求表达式的值,再替换
D:函数调用时,如果实参是表达式,应将表达式的值传递给形参
答案:D
第19题 (1.0分)
C语言允许函数值类型缺省定义,此时该函数值隐含的类型是().
A:float型
B:int型
C:long型
D:double型
答案:B
第20题 (1.0分)
C语言规定:简单变量做实参时,它和对应形参之间的数据传递方式是().
A:地址传递
B:单向值传递
C:由实参传给形参,再由形参传回给实参
D:由用户指定的传递方式
答案:B
第21题 (1.0分)
设有数组定义:char array[ ]="China";,则数组array所占的空间为().
A:4个字节
B:5个字节
C:6个字节
D:7个字节
答案:C
第22题 (1.0分)
假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,
则数组x在内存中所占字节数是().
A:3
B:6
C:10
D:20
答案:D
第23题 (1.0分)
以下能对二维数组a进行正确初始化的语句是().
A:int a[2][]={{1,0,1},{5,2,3}};
B:int a[][3]={{1,2,3},{4,5,6}};
C:int a[2][4]={{1,2,3},{4,5},{6}};
D:int a[][3]={{1,0,1}{},{1,1}};
答案:B
第24题 (1.0分)
以下程序中函数reverse()的功能是将a所指数组中的内容进行逆置.
程序运行后的输出结果是().
#include<stdio.h>
void reverse(int a[ ],int n)
{
int i,t;
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
}
void main()
{
int b[10]={1,2,3,4,5,6,7,8,9,10};
int i,s=0;
reverse(b,8);
for(i=6;i<10;i++)
s+=b[i];
printf("%d\n",s);
}
A:22
B:10
C:34
D:30
答案:A
第25题 (1.0分)
下列程序执行后的输出结果是().
#include<stdio.h>
void main()
{
char arr[2][4];
strcpy(arr,"you");
strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s\n",arr);
}
A:you&me
B:you
C:me
D:err
答案:A
三、程序填空 共2题 (共计15分)
第1题 (5.0分)
说明:下面程序的功能是打印出所有的“水仙花数”,请填写
程序所缺内容。
注:水仙花数是指一个三位数的各位数字的立方和是这个数本身。
#include"stdio.h"
void f(int n)
{
int i, j, k;
i = n / 100;
/***********SPACE***********/
j = 【 ? 】;
k = n % 10;
/***********SPACE***********/
if (【 ? 】)
{
printf("%5d\n", n);
}
}
void main()
{
void f(int n);
int i;
for (i = 100; i < 1000; i++)
f(i);
}
答案:
=======(答案1)=======
n/10%10
=========或=========
(n/10)%10
=======(答案2)=======
i*100 + j*10 + k == i*i*i + j*j*j + k*k*k
=========或=========
n== i*i*i + j*j*j + k*k*k
=========或=========
i*i*i + j*j*j + k*k*k ==n
第2题 (10.0分)
功能:将十进制数转换成十六进制数。
#include <stdio.h>
#include "string.h"
void c10_16(char p[], int b)
{
int j, i = 0;
/***********SPACE***********/
while (【 ? 】)
{
j = b % 16;
if (j >= 0 && j <= 9)
/***********SPACE***********/
【 ? 】;
else p[i] = j + 55;
b = b / 16;
i++;
}
/***********SPACE***********/
【 ? 】;
}
main()
{
int a, i;
char s[20];
printf("input a integer:\n");
scanf("%d", &a);
c10_16(s, a);
/***********SPACE***********/
for (【 ? 】; i >= 0; i--)
printf("%c", s[i]);
printf("\n");
}
答案:
=======(答案1)=======
b>0
=========或=========
0<b
=========或=========
b!=0
=========或=========
0!=b
=========或=========
b
=======(答案2)=======
p[i]= j + '0'
=========或=========
p[i]= j + 48
=========或=========
*(p+i)= j + '0'
=========或=========
*(p+i)= j + 48
=======(答案3)=======
p[i]='\0'
=========或=========
p[i]=0
=========或=========
p[i]=NULL
=========或=========
*(p+i)='\0'
=========或=========
*(p+i)=0
=========或=========
*(p+i)=NULL
=======(答案4)=======
i=strlen(s)-1
=========或=========
i=-1+strlen(s)
四、程序改错 共2题 (共计20分)
第1题 (10.0分)
题目:下列给定程序的功能是:读入一个整数k(2≤k≤10000),输出它的所有质因
子(即所有为素数的因子)。
例如:若输入整数2310,则应输出:2,3,5,7,11。
#include<conio.h>
#include<stdio.h>
int IsPrime(itn n)
{
int i, m;
m = 1;
for (i = 2; i < n; i++)
if!(n % i)
{
m = 0;
break;
}
return(m);
}
main()
{
int j, k;
printf("\nPlease enter an interger number between 2 and 10000: ");
scanf("%d", &k);
printf("\nThe prime factor(s) of %d is(are): ", k);
for (j = 2; j < k; j++)
if ((!(k % j)) && (IsPrime(j)))
printf("%4d,", j);
printf("\n");
}
答案:
=======(答案1)=======
IsPrime(int n)
=======(答案2)=======
if(!(n%i))
第2题 (10.0分)
题目:下列给定程序中,函数fun的功能是:求出数组中的最大数和次最大数,并把最
大数和a[0]中的数对调、次最大数和 a[1] 中的数对调。
#include<conio.h>
#include<stdio.h>
#define N 20
void fun(int a, int n);
{
int i, m, t, k;
for (i = 0; i < 2; i++)
{
m = 0;
for (k = i + 1; k < n; k++)
if (a[k] > a[m])
m = k;
t = a[i];
a[i] = a[m];
a[m] = t;
}
}
int main()
{
int b[N] = { 11,5,12,0,3,6,9,7,10,8 }, n = 10, i;
system("CLS");
for (i = 0; i < n; i++)
printf("%d ", b[i]);
printf("\n");
fun(b, n);
for (i = 0; i < n; i++)
printf("%d ", b[i]);
printf("\n");
}
答案:
=======(答案1)=======
void fun(int *a, int n)
=========或=========
void fun(int a[], int n)
=======(答案2)=======
m=i;
五、程序设计 共2题 (共计20分)
第1题 (10.0分)
题目:请编写函数fun,该函数的功能是:求出二维数组周边元素之和,
作为函数值返回。二维数组中的值在主函数中赋予。
例如:若二维数组中的值为:
1 3 5 7 9
2 9 9 9 4
6 9 9 9 8
1 3 5 7 0
则函数值为61。
注意:请勿改主动函数main和其他函数中的任何内容,
仅在函数fun的花括号中填入你编写的若干语句。
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#define M 4
#define N 5
int fun(int a[M][N])
{
/**********Program**********/
/********** End **********/
}
void main()
{
int aa[M][N] = { {1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0} };
int i, j, y;
system("CLS");
printf("The original data is :\n ");
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
printf("%6d ", aa[i][j]);
printf("\n ");
}
y = fun(aa);
printf("\nThe sun: %d\n ", y);
printf("\n ");
}
答案:
int i, j, sum = 0;
for (i = 0; i < M; i++)
for (j = 0; j < N; j++)
if (i == 0 || i == M - 1 || j == 0 || j == N - 1)
sum = sum + a[i][j];
return sum;
第2题 (10.0分)
题目:输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入一个正整数 n,输出 2/1+3/2+5/3+8/5+……前n项之和,保留2位小数。
(该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)
输入输出示例:括号内是说明
输入
3 (repeat=3)
1 (n=1)
5 (n=5)
20 (n=20)
输出
sum = 2.00 (第1项是2.00)
sum = 8.39 (前5项的和是8.39)
sum = 32.66 (前20项的和是32.66)
#include <stdio.h>
void main()
{
int i, n;
int repeat, ri;
double denominator, numerator, sum, temp;
scanf("%d", &repeat);
for (ri = 1; ri <= repeat; ri++)
{
scanf("%d", &n);
/**********Program**********/
/********** End **********/
printf("sum = %.2f\n", sum);
}
}
答案:文章来源:https://www.toymoban.com/news/detail-655672.html
numerator = 2;
denominator = 1;
sum = 0;
for (i = 1; i <= n; i++)
{
sum = sum + numerator / denominator;
temp = numerator;
numerator = numerator + denominator;
denominator = temp;
}
若有错误或疑问,欢迎评论区留言讨论。文章来源地址https://www.toymoban.com/news/detail-655672.html
到了这里,关于C语言计算机二级/C语言期末考试 刷题(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!