哈尔滨工业大学C语言期末试卷(2007秋季笔试B卷)

更新时间:2024-02-27 08:44:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

哈尔滨工业大学C语言期末试卷(2007秋季笔试B卷)

一、单项选择题:(10分,每题2分)

1.在下面的语句中:只有一个在功能上与其他三个语句不等价(其中s1和s2表示某个C语句),这个不等价的语句是 。 A)if (a) s1; else s2; B)if (!a) s2; else s1; C)if (a!=0) s1; else s2; D)if (a==0) s1; else s2;

2.以下正确的描述是 。

A) 对共用体初始化时,只能对第一个成员进行初始化,每一瞬时起作用的成员是最后一次为其赋值的成员

B) 结构体可以比较,但不能将结构体类型作为函数返回值类型 C) 函数定义可以嵌套

D) 关键字typedef用于定义一种新的数据类型 3.下列的定义中,正确使用字符串初始化的是 。 A)char str[7] = \B)char str[] = {F,O,R,T,R,A,N,0}; C)char *str = \

D)char str[] = {'F','O','R','T','R','A','N'}; 4.要使下面程序的输出语句在屏幕上显示 1,2,34

则从键盘上输入的正确数据格式为: 。

main() {

char a,b; int c;

scanf(\ printf(\}

A)1 2 34 B)1,2,34 C)'1''2'34 D)12 34

5.若有二维数组定义语句:int a[3][4]; 则下面对元素a[i][j]不正确的引用方式是: 。 A) *(&a[i][j]) B) *(a+4*i+j) C) *(a[i]+j) D) *(*(a+i)+j)

二、写出下列程序的运行结果。(10分,每题2分) 1.

#include main() {

int k=4, n=0;

for (;n

if (n%2 == 0) break;

k--; }

printf(\ }

程序运行结果为 2.

#include main() { int n;

static char *mName[]={\ \ \ \ \ \

printf(\ scanf(\

printf(\ }

当程序输入9时,完整的(包括输入)程序运行结果是:

当程序输入13时,完整的(包括输入)程序运行结果是: 3.

#include typedef struct date {

int year; int month; int day; }DATE;

void func(DATE *p) {

p->year = 2000; p->month = 5; p->day = 22;

} main() {

DATE d; d.year = 1999; d.month = 4; d.day = 23;

printf(“%d,%d,%d\\n”, d.year, d.month, d.day); func(&d);

printf(“%d,%d,%d\\n”, d.year, d.month, d.day); } 运行结果是: 4.

#include main() {

int m = 7;

printf(\ printf(\

printf(\ printf(\ printf(\ } 运行结果是: 5.

#include int Fun(int x) {

static int y = 1; y += x; return y; } main() { int k;

for (k=0; k<3; k++)

{

printf(\ } } 运行结果是:

三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。(8分,每空2分)

1. 假设有40个学生被邀请来给自助餐厅的食品和服务质量打分,分数划分为1~10这10个等级(1表示最低分,10表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。

Grade Histogram 1 ***** 2 ********** 3 ******* ...

#include main() {

int i, j, grade;

int score[40], count[11] = {0};

printf(\ for (i=0; i<40; i++) {

scanf( ); }

for (i=0; i<40; i++) {

; }

printf(\ for (grade=1; ; grade++) {

printf(\ for (j=0; ; j++) {

printf(\ }

printf(\ } }

2. 不用函数strcat(),编程实现字符串连接函数strcat()的功能,将字符串srcStr连接到字符串dstStr的尾部。

#include #include

void MyStrcat(char dstStr[], char srcStr[]); main() {

char s[80], t[80];

printf(\ gets(s);

printf(\ gets(t);

MyStrcat(s,t);

printf(\ concatenate string is: \ puts(s); }

void MyStrcat(char dstStr[], char srcStr[]) {

int i = 0, j;

while (dstStr[i] != '\\0') { ; }

for (j=0; ; j++, i++) {

; }

= '\\0'; }

四、在下面4个程序中,共有16处错误(包括语法错误和逻辑错误),只要找出其中的15处错误并改正之即可,多找不多加分。(30分,每找对1个错误,加1分,每修改正确1个错误,再加1分。)

1.下面程序用于打印所有的水仙花数。所谓“水仙花数”,是指一个三位数,其各位数字的立方和等于该数本身。例如,153是“水仙花数”,因为153=13+33+53。

#include main() {

int i, j, k, n;

printf(\

for (n=100; n<1000; n++); {

i = n % 100; j = (n - i * 100) % 10; k = n % 10;

if (n=i*i*i+j*j*j+k*k*k) {

printf(\ } }

printf(\ }

2.利用泰勒级数sin(x)≈

小于10-5,并统计出此时累加了多少项。

#include #include main() {

int n = 1,count = 1; float x;

double sum , term;

printf(\ scanf(\

sum = x;

term = x; do {

term = -term*x*x/(n+1)*(n+2);

计算sin(x) 的值。要求最后一项的绝对值

sum = sum + term; n++; count++;

}while (fabs(term) <= 1e-5);

printf(\ }

3.下面程序的功能是从键盘输入一行字符,统计其中有多少单词。假设单词之间以空格分开。已知:判断是否有新单词出现的方法——当前被检验字符不是空格,而前一被检验字符是空格,则表示有新单词出现。

#include main() {

char str[20]; int i, num;

scanf(\

if (str[0] != ' ') {

num = 1;

} else {

num = 0; }

for (i=1; i<20; i++) {

if (str[i]!=' '|| str[i-1]==' ') {

num++; } }

printf(\ }

4.下面程序用于计算两个正整数的最小公倍数。

#include

int MinCommonMultiple(int a, int b) main()

{

int a, b, x;

printf(\ scanf(\

x = MinCommonMultiple(int a,int b); printf(\ }

int MinCommonMultiple(int a, int b); { int i;

for (i=1; i

if ((i*a) % b = 0) return i*a; }

return 0; }

五、编程(42分) 1.编程计算

2.编程打印如下形式的杨辉三角形,打印的杨辉三角形的行数n(不超过10行)要求由用户从键盘输入。要求按照如下函数原型进行编程,不能使用全局变量。(14分) void YHTriangle(int a[][SIZE], int n); void PrintYHTriangle(int a[][SIZE], int n); 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1

3. 从键盘输入数组a和数组b的元素值,编程交换数组a和数组b中的对应元素的值,然后打印数组a和数组b的元素值。已知数组a和数组b各含有10个元素。要求按照如下函数原型进行编程,不能使用全局变量。(14分) void Swap(int *x, int *y);

void Exchange(int a[], int b[], int n); void InputArray(int a[],int n); void PrintArray(int a[],int n);

的值,要求n由用户从键盘输入。(14分)

本文来源:https://www.bwwdw.com/article/y7la.html

Top