2011-2012-2期中试卷A(c++)

C++程序设计

6 写出运行结果:

void foo( int &c){ static a = 1; c += a++; }

int main() {

int a;

int &b = a; a = 10; foo(a);

cout << a << endl; foo(++b);

cout << a << endl; return 0; }

7 写出运行结果

template T avg(T x[],int n);

int main()

{ int a[] = {4,5,2,8,9,3};

double b[] = {3.5,6.7,2,5.2,9.2};

cout << \cout << \return 0; }

template T avg(T x[],int n) { int i;

T maxv = x[0]; for(i=1;i

if (maxv < x[i]) maxv = x[i]; return maxv; }

A 卷 总8页 第 5 页

C++程序设计

8. 写出运行结果

int f(int n) { int p;

if (n == 0 || n == 1) return 1; else

{ p = 2 * f(n-1) + f(n-2); return p; } }

int main() {

cout << f(4); cout << endl; return 0; }

9.请写出下列程序的功能,以及当输入为“12345”时的输出结果。

int main()

{int num = 0, i; char ch[10];

cin >> ch;

for (i = 0; ch[i] != '\\0'; ++i) num = num * 10 + ch[i] - '0';

cout << num << endl;

return 0; }

10. 下面是解决汉诺塔问题的函数,假如每搬动一次盘子需要1秒钟,请问完成64个盘子的汉诺塔问题

需要多少秒?

void Hanoi(int n, char start, char finish, char temp) { if (n==1) cout << start << \ else { Hanoi(n-1, start, temp, finish);

cout << start << \ Hanoi(n-1, temp, finish, start); } }

A 卷 总8页 第 6 页

C++程序设计

四.程序填空(每空2分,共24分)

1.下面程序计算任意多个数的平均数,数据作为命令行的参数传入。 int main(int argc, char *argv[]) { char *tmp;

int sum = 0, value ;

for(int i=1; ; ) {

value = 0; tmp = argv[i]; while ( ) {

value = ; ++tmp; }

sum += value; }

cout << <

2.以下是选择排序法的递归实现,其中array是要排序的数组,n是要排序的元素个数。请填空。 void sort(int array[], int n) { int i, min, tmp;

if (n>1) { min = 0;

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

if ( ) min=i; if ( )

{ tmp = array[0];

array[0] = array[min]; array[min] = tmp;

}

sort( ); } }

A 卷 总8页 第 7 页

return 0;

C++程序设计

3.Conj函数的功能是将两个字符串s和t连接起来,连接后的串存放在动态内存分配区,返回指向连接

后的串的指针

char *conj ( char *s, char *t) { char *p, *q;

p = q = ; while (*s) ; while (*t)

{ *q = ; q++; t++; } *q = ?\\0?;

; }

五. 编程题(共20分)

1、(5分)有这样的一个算式:ABCD×E=DCBA。其中,A、B、C、D、E代表不同的数字。编一个程序找出A、

B、C、D、E分别代表的的什么数字。 评分标准:采用枚举法 2分 程序逻辑 3分 2、(5分)用级数展开法计算平方根。根据泰勒公式

(x?a)2(x?a)3(x?a)n'''(n), f(x)?f(a)?f(a)(x?a)?f(a)?f(a)???f(a)2!3!n!'''可求得

11(x?1)23(x?1)315(x?1)4x?1?(x?1)?????

242!83!164!设计一个函数计算x的值。要求误差小于10-6。

评分标准:正确计算每一项 1分

循环控制 1分 其他逻辑 3分

3、(10分)Julian历法是用年及这一年中的第几天来表示日期。设计一个函数char *Julian(int year,

int day)将Julian历法表示的日期转换成月和日,如Mar 8(注意闰年的问题)。函数返回一个字符串,即转换后的月和日。如果参数有错,如天数为第370天,返回NULL。 评分标准:正确使用动态变量 1分 闰年计算 2分 参数检查 2分 转换过程 3分 其他 2分 A 卷 总8页 第 8 页

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4