系部        专业         班级          姓名          考试号         
―――――――――――――――――――――――――装―――――――订―――――――线――――――――――――――――
                答  题  不  得  超  过  此  装  订  线
XXXX学院(XX中专)
2020-2021学年度第一学期期末考试
XX级《C语言》试卷
使用班级:19计算机
一、选择题(每题3分,共10小题,共计30分)
1.以下可用作C语言用户自定义标识符的一组是(    )
A.void returnif          B. printf includefabs
C.MaxabcMain            D.2abcpaySsum-10
2.若有定义语句int  x=10; 则表达式x-=x+x的值为(  )。
A .-20            B. -10            C.0            D.10
3.已知xfloat型变量,其值为213.456,则printf(“%-4.2f\n”,x);的输出结果为(  )。
A. 213.46    B. 213.45    C. -213.45      D. 输出格式控制说明的域宽不够,不能输出
4.正确表达[1020]这个区间的表达式是(  )。
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
6.已定义c语言斐波那契数列int a[][3]={1,2,3,4,5,6,7,8,9};a[1][2]的值为(   )。
A.        B.            C.              D.
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;
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.输入一个数,判断其是否是回文数。所谓回文数是指其各位数字左右对称,如11123321等。
#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小时内删除。