上海交通大学试卷( A 卷)
(2012 至2013 学年第2学期期中考试)班级号_________________ 学号______________ 姓名
课程名称C++(A)成绩
一、选择填空:(每题1分,共20分)
1.在函数声明中,是不必要的
A、形式参数的类型;
B、形式参数名;
C、函数的返回类型;
D、函数名;
答案:B
2. int a=10, b=11, c=12,x=(a+b) A、11 B、0 C、7 D、1 答案:A 3. 一个函数分别进行了声明和定义,则形式参数的默认值应该中给出。 A、只在函数定义 B、只在函数声明 C、在函数的定义和声明 D、在函数调用 答案:B 4. 字符串常量“SJTU”的字符串长度和所占字节数分别为________________。 A、4,5 B、4,4 C、5,4 D、5,5 答案:A 5.以下哪个说法是正确的 A、一个函数可以同时有多个返回值,类型必须相同 B、一个函数可以同时有多个返回值,类型可以不同 C、函数返回类型必须和某个参数的类型一致 D、一个函数可以有多条return 语句 答案:D 6.在c++中,0x001101是。 A、二进制数 B、八进制数 C、十六进制数 D、十进制数 答案:C 7. 在以下运算符中,优先级最低的是。 A、! B、>= C、* D、|| 8. 一个文件中的全局变量,如果不允许其他的文件引用,则需要在声明时加上 关键词。 A 、auto B 、register C 、extern D 、static 答案: D 9.在循环单链表中,head 指向头结点,设P 为指向结点的指针,则判断P 为尾结点的条件 是 。 A 、P==NULL B 、p->next==NULL C 、p->next==head D 、p==head 答案: C 10.在以下定义的struct Date{int year; int month; int day}; Date d, *p=&d, 对d 中月份的输入 是正确的。 A 、cin>>month; B 、cin>>d->month; C 、cin>>p->month; D 、cin>>p.month; 答案: C 11.结构类型Date 作为函数的参数,如果该参数在函数中只读不写,则以下参数说明中最好的是 A 、const Date &d B 、const Date d C 、Date &d D 、Date d 答案:A 12.char a[20]=”hello! sjtu ”; char *p; 以下 语句组输出结果为sjtu 。 A 、p=a+7; cout<<*p ; B 、p=a+7; cout< C 、a=a+7; cout<<*a ; D 、p=a; cout<<*(p+7); 答案: B 13.double *p=new double(10); 则在VC6.0中sizeof(p)的结果为 。 A 、4 B 、8 C 、80 D 、40 答案: A 14.int a[4][5]; 则和a[3][2]的值等价的表达式为 。 A 、*(*a[3]+2) B 、*(a+17) C 、*((a+3)+2) D 、*(a[3]+2) 答案: D 15.char *string[10] = {"aaa", "bbb", "ctc", "ddd", "eee", "fff", "ggg", "hhh", "iii","jjj"}; 以下 输出为t 。 A 、cout< B 、cout< C 、cout<<*(&string[2]+2); D 、cout< 我承诺,我将严格遵守考试纪律。 承诺人: 题号 一 二 三 四 得分 批阅人(流水阅 卷教师签名处) 16.char one_char,不正确的操作是_____________。 A、one_char=”\n”; B、one_char=97; C、one_char=’\t’; D、one_char=’*’; 答案:A 17. 表达式(x||y)&&!y在时结果为真 A、x和y均为真 B、x和y均为假 C、x为真,y为假 D、x为假,y为真 答案: C 18. char s, *p=&s, &ch=s; 则等价于s=’#’的语句为。 A、p=’#’ B、*p=’#’ C、*ch=’#’ D、&ch=’#’ 答案: B 19. 在下列程序段中有误的是。 A、template B、return (a>b)? a:b; C、func(T a, T b) D、T a, T b; 答案: D 20. 如果以下函数声明并存,则函数调用max(3, 4.5)执行函数 A、int max(int, int); B、double max(double, double); C、template D、template 答案: D 二、写出程序段的运行结果:(每题3分,共30分) 1. //枚举类型 #include using namespace std; void main() { enum color{RED, GREEN=5, BLUE, YELLOW=10}; enum color c1, c2; c1=RED; c2=BLUE; cout<<"GREEN="< cout<<"c1="< cout<<"c2="< } 结果: GREEN=5 C1=0 2. //递归,整除 #include using namespace std; const int P = 100; int calc(int); int main() { cout << calc(3) << endl; } int calc(int n) { if (n == 0) return 0; return calc(n - 1) + P / n / (n + 1); } 结果: 74 3. //赋值和判等 #include using namespace std; int main() { int x = 3, y = 6; if ((x = 0) && (y = 4)) y = x; cout << x << "" << y < return 0; } 结果: 0 6 4. //枚举 #include using namespace std; int main() { int a=012,b=0x12; int e=(a++)*3,f=(++b)*3; int g; int h=(g=10)+1; cout< return 0; } 答案: 138 5. //引用,指针 #include using namespace std; void f1(int &x, int &y) { x = x + y; y = x - y; } void f2(int &x, int &y){ int *ipx = &x; int *ipy = &y; while (ipx < ipy) { f1(*ipx, *ipy); ipx++; ipy--; } } const int maxn = 5; int main() { int a[maxn] = {3,8,1,6}; for (int i = 0; i < maxn/2; i++) { f2(a[0], a[i]); f2(a[i+1], a[maxn-1]); f2(a[0], a[maxn-1]); } for (i = 0; i < maxn; i++) cout< return 0; } 结果: 27 19 10 11 20 6. //switch case #include using namespace std; int main(){ int a=2, b=7, c=5; switch (int(a>0)) { case 1: switch(int(b<0)) { case 1: cout << "2"; break; case 2: cout << "3"; default: cout << "1"; } case 0: switch(int(c==5)) { case 0: cout << "5"; break; case 1: cout << "6"; default: cout << "4"; } default: cout << "7"; } cout< return 0; } 结果: 1647 7. //if语句 #include using namespace std; int main(){ for (int b = 0; b < 10; ++b) if (b = 2) { cout << 1; break; } else cout << 0; cout< return 0; } 结果: 8. //全局变量,静态局部变量#include using namespace std; int var; void f1() { static int a = 0; a++; var++; cout< } void f2(int var) { static int a = 10; a--; var--;