C++学习(2)

c++学习(2)

这次学习的主要是一些符号、表达式及控制结构。这些与C语言中大部分都很相像,这边主要配合着程序讲解一些与C不同的。

作用域解析操作符::,主要用于甄别类,以确定成员函数的所属类
#include<iostream>
using namespace std;
int m=10;//声明并初始化一个全局变量
int main()
{
	int m=20;//又声明了m,为main函数的局部变量
	{
		int k=m;
		int m=30;//在内层块又声明了m,使其成局部变量
		cout<<"we are in inner block\n";
		cout<<"k="<<k<<endl;
		cout<<"m="<<m<<endl;
		cout<<"::m="<<::m<<endl;//::m总是指全局变量,此处指的是{}外,main中的
	}
	cout<<"we are in outter block\n";
	cout<<"m="<<m<<endl;
	cout<<"::m="<<::m<<endl;//::m总是指全局变量,此处指的是最外层的全局变量
	return 0;
}

在以上程序中,主要体现C++通过引用作用域解析操作符:: ,来解决全局变量无法被内层块所访问的问题。

<span style="font-size:12px;color:#000000;BACKGROUND-COLOR: #cccccc">///操纵器,用于格式化显示数据的操作符,最常用的有endl和setw
//endl,用在输出语句中,触发换行符的插入;
//setw,对所有数值设定一个公共的域宽,并强制右对齐
#include<iostream>
#include<iomanip>//该头文件包含setw函数
using namespace std;
int main()
{
	int B=950,A=95,T=1045;
	cout<<setw(10)<<"Basic"<<setw(5)<<B<<endl
		<<setw(10)<<"Allowance"<<setw(5)<<A<<endl
		<<setw(10)<<"Total"<<setw(5)<<T<<endl;
	cout<<"Basic"<<B<<"\n"
		<<"Allowance"<<A<<"\n"
		<<"Total"<<T<<"\n";
	return 0;
}</span>

以上程序主要体现了C++中新的一类指令——操作符。
题目1.编写一个程序,使用引用变量作为参数,交换一对整数值。

解题关键:就在于引用变量的使用。引用变量主要用处是函数自变量。引用变量的定义使用了取地符号&的重载,格式如下:数据类型 & 参数名=变量名。引用变量就相当于定义变量的别名,即可替换的名字。具体参考程序如下:

<span style="font-size:12px;color:#000000;">#include<iostream>
using namespace std;
void transform(int & x,int & y)//传引用调用 &x 相当于a的别名
{
	int temp;
	temp=x;
	x=y; //当a、b发生变化时,x、y也变化
	y=temp;
}
int main()
{
	int a,b;
	cout<<"Enter a is:";
	cin>>a;
	cout<<"Enter b is:";
	cin>>b;
	transform(a,b);//函数的调用
	cout<<"a="<<a<<endl;
	cout<<"b="<<b<<endl;
	return 0;
}</span>

题目2.编写一个程序,创建一个数组,大小为用户指定数M,使用new操纵符。

解题关键:本题主要考查内存管理操作符new,主要用来创建对象并分配内存空间,而要销毁则需要使用delete。new创建多维数组时除第一维可以是变量外,其它位数必须指定大小,如int *p =new int[m][5][4];具体参考程序如下:

<span style="font-size:12px;color:#000000;">#include<iostream>
using namespace std;
int main()
{
	int M;
	cout<<"Enter the array's length:";
	cin>>M;
	int  * p =new int[M];//new 语法:指针变量=new 数据类型
	delete [] p;//释放指针P指向的整个数组
	return 0;
}</span>

题目3.编写一个函数,使用for循环,打印如下输出:

1

22

333

..........

解题关键:本题主要考查控制结构:for循环的使用。相信学过C语言对for循环的使用并不会陌生。参考程序如下:

<span style="font-size:12px;color:#000000;">#include<iostream>
using namespace std;
int main()
{
	int a=1;//控制输出值及循环次数
	while(a!=10)
	{
		for(int i=1;i<a+1;i++)//for 语句的使用,格式:for(变量初始值;判断条件;变量变化)
			cout<<a;
		cout<<endl;
		a++;
	}
	return 0;
}</span>

题目4.竞选中有5名候选人,分别以1~5标记。投票中,要记录每人的得票数。编写一个程序,读入选票,使用数组count来记录每个候选人的得票数。如果选票上的数字不在1~5,当弃票处理。程序中也要统计出弃票的数目。

解题关键:首先分析,每个候选人及弃票数都要统计各自的得票数,那不是有6中情况,这时就可以想到多分支语句switch语句。(当然if语句也是可以实现的)。在C中与C++中switch语句并没有太大区别。另外一点,就是如何控制计票的终止。可以知道,当所有投的票都唱票完了,也意味着每个人所得票数出来了,所以可以总投票数来终止计票过程。其参考程序如下:

#include<iostream>
using namespace std;
int main()
{
	int count[6]={0};//此数组用于记录各人得票数及弃票数
	int i,num=50;//i用于输入每个人的投票情况,num表示总投票人数(控制计票的结束)
在此处num的值也可以设置成用户输入的形式
	while(num--)
	{
		cout<<"Enter a number for a people:";//提示输入
		cin>>i;//输入当前获票的人
		switch(i)
		{
		case 1://记录第一个人的得票数
			{
				count[1]++;
				break;
			}
		case 2://记录第二个人的得票数
			{
				count[2]++;
				break;
			}
		case 3://记录第三个人的得票数
			{
				count[3]++;
				break;
			}
		case 4://记录第四个人的得票数
			{
				count[4]++;
				break;
			}
		case 5://记录第5个人的得票数
			{
				count[5]++;
				break;
			}
		default://记录弃票数
			{
				count[0]++;
				break;
			}
		}
	}
	for(int j=0;j<6;j++)//显示最终每个人的得票数
	{
		cout<<"The number of people:"<<j<<endl
			<<"The vote is:"<<count[j]<<endl<<endl;
	}
	return 0;
}




 




 

 

针对投票系统源代码 仅供参考 一、课程设计目的和任务 为完成对十佳运动员的选拔,故设计此程序通过众人对20位候选人的投票表决,选出其中票数最高的前十位,定为十佳运动员。这就要求本程序要能够录入20位候选人的名单,包括起编号和姓名,然后程序可以接受用户的投票,并且自动作出票数统计并输出最后的票数由高到低的排序结果。 二、分析与设计 1.程序的基本功能: (1)查看十佳运动员的候选名单。 (2) 接受用户的投票。 (3) 自动统计用户投票并输出排序结果。 (4) 添加一个管理员,可以录入候选者名单。 (5) 退出程序。 2.系统总框图: 3.定义的函数及说明: 本程序由11个函数构成 back_sel()---用来返回用户菜单 display1()------用来显示用户菜单 f_read()-------用来读出候选人名单 admirin_save()-----管理员输入数据并将数据存盘 admirin()------管理员录入数据界面 admir()——管理员界面登录 paixv()-----查看十佳候选人排名,票数由高到低 write()------调用此函数来写入票数 voting()------投票界面,进行对候选者的投票 select()-------首页界面选择 Main()---主函数。 4.算法设计: 本程序主要运用线性表的顺序存储结构,从而很容易的对数组进行操作。同时对于票数的统计排序方面采用比较经典的“冒泡法”来完成,从而优化了整个程序体,降低时间复杂度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值