姓名__________________ 专业名称__________________  班号________________学号__________________教学中心_________________
…………………… …… ………………… …… …………………… …… 线 …… ……………………
电子科技大学网络教育考卷(A卷)
(20  年至20  学年度第  学期)
考试时间    年  月  日(120分钟) 课程      C语言      教师签名_____
大题号
合 计
得  分
一、单项选择题(每题2分,共30分)
1.请问:下面这个程序段的输出是什么?(      )
    int a=7,b=8,c=9;
    if(a<b)  {  a=b;    b=c;    c=a;    }
    printf("a=%d b=%d c=%d\n",a,b,c);
      A . a=7 b=8 c=7        B. a=7 b=9 c=7   
C. a=8 b=9 c=7        D. a=8 b=9 c=8
2.C语言对嵌套 if 语句的规定是:else总是与(  )配对。
   A.其之前最近的 if            B.第一个 if
    C.缩进位置相同的 if          D. 其之前最近且不带 else 的 if
3.有以下程序段:
int k=0;
while(k=1)    k++;
while循环执行的次数是(        )。
A.无限次                B.有语法错,不能执行
C. 一次也不执行          D.执行1次
4.若有语句:
      tatic char x[]="12345";
      static char y[] = {'1','2','3','4','5'};
      则下面那一个是正确的描述。(       
    A.x数组和y数组的长度相同。
    B.x数组长度大于y数组长度。
    C.x数组长度小于y数组长度。
    D.x数组等价于y数组。
5.若有定义:int a[5][6]; 则下面关于数组a的叙述中正确的是(      )。
A.该数组共有20个元素          B.a[0][6]是该数组的一个元素
C.a[0][0]是该数组的一个元素    D.a[5][6]是该数组的一个元素
6.对局部变量不正确描述(        )
  A.在不同块内可以使用相同的变量名而不会混淆。
  B.局部变量在任何一个函数内有效。
  C.局部变量的初值每调用一次赋一次
  D.用auto说明的变量为局部变量。
7.凡是函数中未指定存储类别的局部变量,隐含的存储类别为(      )。
Aauto      B. register         C. static          D. extern
8.在说明语句:int *f(  );中,标识符f代表的是(       
A.一个返回值为指针型的函数名
B. 一个用于指向整型数据的指针变量
C.一个用于指向函数的指针变量
D.一个用于指向一维数组的行指针
9.typedef(      )
A. 可以定义各种类型名和变量名。
    B. 可以创造新的数据类型。
C. 和#define作用相同。
D. 只是对已存在的类型增加一个类型名,不能创造新类型。
10.若fp已正确定义为一个文件指针,d1.dat为二进制文件,为“读”而打开此文件的语句是(        )。
A.fp=fopen("d1.dat","r");    B.fp=fopen("d1.dat","rb");
C.fp=fopen("d1.dat","r+");  D.fp=fopen("d1.dat","w");
11.移位运算符”<<”的含义(        )
A. 从一个变量移动到另一个变量
B. 移位运算符”<<”可以适合任意类型的数据
C. 按二进位移位运算,限定为整型数据和字符型数据
D. 按二进位移位运算,限定为整型数据
12.如果int a=0x3;  int b=0x2; 执行运算:  a<<=b;  则x的结果是(        )
A. 0      B. 1        C. 11        D.48
13.设:int g = 2 ; 下列表达式的值,哪一个等于 1?   (        )
  A. ~g&g        B. g>g    C. g^=g    D. ~g&1
14.正确描述文件包含预处理的含义(       
c十十程序设计语言
A.目标文件    B.执行文件     
C.C源文件      D.一条包含命令可以包含多个文件
15.对宏定义的不正确描述(            )
  A.宏定义是用宏名代替一个字符串。
  B.#define 的作用范围,是整个源文件有效。
  C.宏名可以在其它宏定义中引用,可以层层替换。
  D.用双引号扩起来的字符串,即使与宏名相同,也不进行置换。
二、判断题(每小题1分,共11分)
1.(    )若以”a+”方式打开文件时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作。
2.(    )函数rewind的作用是使位置指针指向文件的末尾。
3.(    )用typedef只是将已存在的类型用一个新的标识符来代表
4.(    )C语言联合类型变量在程序运行期间只有一个成员驻留在内存中。
5.(    )说明一个结构体变量时,系统分配给它的内存是各成员所需内存量的总和。
6.(    )语句int(* ptr)(  );的含义是指向函数的指针,该函数返回一个int型数据。
7.(    )C语言允许main函数带形参,形参名只能是argc和argv。
8.(    )预处理指令只能位于C源程序文件的首部。
9.(    )在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是extern
10.(    )若用数组名作为函数调用的实参,则传递给形参的是数组的首地址。
11.(    )函数的定义不可以嵌套,但函数的调用可以嵌套。
三、分析程序给出运行结果(每题5分,共25分)
1.以下程序的运行结果是:
#include "stdio.h"
#include "stdlib.h"
struct data
{    int x,y;    };
void main()
{  struct data * p;p=(struct data *)malloc(sizeof(struct data));
(*p).x=3;(*p).y=4;
printf("%d  %d\n",p->x,p->y);
free(p);
}
2.分析下面程序的运行结果。
#include<stdio.h>
main()
{  int a=0x9567;
    printf(“a=%x\n”,a);
    printf(“%x\n”, (a >> 12)  & ~ ( ~ 0 << 12));
  return 0;
}
3.分析下面程序的运行结果。
#include <stdio.h>    (  B  )
#define SQR(y) y*y
main()
{
int a,b=4;
a=SQR(b+1);
printf("a=%d\n",a);
}
4.给出下面程序的运行结果。
main()
{    unsigned  a=0361,x,y;
    int n=5;
    x = a<<(16-n);
    printf(“x = %o\n”,x);
y = a>>n;
printf(“y1 = %o\n”,y);
y|=x;
printf(“y2 = %o\n”,y);
}
5.给出下面程序的运行结果。
main()
{    struct example
    {    struct {    int x;
                int y;
            }in;
        int a;
        int b;
    }e;
e.a=1;
e.b=2;
e.in.x=e.a*e.b;
e.in.y=e.a+e.b;
printf(“%d,%d”,e.in.x,e.in.y);
}
四、完善程序填空题(每题7分,共14分)
1.将一个数组中的值按逆序重新存放,
#include <stdio.h> 
void main()
{    int i,j,m,n=0,temp;
    int x[20];
    printf("输入需排序的个数%d\n",n);
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {        scanf("%d,", &x[i]);        }
    m =                ;
    for(i=0;i<=m;i++)
    {    j =              
        temp = x[i];
        x[i] = x[j];
        x[j] = temp;
    }
}
2.将原文件file1.c的内容读出并显示, 同时将其内容写入file2.c文件中。
#include<stdio.h>
    main()
    {  FILE *fp1,*fp2;
        fp1=fopen("file1.c","r");
        fp2=fopen("file2.c","w");
        while(!feof(fp1)) putchar(getc(fp1));
        rewind(                  );
        while(!feof(fp1)) putc(                  );
        fclose(fp1);fclose(fp2);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。