2007年北航C语言期末试题(修改版)

更新时间:2023-08-24 01:58:01 阅读量: 教育文库 文档下载

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

《 C 程 序 设 计 》期末考试卷

一、选择题 (20分)

1, 下列运算符中最高优先级的运算符是

A) && B) % C) -= D)!

2, 对定义语句 int a[]={1,2,3,4,5,6,7,8,9,10},*p=a,i=5;

数组元素地址的正确表示是

A)&(a+1) B)a++ C)&p D)&p[i]

3, 以下结构定义,请指出不正确赋值语句是

struct date

{

int month;

int day;

int year;

};

struct student

{

int num;

char name[20];

char sex;

struct date birthday;

float score;

char addr[30];

}stu1,stu2;

A) stu1.num=10; B) stu1.score+=stu2.score;

C) stu1=stu2; D) stu1.birthday.month=12;

4,以下程序:

#include <stdio.h>

void main()

{

FILE *fp;

fp1=fopen(“f1.txt”,”w”);

fprintf(fp,”abc”);

fclose(fp);

}

若文本文件f1 .txt中原有内容为good,则运行以下程序后文件f1.txt中的内容为

A) abc B)abcd C) goodabc D) abcgood

5,以下程序的运行结果是

int f(int i)

{

static int n=1;

return n=n*i;

}

int main()

{

int i;

for (i=1;i<5;i++) printf(“%3d”,f(i));

printf(“\n”);

}

A)1 2 3 4 B)1 2 6 24 C)1 2 4 6 D)1 3 6 24

二、填空题 (30分)

1, 若有定义double x; (5分)

(1)使指针p可以指向变量x的定义语句是_________________

(2)使指针p指向变量x的赋值语句是________________

(3)通过指针p给变量x读入值的scanf函数调用语句是________________

(4)通过指针p给变量x赋值语句是___________________

(5) 通过指针p输出x的值的语句是____________________

2,以下函数用以求x的y次方。请填空: (4分)

double fun(double x,int y)

{

int i;

double z=1.0;

return z;

}

3, 以下函数find()返回数组s中最大元素的下标,数组中元素的个数由n传入,请填空。

int find(int s[],int n)

{

int i,j;

for (i=0,j=i;i<n;i++)

if (s[i]>s[j]) ___________

return ____________

}

4,以下程序为打印杨辉角形程序,请填空。 (6分)

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

#include "stdafx.h"

#include "stdio.h"

int main(int argc, char* argv[])

{

int i,j,n=10,y[20][20]={0};

for (i=0;i<n;i++)

{

分) (6

} { if (j==0) ___________; else y[i][j]=_________________; printf("%4d",y[i][j]); } printf("\n"); } return 0;

5, 有10个数按由小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值。如果该数不在数组中,则输出无此数。

(9分)

#include "stdio.h"

#include "stdlib.h"

void main(int argc, char* argv[])

{

int x[10]={2,4,6,8,12,34,35,45,50,67}, num;

int first=0, last=9, middle;

scanf(“%d”,&num);

while (1)

{

if (last==first && x[last]!=num)

{ printf("没有找到\n");

break;

}

middle= ;

if (x[middle]==num)

{ printf("找到为第%d个数\n",middle+1); ; }

if (num<x[middle]) last= else first=

printf("%d,%d,%d\n",middle,first,last);//打印中间结果

}

}

三、编程题(50分)

1,编写程序,把560分钟换算成用小时和分表示,然后进行输出。 (10分)

2,编写程序,定义一个含有20个元素的数组,赋予每个元素的值为0~50的随机整数,输出这20个元素,再按由小到大的顺序排序,输出排序后的结果。(10分)

3,用牛顿迭代法求方程2x4x+3x-6=0在1.5附近的一个实根。牛顿迭代法的公式是x=x0-f(x)/f' (x),设迭代到|x-x0|≤10时结束。 (15分)

4,给定实验数据的采样样本x0、x1、…xn-1, n=20,具体数值以文本方式放于文件f.dat,请编写程序计算该实验数据的均值(mean)、平均差(average deviation)和方差(variance): 3-2-5

1n 11n 11n 1

均值 Xi、平方差Adev= |Xi |和方差Var=(Xi )2 ni 0ni 0n 1i 0

四、附加题 (5分) 。(15分)

2008年1月1日为星期二。请编程,判断2008年是否为润年,并任意输入一个月份,打印该年该月的日历,要求按周排列对齐,星期一排第一列。

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

Top