系部 专业 班级 姓名 考试号
―――――――――――――――――――――――――装―――――――订―――――――线――――――――――――――――
答 题 不 得 超 过 此 装 订 线
XXXX学院(XX中专)2020-2021学年度第一学期期末考试
XX级《C语言》试卷
使用班级:19计算机
一、选择题(每题3分,共10小题,共计30分)
1.以下可用作C语言用户自定义标识符的一组是( )。
A.void、 return、if B. printf, include、fabs
C.Max、abc、Main D.2abc、payS、sum-10
2.若有定义语句int x=10; 则表达式x-=x+x的值为( )。
A .-20 B. -10 C.0 D.10
3.已知x为float型变量,其值为213.456,则printf(“%-4.2f\n”,x);的输出结果为( )。
A. 213.46 B. 213.45 C. -213.45 D. 输出格式控制说明的域宽不够,不能输出
4.正确表达[10,20]这个区间的表达式是( )。
A.a>=10&&a<=20 B.a>=10||a<=20
C.a>=10&a<=20 D.a>=10 or a<=20
5.下列程序的运行结果是( )。
#include<stdio.h>
main()
{ int i,j,n=0; for(i=0;i<5;i++)
{ j=i%2;
do
{ n++; }
while(j--);
}
printf("%d,%d,%d",i,j,n);
}
A.4,0,7 B.5,-1,7 C.4,0,5 D.5,-1,5
A.4,0,7 B.5,-1,7 C.4,0,5 D.5,-1,5
6.已定义c语言斐波那契数列int a[][3]={1,2,3,4,5,6,7,8,9};则a[1][2]的值为( )。
A.2 B.4 C.6 D.8
7. 数组定义为 int a[3][2]={1,2,3,4,5,6},值为6的数组元素是( )。A.a[3][2] B.a[2][1] C.a[1][
2] D.a[2][3]
8. 以下正确的函数首部是( )。
A. void fun(intx,int y) B. void fun(int x,y)
C. void fun(int x ,int y) D.void fun(x ,y)
9.当调用函数时, 实参是一个数组名, 则向函数传递的是( )。
A. 数组的长度 B. 数组的首地址
C. 数组的每一个元素的地址 D. 数组的每一个元素的值
10.C语言中要使用数学库函数,需要在源文件中包含的头文件是( )。
A.stdio.h B.math.h C.string.h D.ctype.h
二、程序阅读题(5小题,每题6分,共计30分)
1.下列程序的输出结果是: .
main( )
{
int a=10,b=50,c=30;
{
int a=10,b=50,c=30;
if(a>b) a=b;
b=c;
c=a;
printf(“a=%d,b=%d,c=%d”,a,b,c);
}
2.若从键盘上输入6,则输出结果是:
#include <stdio.h>
int main()
{ int n, m;
float fact;
printf("请输入n的值: ");
scanf("%d",&n);
m = n;
fact=1;
while(m>0)
fact*=m--;
printf("%d!=%10.0f\n", n,fact);
return 0;
}
3.#include <stdio.h>
main( )
{ int i,j,x=0;
int a[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
a[i][j]=2*i+j;
for(i=0;i<3;i++)
x+=a[i][j];
printf("%d",x);
}
4.以下程序输出结果为 。
#include<stdio.h>
Int f()
{
Int b=0;
Static int c=3;
b=b+1;
c=c+1;
Return b+c;
}
Void main()
{
Int a1,a2;
a1=f();
a2=f();
Printf(“%d,%d”,a1,a2);
}
5.以下程序输出结果为 。
#include<stdio.h>
Int fun(int n)
{
If(n==1) return 1;
Else return fun(n-1)+1;
}
Void main()
{
Int i,j=0;
For(i=1,i<3,i++)
J+=fun(i);
Printf(“%d\n”,j);
}
三、改错题(2小题,每题9分,共计18分)
1.采用递归的算法计算4!。
int fac(int n){
if(n==0|| n==1) return 1;
else return fac(n-1);
}
#include<stdio.h>
int main(){
int n;
long y;
printf("输入n= ");
scanf("%d",&n);
fac(n);
printf("%d!=%ld\n",n,y);
return 0;
}
2.下列程序是对二维数组a[6][6]赋值:对角线上元素为0;对角线右上角元素为1;对角线左下角元素为-1。最后输出数组元素。
#include <stdio.h>
int main(){
int a[6][6];
int i,j;
for(i=0;i<6;i++)
for(j=0;j<6;j++)
a[i][j]=(i==j)? 0:(i>j)? 1 : -1;
for(i=0;i<6;i++){
for(j=0;j<6;j++)
printf("%d\t",a[j][i]);
printf("\n");
}
return 0;
}
四、程序段设计题(2小题,每题11分共计22分)
1.利用一维数组求斐波那契数列的前20项,并以每行显示5个数据的形式输出数列。斐波那契数列数是这样一组无穷数列:前2个数是1、1,从第3个数起,每个数均是前两个数之
和。如前面几项分别是:1 1 2 3 5 8 13 21 33 54……
#include <stdio.h>
int main(){
long f[20]={1,1};
int i;
printf("%12d%12d",f[0],f[1]);
...
...
...
printf("\n");
return 0;
}
2.输入一个数,判断其是否是回文数。所谓回文数是指其各位数字左右对称,如11、123321等。
#include <stdio.h>
int Ispalindrome(long i);
long Reverse(long n);
int main(){
long x;
printf("输入一个整数:");
scanf("%ld",&x);
if(Ispalindrome(x)) //调用Ispalindrome函数
printf("%ld是回文数\n",x);
else
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论