一、填空题
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中的相应位置中。
下一篇:暂无