C++试卷(华南理工大学)

2023-12-17 05:27:35

华南理工大学期末考试?

高级语言程序设计(I)》A

注意事项:??? 1. 考前请将密封线内各项信息填写清楚;

?????? ???? 2. 所有答案写在答题纸上,答在其它地方无效;

3.考试形式:闭卷;

???????? ? 4. 试卷可做草稿纸,试卷必须与答题纸同时提交;

5. 本试卷共五大题,满分100分,考试时间120分钟

Question 1 (2 points for each, 20 points for total) Choose the correct answer

1) To initialize an array of characters which one is NOT correct? ( ??????)

????? A) char s1[3]={'a','b','c'};?? ?????? B) char s2[5]="abc";

?????? C) char s3[]={'m','n','s','r'};???? D) char s4[4]="ijkl";

D需要分配5个空间

A则不需要

2)??? If the array name as an argument, the function call passed ?( ???A ) to the parameter.

A) the starting address of the array???????????

B) the value of the first element

? ?? C) all the elements values of an array

D) the number of array elements

传递(A)数组的起始地址。

3)??? If we have : int x=3, y=2;? double a=2.9, b=3.5; ?the value of expression (x+y)/2+(int)a%(int)b?? would be(????? )。

A)? 1??????????????????? B)? 2????????????????? C)?? 3??????????????? D)?? 4

D

4)??? In the following statements about the overload function which one is correct? (????? )

A) overload functions must have different return types

B) overload functions must have different numbers of parameters

C) overload functions must have a different parameter list

D) overload functions’ name can be different

C

5)??? In the following data types which one does not belong to the basic data types in C ++. (????? )

A)???? int? ?????? B)?? double? ?????? C) char????? D) class?????

D显而易见

6)??? We have : ?double fun( double l ); typedef double ft ( double ) ;

?ft * pfun[2]; ?? pfun[0]=fun;,in the following function calls which one is NOT correct (???? )?

A)( *pfun[0] )(3.14) ?????? ?????? ?????? B)fun(3.14)

C)?? ( pfun[0] )(3.14)???????????????????? D)( &pfun[0] )(3.14)

D

7)??? in the following identifiers groups, which one is both legitimate user identifiers? (? ????)

A) ?? _0123? ssiped? ?????? ?????? B)?? del-word? signed

C)????? list? *jer????????????????????????? D) keep%? wind

?A

8)??? The operand data type on both sides of logical operators is (? ????)

A) can only be 0 or 1

B) can only be a positive integer or 0

C) can only be an integer or character data

D) can be any type of legitimate data

D

9)??? In the following statements, which one is correct to initialize a two-dimensional array? (? ?B,D ??)

A)?? int a[2][]={{1,0,1},{5,2,3}};

B)??? int a[][3]={{1,2,3},{4,5,6}};

C)??? int a[2][4]={{1,2,3},{4,5},{6}};

D)?? int a[][3]={{1,0},{},{1,1}};

10)? For the members of class, the implies access is ( )

(A) public;?? (B)private;?? (C) protected;??? (D) static;

默认私有

Question 2: ( 20 points )

What is the output of the following code fragment?

Part1 (3 points)

#include ?<iostream>

using namespace std;

main()

{? int? x=1,y=0,a=0,b=0;

??????? switch(x)

??????? {? case? 1:

??????? ??????? switch(y)

{? ?case? 0:a++;? break;

??????? ??????? case? 1:b++;? break;

}

case 2:a++; b++; break;

case 3:a++; b++;

}

cout<<"a="<<a<<",b="<<b<<endl;

}

?

Output

a=2,b=1

Part2( 3 points)

#include <iostream>

int f1(int a,int b) {return a%b*5;}

int f2(int a,int b) {return a*b;}

int f3(int(*t)(int, int),int a,int b) { return (*t)(a, b);}

void main()

{????? int (*p)(int, int) ;

??? p=f1 ;? cout<<f3(p, 5, 6)<<endl ;

??? p=f2 ;? cout<<f3(p, 7, 8)<<endl ;

}

Output

25

56

Part3 (3 points)

#include ?<iostream>

using namespace std;

int fun(int n)

{????? if(n==1)return 1;

? ??? else

??? return(n+fun(n-1));

}

main()

{????? int x;

cin>>x; x=fun(x);

cout<<x;

}

Output

55

When the input for x is 10,the output is

Part4 (3 points)

#include<iostream>

using namespace std;

void fun(int a,int b)

{????? int k;

??????? k=a;a=b;b=k;

}

void main()

{????? int a=4,b=7,*x,*y;

x=&a;y=&b;

fun(*x,*y);

cout<<"No.1:"<<a<<','<<b<<endl;

fun(a,b);

cout<<"No.1:"<<a<<','<<b<<endl;

}

No.1:4,7

No.1:4,7

Part 5( 4 points)

#include<iostream>

using namespace std;

int fun(int n)

{ ??? static int a=3;

??????? int t=0;

??????? if(n%2)

{????? static int a=5; t+=a++; }

??? else

{????? static int a=5;? t+=a++; }

??? return t+=a++;

}

void main()

{ int i,s=0;

? for(i=0;i<3;i++) s+=fun(i);

? cout<<s<<endl;

}

Output

28

Part 6( 4 points)

#include<iostream>

using namespace std;

void main()

{????? char ch[2][6]={"2100","0846"},*pch[2];

??????? int i,j,s=0;

??????? for(i=0;i<2;i++)

???????????????? pch[i]=ch[i];

??????? for(i=0;i<2;i++)

???????????????? for(j=0;pch[i][j]>='0' && pch[i][j]<='9';j+=2)

???????????????????????? s=10*s+pch[i][j]-'0';

??????? cout<<s<<endl;

Output

2004

}

Question 3??? Short answers (20 points)

Part 1 (2 points)

In the function prototype int fun(int, int=0); ?what does the “int=0” mean?

参数默认值是0

Part 2 (2 points)

After executing the following statements, what is the values of x and y ?

int x, y; x=y=1;??? ++x||++y;

__x=2,y=1____________

Part 3 (2 points)

When the following statements are running, how many times does the loop execute?

int i=0, x=1;? do { ?x++;?? i++; ?}? while ( !x&&i<=3 );

_1次__

Part 4 ?(8 points,2 points for each)

Insert the braces in the following code to produce a specified output. Please NOTE that the program may not make any other changes except braces.

if (y==8)

if (x==5)

cout << “@@@@” << endl;

else

cout << “####” <<endl;

cout << “$$$$” <<endl;

cout << “&&&&” <<endl;

  1. When x=5 and y=8, The output is:

@@@@

$$$$

&&&&

  1. When x=5 and y=8, The output is:

@@@@

  1. When x=5 and y=8, The output is:

@@@@

&&&&

  1. When x=5 and y=7, The output is:

####

$$$$

&&&&

{ } 可有可无,{ }必须有

  1. if (y==8)

if (x==5)

{? cout << “@@@@” << endl;? }

else

{?? cout << “####” <<endl;? }

cout << “$$$$” <<endl;

cout << “&&&&” <<endl;

2) if (y==8)

if (x==5)

{?? cout << “@@@@” << endl;? }

else

{? cout << “####” <<endl;

cout << “$$$$” <<endl;

cout << “&&&&” <<endl;?? }

  1. if (y==8)

if (x==5)

{? cout << “@@@@” << endl;? }

else

{??? cout << “####” <<endl;

cout << “$$$$” <<endl;??? }

cout << “&&&&” <<endl;

4) if (y==8)

{? if (x==5)

cout << “@@@@” << endl;? }

else

{?? cout << “####” <<endl;

cout << “$$$$” <<endl;

cout << “&&&&” <<endl;?? }

Part 5 ?(6 points,1 point for each)

Find the errors and fix it in each of the following program segments. Assume the following declarations and statements:

void * sPtr = 0;

int number;

int z[5] = {1,2,3,4,5};

int * zPtr;

fix each statement.

  1. // use pointer point the starting address of the array z

zPtr=z[0];

  1. // use pointer to get first value of array

number = zPtr;

  1. // assign the third element of array z (the value 3) to number

number = *zPtr[ 2 ];

  1. // print entire array z

for( int i=0; i<=5; i++)

?????? cout<<zPtr[i] <<endl;

  1. //let the pointer point the second element of the array

zPtr=2;

  1. // assign the value pointed by zPtr to number

number = zPtr;

zPtr=z / zPtr=&z[0]

_________________________________________________________

?? number=zPtr[0]? /? number=*zPtr

_________________________________________________________

?? Number=zPtr[2]? /? number = *(zPtr+2)

_________________________________________________________

  1. ?

i<5

_________________________________________________________

?? zPtr=z+1?? /? zPtr=&a[1]

_________________________________________________________

?? Number=*zPtr

__________________________

Question 4: Fill in the blanks ( 20 Point,2 points for each blank)

  1. The following program calculates values of e according to the formula 1!+3!+5!+……+n! .

#include<iostream>

using namespace std;

void main()

{?? long int f,s;

??? ?int i,j,n;

??? ?cin>>n;

??? ?s=0,f=1;

??? ?for(i=1;i<=n; ??????(1)???? ??)

??? ?{

???????????? ?f=1;

???????????? ?for(j=1; j<=i; j++) ??????(2)????? ?;

???????????? ????? (3)????? ?;

??? ?}

??? ?cout<<"n="<<n<<" s="<<s<<endl;

}

1______i+=2 / i=i+2______________2_____f*=j / f=f*j__________

2.The main function get a string, then call other function to change the numbers 0~9 to lower case letter a~j;And change all the lower case letters to up case letters, then output the result in function main.

#include<iostream>

using namespace std;

_____(4)_____

void main()

{?? char str1[20], str2[20];

?? cin>>str1;

?change(str1,str2);

?cout<<str2<<endl;

}

void change(char *s1, char *s2)

{?? while(_____(5)_____)

?{???? if(*s1>='0'&&*s1<='9')

??? ???????????? ?*s2=_____(6)_____;

? ??????? else *s2=toupper(*s1);

? ??????? _____(7)_____

?}

?*s2='\0';

}

#include<iostream>

#include<cctype>

using namespace std;

void change(char *s1, char *s2);

int main()

{

??? char str1[20], str2[20];

??? cin >> str1;

??? change(str1, str2);

??? cout << str2 << endl;

??? return 0;

}

void change(char *s1, char *s2)

{

??? while (*s1)

??? {

??????? if (*s1 >= '0' && *s1 <= '9')

??????????? *s2 = *s1 - '0' + 'a';

??????? else

??????????? *s2 = toupper(*s1);

??????? s1++;

??????? s2++;

??? }

??? *s2 = '\0';

}

3.??? Output matrix as the Figure right of the code:

main()

{ int a[7][7];

?int i,j;

?for (i=0;i<7;i++)

?? for (j=0;j<7;j++)

???? { if (_____(8)___________) a[i][j]=1;

???? ??else if (i<j&&i+j<6) _____(9)___________;

???? ??else if (i>j&&i+j<6) a[i][j]=3;

???? ??else if (____(10)____ ___) a[i][j]=4;

????? ?else a[i][j]=5;

????? }

?? for (i=0;i<7;i++)

???? {???????? for (j=0;j<7;j++) ? cout<<setw(3)<<a[i][j];

??? ???????????? cout<<endl;

???? }

}

9____a[i][j]=2__________10 ____i<j &&i+j>6__________________

世间温柔,不过是芳春柳摇染花香,槐序蝉鸣入深巷,白茂叶落醉故乡。

文章来源:https://blog.csdn.net/2302_79394843/article/details/135040406
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。