程序设计(2)
答:25 16
20 37 17 39
4、请写出下列程序的功能,以及当输入为“efghik”时的输出结果。 int main() { int i;
char str1[10], str2[10];
for ( i = 0; str1[ i ] != '\\0'; ++i )
str2[i] = str1[i] – ?a? + ?A? ;
str2[ i ] = ?\\0?; }
答:EFGHIK return 0;
cout << str2 << endl; cin >> str1;
5。写出下面函数的功能(要求写出函数的类型,函数的输入参数和返回值的含义) template if(temp < x[i]) temp = x[i]; return temp; } 答:求一个有n个元素的T类型的数组中的最大元素 6。写出运行结果 struct studentT{ }; 第 5 页 共 10页 char name[20]; int id; char score; 程序设计(2) enum studentInfoT{NAME, ID, SCORE} ; void foo(studentT *p, int num, studentInfoT item); int main() { studentT *p; } void foo(studentT *p, int num, studentInfoT item) { } 答:B 105 switch(item){ case NAME: cout< cout< studentT group[5]={{\ {\ p = group+1; foo(p, 1, SCORE); p++; foo(p, p->id-101, ID); 7。有以下程序: int main(int argc,char * argv[]) { int i, len = 0; for(i=1; i 经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行: ex abcd efg h3 k44 执行后输出结果是什么? 答:6 第 6 页 共 10页 程序设计(2) 8。写出运行结果 int fun(int *a, int size) {int max = 0, i; for (i = 0; i < size; ++i) if (a[i] > a[max]) max = i; return max; } double fun(double *a, int size) {double max = 0; for (int i = 0; i < size; ++i) if (a[i] > max) max = a[i]; return max; } int main() { int a[] = {3,7,2,5,1,9,0,8,7,4}; double b[] = {3.3, 7.7, 9,9, 5.5, 4.4, 8.8, 1.1, 2.2, 0, 6.6}; cout << fun(a, 10) << endl; cout << fun(b, 10) << endl; } 答:5 9.9 三。程序填空(每空1分,共20分) 1、 完成下面程序,使得程序输出结果为: a=45 b=56 void swap(_int &x, int &y _) { int tmp; tmp = x ; x = y ; y = tmp ; } int main () { int a = 56, b = 45; swap( a, b ); cout << \ b = \ return 0; } 第 7 页 共 10页 程序设计(2) 2、 求 1 + 1/1!+1/2!+1/3!+?+1/20! #include { double e = 1 ; double t = 1 ; int n; for (n=1; n <=20 ; n++) { t = t / n ; e += t ; } cout << “1+1/1!+1/2!+1/3!+?+1/20!” << e << endl; return 0; } 3。完成二分查找程序:对一个有序数组,首先匹配中间位置的元素,如匹配成功,则返回 该中间位置的下标值;否则,如待查关键字大于中间元素,抛开前面的元素,从中间元素的下一元素到数组尾部范围重复以上匹配;如待查关键字小于中间元素,抛开后面的元素,从数组首部到中间元素的前一元素范围重复以上匹配;如果查找失败,则返回-1。 int BinarySearch( int A[], int key, int n ){ int low = 0; // 下界结点的下标 int high = n-1 ; // 上界结点的下标 int mid; // 中间结点的下标 while ( low <= high ) { mid = (low + high) / 2 ; if ( A[mid] == key ) return mid ; else if ( key < A[mid] ) high = mid - 1 ; else low = mid + 1 ; } Return -1 ; } 4。下面的程序是实现一个猜硬币的游戏。计算机扔硬币后让用户猜正反面,用户输入0或 者1分别表示正面(HEAD)或者反面(TAIL)。每次用户猜后,计算机给出判断是否正确,游戏采用三局两胜制判断最终胜负。请补充完整所缺语句,每空一条语句。 char GetAGuess(); 第 8 页 共 10页
相关推荐: