您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页东软培训及员工考试试题内部资料

东软培训及员工考试试题内部资料

来源:华佗小知识


《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 (at = 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\

(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\}

在控制台显示: __3,a__

2. 阅读下面代码,写出运行结果。 #include 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

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\ f2(&p1,&p2); printf(\"x,y=%d%d\ f3(&x,&y); printf(\"x,y=%d%d\ x++; y--; f2(&p1,&p2); printf(\"x,y=%d%d\}

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

四.编程题(20分) 歌星大奖赛

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

#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\

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务