优题选
题目:电大《C++语言程序设计》形成性考核册作业及(2)

一、填空题

1.假定一个一维数组的定义为“char * a[5];”,则该数组所含元素的个数为 5 ,所占存储空间的字节数为 20 。

2.假定一个二维数组的定义为“int a[4][6];”,则该数组所含元素的个数为 24 ,所占存储空间的字节数为 96 。

3.假定一个二维数组的定义为“char a[8][8];”,则该数组所含元素的个数为 64 ,所占存储空间的字节数为 64 。

4.执行“typedef float ABC[10];”语句把ABC定义为具有10个单精度元素的 数组 。

5.在函数外定义的变量称为 全局 变量,若没有被初始化则系统隐含对它赋初值 0 。

6.函数中的形参变量的初值由 调用 该函数时获得。

7.函数调用时,实参向形参的传送分为 传值 和 传址 两种传送方式。

8.变量分为全局和局部两种, 局部 变量没有赋初值时,其值是不确定的。

二、给出下列程序运行后的输出结果

1.#include<iostream.h>

void mian(){

int a[10]= {12,39,26,41,55,63,72,40,83,95};

int i0=0,i1=0,i2=0;

for(int i=0;i<10;I++)

switch(a[i]%3){

case 0 : i0+ +;break;

case 1 : i1+ +;break;

case 2 : i2+ +;

}

cout<< i0<<’ ’<<i1<<’ ’<<i2<<endl;

}

4 2 4

2.#include<iostream.h>

#include<string.h>

void main(){

char * a[5] = {”student”,”worker”,”cadre”,”apple”,”peasant”};

char * p1,*p2;

p1=p2= a[0];

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

if(strcmp(a[i],p1)>0)p1= a[i];

if(strcmp(a[i],p2)<0)p2= a[i];

}

cout<<p1<<’ ’<<p2<<endl;

}

worker apple

3.#include<iostream.h>

void main(){

int a[8]= {36,73,48,14,55,40,32,66};

int b1,b2;

b1=b2= a[0];

for(int i=1;i<8;I+ +)

if(a[i]>b1){

if(b1>b2)b2=b1;

b1= a[i];

}

cout<<b1<<’ ’<<b2<<endl;

}

73 36

4.#include<iostream.h>

void main(){

char a[ ]= ”aabcdaabacabfgacd”;

int i1=0, i2=0, i=0;

while(a[i]){

if(a[i] = = ’a’)i1+ +;

if(a[i] = = ’b’)i2+ +;

i + +;

}

cout<<i1<<’ ’<<i2<<endl;

}

7 3

5.#include<iostream.h>

void main(){

char a[ ]= ”abcdabcdbdaeaf”;

int b[5]= { 0 },i=0;

while(a[i]){

switch(a[i]){

case ’a’ : b[0] + +;break;

case ’b’ : b[1] + +;break;

case ’c’ : b[2] + +;break;

case ’d’ : b[3] + +;break;

default : b[4] + +;

}

i + +;

}

for(i=0;i<5;i + +)cout<<b[i]<<’ ’;

cout<<endl;

}

4 3 2 3 2

6.#include<iostream.h>

void main(){

int a[10] = {73,83,54,62,40,75,80,92,77,84};

int b[4] = {60,70,90,101};

int c[4] = {0};

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

int j = 0;

while(a[i] > =b[j])j + +;

c[j] + +;

}

for(i =0;i <4;i + +)cout<<c[i]<<’ ’;

cout<<endl;

}

2 1 6 1

7.#include<iostream.h>

void main(){

int a[3] [4] = {{1,2,7,8},{5,6,11,12},{24,10,3,4}};

int m = a[0] [0];

int ii =0,jj =0;

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

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

if(a[i] [j] >m){m= a[i] [j];ii=i;jj=j;}

cout<< ii << ’ ’ << jj << ’ ’<< a[ii] [jj]<<endl;

}

2 0 24

8.#include<iostream.h>

void main(){

int a =10,b =20;

cout<< a << ’ ’ << b << endl;

{ a * = 4;

int b = a +35;

cout<< a << ’ ’ << b << endl;

}

cout<< a << ’ ’ << b << endl;

}

10 20

40 75

40 20

三、写出下列每个函数的功能

1.int WC(int a[ ],int n,int k){

int c = 0;

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

if(a[i] > = k)c + +;

return c;

}

返回有n个元素的整型数组a中大于等于整数k的元素个数。

2.#include<iostream.h>

void WA(int a[ ],int n){

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

int k = i;

for(int j = i+1;j<n;j + +)

if(a[j]<a[k])k = j;

int x = a[i];a[i] = a[k];a[k] = x;

}

}

函数功能是将有n个元素的整型数组从小到大排列。

3.#include<iosteram.h>

template<class TT>

int WG(TT a,TT b){

if(a>b)return 1;

else if(a = = b)return 0;

else return -1;

}

比较两个任意类型的数a和b,若a大于b则返回1,若a等于b则返回0,若a小于b否则返回1。

4.#include<iostream.h>

template<class Type>

Type WD(Type a[ ],int n){

Type m= a[0];

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

if(a[i] > m)m = a[i];

return m;

}

返回有n个元素的任意类型数组中最大的数。

5.Template<class Type>

void WE(Type a[ ],Type b[ ],int n){

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

b[i] = a[i] * 2;

}

将有n个元素的任意类型数组a中的每个元素乘以2后放到数组b中的相应位置中。

关键字:
返回顶部