2.2 第一章 命名空间

本文详细解释了C++编程的基本步骤,包括编辑、编译、连接和运行,以及数据封装、对象、类的概念,展示了如何使用cin和cout进行输入输出,以及面向对象编程中类和对象的应用。此外,还涉及了八进制、流库、指针和数组的使用,以及循环和字符串操作,最后给出了一个生成随机密码的简单示例。
摘要由CSDN通过智能技术生成

一.选择题

   1、编写C++程序一般需经过的几个步骤依次是( B )

A. 编辑、调试、编译、连接

B. 编辑、编译、连接、运行

C. 编译、调试、编辑、连接

D. 编译、编辑、连接、运行

解析:经过编辑、编译、连接和运行四个步骤。编辑是将C++源程序输入计算机的过程,保
存文件名为cpp。编译是使用系统提供的编译器将源程序cpp生成机器语言的过程,目标文件为
obj,由于没有得到系统分配的绝对地址,还不能直接运行。连接是将目标文件obj转换为可执行
程序的过程,结果为exe。运行是执行exe,在屏幕上显示结果的过程。

   2、所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是( A )

A. 类

B. 对象

C. 函数体

D. 数据块

解析:一般又有变量又有函数的构造数据类型,由类来完成,实例化出一个对象

3、在C++中,使用流进行输入输出,其中用于屏幕输入( A )

A. cin

B. cerr

C. cout

D. clog

解析:cin是标准输入流,cout是标准输出流,clog是经缓冲的标准错误流,cerr是标准错误流,C++ 中的 clog 对象是类 ostream 的对象。它与标准 C 错误输出流 stderr 相关联。clog和cerr都与stderr相关联,但它与cerr的不同之处在于clog中的流被缓冲并且不会自动与cout绑定。

   4、关于对象概念的描述中,说法错误的是( A )

A. 对象就是C语言中的结构变量

B. 对象代表着正在创建的系统中的一个实体

C. 对象是类的一个变量

D. 对象之间的信息传递是通过消息进行的

解析:对象只在C++中有,既有数据又有操作,C中结构体变量只有数据,没有操作。

   5、在C++语言中,数据封装要解决的问题是( D )

A. 数据的规范化

B. 便于数据转换

C. 避免数据丢失

D. 防止不同模块之间数据的非法访问

解析:封装是指把对象属性和操作结合在一起,构成独立的单元,它的内部信息对外界是隐蔽的,不允许外界直接存取对象的属性,只能通过有限的接口与对象发生联系。类是数据封装的工具,对象是封装的实现。类的访问控制机制体现在类的成员中可以有公有成员、私有成员和保护成员。对于外界而言,只需要知道对象所表现的外部行为,而不必了解内部实现细节。封装体现了面向对象方法的“信息隐蔽和局部化原则”。

  6、在面向对象的程序设计中,首先在问题域中识别出若干个 ( B )

A. 函数 B. 类 C. 文件 D. 过程

解析:面向过程的和面向对象都具有、函数、文件和过程这些概念,而面 向对象程序才有类和对象的特征。

   7、在下列成对的表达式中,运算结果类型相同的一对是( A )

A. 7.0/2.0和7.0/2

B. 5/2.0和5/2

C. 7.0/2和7/2

D. 8/2和6.0/2.0

解析:小数默认的类型为 double 类型,整数除以整数结果是取整的结果。 A、B、 C和D项的第一项分别是 double、int 、double 和int 类型的 , 第二项分别是 double 、int 、int 和double 类型。

   8、函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为( C )

A. 5       B. 4          C. 2            D. 1

解析:参数个数为3,实参个数为2,另外一个参数为哑元,只做占位,不做实参传递。

  9、执行语句

char ch[] = "Hello";

char * p = &ch[0];

cout << p;

结果是输出    C    

A. 一个地址 B. H C. Hello D. 乱码

解析:指针p指向ch[0]的地址,也就是ch[]的地址,指针解引用之后得到的就是ch[]里的内容。

   10、下列程序的输出结果是( B )

#include <iostream.h>

void main()

{ int n[][3]={10,20,30,40,50,60 };

int (*p)[3];

p=n;

cout<<p[0][0]<<","<<*(p[0]+1)<<","<<(*p)[2]<<endl; }

A. 10,30,50

B. 10,20,30

C. 20,40,60

D. 10,30,60

解析:p表示指向数组n的行指针。如果将指针的初始化(*p)[3]=n;地址的等价形式:p+i、p[i]、*(p+i)都表示数组n第i+1行的第1个元素的首地址。*(p+i)+jp[i]+j &p[i][j]都表示数组n第i+1行、第j+1列元素的地址。

二.填空题1、执行下列代码

cout<<“oct:”<<oct<<34;

程序的输出结果是   oct:42   

解析:oct为八进制,34的二进制为0010 0010,按照000 100 010写,3个数字为一位,即42

2、C++的流库预定义了4个流,它们是cin、cout、clog和  cerr  。 

解析:cin是标准输入流,cout是标准输出流,clog是经缓冲的标准错误流,cerr是标准错误流。

3、表达式cout<<endl; 还可表示为   ' \n '  

解析:cout << endl;为C++中的换行,也可以用C中的'\n'来换行,但在C中不能用cout << endl;来换行。

4、下面程序的输出结果为  5 

#include <iostream.h>

void main()

{ int num=2,i=6;

do

{i--;

num++;

}while(--i);

cout<<num<<endl;

}

解析:第一次循环,i--后i=5,num++后num=3,判断i--后i=4为真,进入第二次循环,i--后i=3,num++后num=4,判断i--后i=2为真,进入第三次循环,i--后i=1,num++后num=5,判断i--后i=0为假,退出循环,num=5,i=0。

5、int n=0;

while(n=1)n++;

while循环执行次数是  无数次  

解析:定义了n=0,在while条件中n=1为赋值操作,每次在while条件中赋值后n=1为真,循环语句可以执行,所以为无数次。

6、给出下面程序输出结果。

#include <iostream.h>

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

void fun(int *pa,int n);

void main()

{int m=8;

fun(a,m);

cout<<a[7]<<endl;

}

void fun(int *pa,int n)

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

*(pa+7)+=*(pa+i);

}

运行程序,写出程序执行的结果  28  

解析:void fun(int*pa,int n)函数定义的功能就是把数组的每个元素的值加到元素pa[7]中,也就是数组的元素之和放在a[7]中存储,所以结果28。

7、给出下面程序输出结果。  20  

#include <iostream.h>

void main()

{ int *p1;

int **p2=&p1;

int b=20;

p1=&b;

cout<<**p2<<endl;

}

解析:指针p1指向b,存储b的地址,指针p2指向p1,存储指针p1的地址,p2一次解引用为p1里的值,即b的地址,二次解引用是对一次解引用后的b的地址的再次解引用,就是b的值,所以p2二次解引用的值为b的值20。

8、 #include <iostream.h>

void main()

{ int a,b,c;

char ch;

cin>>a>>ch>>b>>c;//从键盘上输入1.5×c×10×20,×表示一个空格

cout<<a<<endl<<ch<<endl<<b<<endl<<c<<endl;

}

解析:

9、在下面程序横线处填上适当内容,使程序执行结果为:

S=2

S=5 

S=9

#include <iostream.h>

void sum(int i)

{ static int s;

s+=i+2;

cout<<"s="<<s<<endl;

}

void main (void)

{ int i;

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

sum(i);

}

解析:每调用一次函数sum就会打印一次s的值,所以for循环体里第一个条件i=0,所以第二个条件为i<3或者i<=2,然后i++,函数sum里,2=0+2,5=2+1+2,9=5+2+2,相当于是自身加上i+2,即s+=i+2,或者为s=s+i+2

10、下面是一个三角形三边,输出其面积C++程序,在下划线处填上正确的语句。

#include <iostream.h>

#include <math.h>

void area()

{double a,b,c;

cout<<"Input a b c:";

cin >> a >> b >> c;

if(a+b>c&&a+c>b&&c+b>a) // 三角形 任意2边大于第三边

{ double l=(a+b+c)/2; // 半周长

   double s=sqrt(l*(l-a)*(l-b)*(l-c)) // 海伦公式

cout<<"The area is:"<<s<<endl;

}

else

cout<<"Error"<<endl;

}

void main()

{ area(); }

解析:海伦公式是利用三角形三边和周长直接求面积的公式,所以该填输入a、b、c的值的语句

三、编程题

3.1 、 创建一个程序,输出8个随机大小写字母或数字组成的密码,允许输入重复的字符

代码:

#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
    srand(time(NULL)); //初始化随机数生成器
    string password="";//定义一个字符串存储密码
    // 允许的字符集
    const string ch="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    int length=8;//密码长度
    while(1)//循环生成密码
    {
        for(int i=0;i<length;i++)
        {
            int index=rand()%ch.length();//随机选择一个字符索引
            password+=ch[index];//将选择的字符添加到密码中
        }
        cout << "此次随机生成的密码为:" << password << endl;
        Sleep(1000);//休眠1秒
        password.clear();//清空字符串
    }
    return 0;
}

结果:

  • 42
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值