aaaa

 

《C语言编程》课程考试笔试试卷

总分:   100分           时间:   60分钟 

姓名:                 班级:                        身份证号:

一:简答:(20分)

 

1 . 头文件中的 ifndef/define/endif 起什么用?(4分)

       编译过程中防止代码段被重复包含。

2. 以下为Windows NT下的VC6开发环境下程序,请计算sizeof的值(8分)

char  str[] = “Hello” ;

char   *p = str ;

int     n = 10;

请计算

sizeof (str ) =       6

        

sizeof ( p ) =       4

         

sizeof ( n ) =       4

 

void *p = malloc( 100 );

请计算

sizeof ( p ) =       4

 

3.解释一下什么是内存栈创建、堆分配(4分)

       内存栈创建是指在程序运行过程中申请内存栈区的一段空间的过程,堆分配则是程序在内存堆空间内申请一段空间的过程。

4.下面的代码输出是什么,为什么?(4分)

void foo(void)

{

unsigned int a = 6;

int b = -20;

(a+b > 6) ? printf("> 6") : printf ("<= 6");

}

 >6

二.选择:(40分)

 

1.下面程序段的运行结果是【 A】

a =1;b=2;c=2;

while (a<b<c)

 {

    t = a; a = b; b = t; c--;

}

printf(“%d,%d,%d”,a,b,c);

A) 1,2,0    B) 2,1,0    C) 1,2,1     D) 2,1,1

 

2.下面的程序输出是【B】。

      typedef union

      { double x[2]; int y[4]; char z[8];} MYTYPE;

      MYTYPE them;

      main()

{ printf("%d\n",sizeof(them));}

(A) 32       (B) 16           (C) 8        (D)24

 

3.在一个单链表中,已知q所指结点是p结点的前驱结点,若在q和p之间插入结点,则执行C】

A)s->next = p->next;p->next = s;

B) p->next = s->next; s->next = p;

C) q->next = s; s->next = p;

D) p->next = s; s->next = q;

 

4. typedef enum {

              PLAYMODE =0,

              PAUSEMODE,

              STOPMODE =5,

              TRACKRPTMODE,

              MIXMODE

}Status_t;  

       上述枚举定义中,元素MIXMODE的数值为【D】

A. 4        B. 5              C. 6        D. 7

5  下列do-while循环的次数为【D】

int i=5;

do{

    printf(“%d\n”, i--);

    i--;

}while(i != 0);

  A . 0   B.1   C. 5  D. 无限

6. 按照标识符的要求,【A】符号不能组成标识符。

  A . 连接符   B.下划线   C. 大小写字母  D. 数字符号

7. 在将两个字符串连接起来组成一个字符串时,选用( C )函数。

  A. strlen( )     B.strcpy( )    C. strcat( )     D.strcmp( )

8. 下列函数中,【D】是对文件进行写操作。

  A .  get( );   B. read( );    C. seek ( );      D.  put( )

 

三、写出程序运行结果(第1、2小题各6分,第3小题8分 总计20分)

1.阅读下面代码,写出运行结果。

#include "stdio.h"

struct student

{

       int no;

       char name;

};

void   ModifyStudent(struct student b)

{

       b.no=20;

       b.name='y';

}

main()

{

       struct student a;

       a.no=3;

       a.name='a';

       ModifyStudent (a);

       printf("%d,%c",a.no, a.name);

}

在控制台显示: __3,a__

 

2. 阅读下面代码,写出运行结果。

#include <stdio.h>

void main()

{  

  int s;

for (int i=1,s=0;i<20;i++)

{

            if(i%2==0 || i%3==0)

continue;

            printf(“%d ”, i);

            s+=i;

}

printf(“%d”, s);

}

在控制台显示: __1 5 7 11 13 17 19 73__

 

3.阅读下面代码,写出运行结果。

#include <stdio.h>

void f2(int** x, int** y)

{

       int z=**x;

       **x = **y;

       **y = z;

}

void f3(int* x, int* y)

{

       int z=*x;

       *x=*y;

       *y=z;

}

void main()

{

       int x=10,y=26;

       int *p1 = &x;

       int *p2 = &y;

       printf("x,y=%d%d", x, y);

       f2(&p1,&p2);

       printf("x,y=%d%d", x, y);

       f3(&x,&y);

       printf("x,y=%d%d", x, y);

       x++;

       y--;

       f2(&p1,&p2);

       printf("x,y=%d%d", x, y);

}

运行结果:__x,y=1026X,y=2610X,y=1026x,y=2511__

 

 

四.编程题(20分)

歌星大奖赛

在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。(10分)

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define SUCCEED            0

#define TEACHERS   10

#define AVAILTEACHER    8

 

 

int DelMin(int aiArray[], int iLength)

{

       int iTemp;

       int iDelMinVar;

       for (iDelMinVar = 1; iDelMinVar < iLength; iDelMinVar++)

       {

              if(aiArray[iDelMinVar] < aiArray[0])

              {

                     iTemp = aiArray[iDelMinVar];

                     aiArray[iDelMinVar] = aiArray[0];

                     aiArray[0] = iTemp;

              }

       }

       aiArray[0] = 0;

       return SUCCEED;

}

int DelMax(int aiArray[], int iLength)

{

       int iTemp;

       int iDelMaxVar;

       for (iDelMaxVar = 1; iDelMaxVar < iLength; iDelMaxVar++)

       {

              if(aiArray[iDelMaxVar] > aiArray[0])

              {

                     iTemp = aiArray[iDelMaxVar];

                     aiArray[iDelMaxVar] = aiArray[0];

                     aiArray[0] = iTemp;

              }

       }

       aiArray[0] = 0;

       return SUCCEED;

}

 

 

void main()

{

//     int iScores;

       int iMainVar;

       int iTotaScor = 0;

       float       fFinaScor;

       int iChairMan[TEACHERS];

       srand((unsigned)time(NULL));

 

       for (iMainVar = 0; iMainVar < TEACHERS; iMainVar++)

       {

              iChairMan[iMainVar] = rand()%101;

       }

       DelMin(iChairMan, TEACHERS);

       DelMax(iChairMan, TEACHERS);

       for (iMainVar = 0; iMainVar < TEACHERS; iMainVar++)

       {

              iTotaScor += iChairMan[iMainVar];

       }

       fFinaScor = (float)iTotaScor/(float) AVAILTEACHER;

       printf("%f", fFinaScor);

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值