1、哈工大C语言秋试题xueyr本次考试为开卷考试,卷面100分,折合为50分计入期末成绩。如此卷为补考试卷,则按卷面分数记入补考成绩。如无特殊说明,所有题目都针对标准C,并假设运行环境是32位的x86计算机,Windows XP操作系统。一、单项选择题(共10分,每小题2分)(1) 下列不是C语言的关键字的是: ( )A. sizeof B. free C. signed D. auto(2) 下列说法中不属于数据类型定义的作用的是: ( )A. 决定数据存储内存的大小 B. 决定如何解释内存中的位C. 决定数据可以执行的运算 D. 决定以何种方式输出数据(3) 与if(x = 0)等价的语句是
2、: ( )A. if(0) B. if(x = 0) C. if(x != 1) D. if(x)(4) 关于函数的下列说法正确的是: ( )A. 函数内部可以改变实参的值 B. 函数可以有多个返回值C. 函数调用时将实参的值赋给形参 D. 函数可以返回其内部变量的地址(5) 已知:struct Node int data; struct Node *next; a, b;则下列赋值语句正确的为: ( )A. a.next = b B. a-next = b C. a-next = &b D. a.next = &b二、写出程序的执行结果(共40分,每小题4分)(1) 写出下面程序的执行结果。
3、#include main() printf(%d, (1 - (10 + 8/6) * 7 % 4 * 4) / 3);(2) 假设输入为“Good boy,go on!”,写出下面程序的执行结果。#include main() char ch; scanf(%c, &ch); for(ch = $; ch != g; scanf(%c, &ch) putchar(ch);(3) 写出下面程序的执行结果。#include main() int k; for(k = 1, printf(%d: Hi!n, k); printf(k = %dn, k), k * k 18; k += 2, pr
4、intf(Now k is %dn, k) printf(k is %d in the loopn, k);(4) 写出下面程序的执行结果。#include #define MAX(A,B) ( A B ) ? A : Bmain() printf(%dn, MAX(12+3, 3*4) + 5);(5) 写出下面程序的执行结果。#include main() int i = 20; while(i+ = 65) if(i % 20 = 0) printf(%d div 20n, i); if(i = 65) printf(%d, endn, i); (6) 写出下面程序的执行结果。#incl
5、ude main() int a = 3, b = 2, c = 1; if(a b) if(a c) printf(%dn, a); else printf(%dn, b); else printf(%dn, c);(7) 写出下面程序的执行结果。#include int a100;void func(int b100) printf(%dn, sizeof(a);main() printf(%dn, sizeof(a); func(a);(8) 写出下面程序的执行结果。#include #include main() char food = Bread; char *p; p = food
6、 + strlen(food); while(-p = food) puts(p);(9) 写出下面程序的执行结果。#include struct tree int x; int y; t;void func(struct tree t) t.x = 10; t.y = 20;main() t.x = 1; t.y = 2; func(t); printf(%d %dn, t.x, t.y);(10) 写出下面程序的执行结果。#include void print(char *str) char *p; for(p = str; *p != 0; p+) if(*p = a | *p = e)
7、 putchar(*p); else putchar(*p)-); putchar(n);main() char str = gameover; print(str); print(str);三、改错题(10分)下面程序统计文件中英文字母个数,文件名通过命令行输入。请找到并改正其中的任意五行错误或不当的代码,不改正不得分(可以在题目上直接改)。#include #include int main(int argc, char *argv) char filename20; filename = argv0; int *fp = fopen(filename, wb); int ch; int
8、count; while(ch = fgetc(fp) != EOF); if(A = z) count+; printf(%d lettersn, count); fclose(filename); return 0;四、程序设计(40分,每小题10分,注意代码风格)。(1) 编写一个程序,读取一系列整数,直到输入0。输入终止后,程序打印输入的非素数的个数以及这些数的平均值;(2) 生成含有n个随机整数的数组a,其中n为用户输入的大于0的整数,每个元素ai满足1ai100。然后使用qsort函数对数组a根据每个元素十位上的大小进行由大到小的排序,并将结果输出,如果十位上的数相同,则顺序任意。(3) 打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153133353。(4) 双(向)链表中有两条方向不同的链,即每个结点中除next域存放后继结点地址外,还增加一个指向其直接前趋的指针域prior,其结构定义如下:typedef struct DNodeint data;struct DNode *prior,*next;DListNode;实现函数void DInsertBefore(DListNode *P, int X),在结点P前面插入数据为X的结点S(如图所示)。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1