C++基础+编程题复习 下载本文

内容发布更新时间 : 2024/5/19 8:46:55星期一 下面是文章的全部内容请认真阅读。

B. 函数返回值的类型决定了返回值表达式的类型

C. 当函数类型与返回值表达式类型不同,将对返回值表达式的值进行类型转换 D.函数返回值类型就是返回值表达式类型 30. 以下正确的说法是_____d________。 A. 用户若需要调用标准函数,调用前必须重新定义

B. 用户可以直接调用所有标准库函数 C. 用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数 D. 用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数

31. 下述对C++语言字符数组的描述中错误的是___c___

A. 字符数组可以存放字符串 B. 字符数组可以整体输入,输出

C. 可以在赋值语句中用赋值运算符―=‖对字符数组整体赋值

D. 不可以用关系运算符对数组中的字符串进行比较

32. 下面描述正确的是__d___

A. 两个字符串所包含的字符个数相同时才能比较字符串

B. 字符个数多的字符串比字符个数少字符串大

C. 字符串―STOp‖与―STOP‖相等 D. 字符串―That‖小于字符串―The‖

33. 判断字符串s1是否大于字符串s2,应当使用____d__

A. if(s1>s2) B. if(strcmp(s1,s2)) C.if(strcmp(s2,s1)>0)D. if(strcmp(s1,s2)>0) 34. 下面程序段的运行结果是____b___ char c[ ]=\ A. 14 B. 3 C. 9

D. 字符串中非法字符,输出值不确定 35. 下面程序段的运行结果是____d__ char a[7]=\char b[4]=\strcpy(a,b); cout<

A. d B. \\0 C. e D. f

36. 以下能对二维数组a正确初始化的语句是___b___

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,1}};

37. 若有说明:int a[3][4];则对a数组元素的正确引用是___c___ A. a[2][4] B. a[1,3] C. a[1+1][0] D. a(2)(1) 38. 若二维数组a有m列,则在a[I][J]前的元素个数为____b___ A. J*m+I B. I*m+J C. I*m+J-1 D. I*m+J+1 -2.填空题

1.在C++中字符串常量―Students‖的值是_该字符穿的首地址 __。 2. 设有语句―int a[10];‖,则a的值是_数组a的起始地址__。

3. 以下程序的执行结果是___s=55____ 。 #include int sum(int); void main() { int s,i;

for(i=1;i<=10;i++) s=sum(i);

cout<<\}

int sum(int k) { static int x=0; return(x+=k); }

4. 以下程序的执行结果是___120___ 。 #include f(int b[],int n) { int i,r=1;

for(i=0;i<=n;i++) r=r*b[i]; return r; }

void main ( )

{ int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3);

cout<

5. 下面程序运行后输出的结果是__4__3____ 。

#include void main()

{ char a[]=\ int i1=0,i2=0,i=0; while(a[i])

{ if(a[i]=='a') i1++; if(a[i]=='b') i2++; i++; }

cout<

6. 下面程序运行后输出的结果是__c_e_g_____ 。 #include void main()

{ char s[][5]={\ int x,y;

for(x=0;x<3;x++) for(y=0;y<4;y++) { int z=x+y; if(z==3)

cout<

7. 执行完

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

#define SIZE sizeof(data)/sizeof(data[0]) 则SIZE的值为__6___。 8. 执行语句序列 char s1[20]=\ strcat(s1,strcat(s2,s3));

后s1,s2,s3的值分别是___(1)___ 、___(2)___ 、ccccc 。 Aaabbbbccccc bbbbccccc 9. 执行语句序列

char s1[ ]=\for(int i=0;s2[i]=s1[i];i++);

后,数组s2中的字符串是_ABCD__。 10. 设有语句― char s[ ]=\\\0nanjin\m=strlen(s);‖,则m 的值是__5___。

11. 设有语句‖char s[]=\\\0Ch\m=sizeof(s);‖,则m的值是__7___。 12. 52.若有宏定义: #define N 3

#define Y(n) ((N+1)*n)

则执行语句―z=2*(N+Y(N+2));‖后,z的值为 ___34___。

13. 在C++中,函数名的值是_函数的入口地址__。

14. 以下程序输出的第一行是____2____,第三行是____24____。 #include int fun(int n) { static int j=1; return j*=++n; }

void main(void)

{ for(int k=1;k<=4;k++) cout<

15. 运行以下程序后输出的第二行是____6___,第四行输出的是___20____。 #include int f(int n,int x) { x+=1;

if(n==3) return x;

else return x+f(n+1,x+1); }

void main(void)

{ cout<

16. 如果一函数直接或间接地调用自身,这样的调用称为_递归调用__。

17. 下面程序运行后输出的第二行是___10__35__5____ 。 #include int a=5;

void main() { int a=10,b=20;

cout<

for(int i=1; i<6; i++)

{a+=i; b+=a; }

cout<

cout<

18. 以下程序执行后输出的结果是___x=-7___y=-10 m=2 #include int x=-8,y=100; int func(int a) { int y;

y=x+a; x++; a++; return(x+y+a); }

void main() { int m=2; y=func(m);

cout<<\y=\m=\}

19. 以下程序的执行结果是_5_8_11 14。 #include #define N 5 void func(); void main() {

for(int i=1;i

cout<

void func() {

static int a; int b=2;

cout<<(a+=3,a+b)<<\}

20. 以下程序的执行结果是__25__ 。 #include int add(int a,int b); void main() {

extern int x,y;

cout<

int x=20,y=5; int add(int a,int b) {

int s=a+b; return s; }

21. 对数组按值从大到小的顺序排序后输出,请填空。

#include void main() {

float a[7]={2,6,3,8,3,12,9}; _________________; sort(a,7);

for(int i=0;i<7;i++) cout<

void sort(float *p,int n) {int i,j,k; float t; for(i=0;i

for(j=i+1;j

if(____________) k=j; if(________)

{ t=*(p+i); *(p+i)=*(p+k); *(p+k)=t; } } void sort(float*,int) p[k]

22. 函数中的形参和调用时的实参都是数组名时,传递方式为_按地址传递_,都是变量时,传递方式为_按值传递_。

C++编程复习

? 求出二维数组主对角线之和和次对角线之和

要求用函数void input(int a[4][4]):输入二维数组a的值,主函数调用函数输入二维数组,计算主对角线和次对角线之和并输出结果

#include void input(int a[4][4]) {

for(int i=0;i<4;i++) for(int j=0;j<4;j++) cin>>a[i][j]; }

void main() {

int a[4][4],s=0,t=0; input(a);

for(int i=0;i<4;i++) for(int j=0;j<4;j++) {

if(i==j)s+=a[i][j]; if((i+j)==3)t+=a[i][j]; }

cout<<\主对角线和是:\此对角线和是:\}

? 求一组非0整数的平均值,并统计出这一组数中正数和负数的个数 要求定义一维数组,输入一组非0整数(以输入0作为结束标志),计算这一组数的平均值,统计正数和负数的个数,并输出 #include void main() {

int

a[100],count1=0,count2=0,ave=0; float j=0;

cout<<\请输入一组数\

for(int i=0;;i++) {

cin>>a[i]; if(a[i]==0) break; else if(a[i]>0)

count1=count1+1; else

count2=count2+1; ave=ave+a[i]; j++; }

cout<<\这组数的平均值是\正数个数\负数个数\}

? 求n阶乘倒数和(s= 1/1!+ 1/2!+ 1/3!+……+ 1/n!)并输出 要求用函数求n的阶乘,在主函数中输入n,调用函数,求n阶乘倒数和,输出结果 #include float f(int n) {

float t=1.0,s=0.0; for(int i=1;i<=n;i++) {

for(float j=1.0;j<=i;j++) { t*=1/j; }

s+=t; }

return s; }

void main() { int n; cin>>n; cout<

? 求一定范围内符合条件的数 要求:判断一个数是否符合条件用函数做,如果符合,返回1,否则返回0

主函数调用函数判断给定范围内的每一个数是否符合条件,如果符合,做相应操作 此类型包括:

查找100以内的所有素数并输出(每行输出5个)

(1) #include int fun(int n) { int i;

for(i=2;i

void main() {

int n=100,j=0;

for(int i=2;i<=100;i++) {

if(fun(i)==1) {

cout<

if(j%5==0) cout<<'\\n'; } } }

求100以内的所有素数的倒数和(2) #include int fun(int n) { int i;

for(i=2;i

void main() {

float sum=0;

for(int i=2;i<=100;i++) {

if(fun(i)==1)

sum=sum+1/((float) i); }