第81课 投票表决
投票表决(指针、指针与数组)
编程世界推出全民编程计划决议,需要10位参会代表投票,如果赞同票数超过80%,表示通过决议。投票规则1代表赞同,-1代表反对,其他数字表示弃权。
投票表决

运行程序,输入:
输出:
决议最终,赞同:8票;反对:1票;弃权:1票
(1)int vote[10]={0}声明了一个长度为10的整数数组,设置初始值全为0。
(2)int*p声明了一个指针变量。
(3)p=vote让指针变量指向数组vote。
敲黑板
指向数组的指针变量称为数组指针变量,一个数组是由一块连续的内存单元组成的,数组名代表了这块连续内存单元的首地址。因此,p=vote意味着将指针变量指向了数组中的第一个元素的地址(也称为数组的首地址)。
p=vote等价于p=&vote[0],它们都将指针变量指向了数组的首元素地址,首地址可以表示为p、vote、&vote[0]。那么元素vote[1]的地址可以表示为p+1、vote+1、&vote[1]。
(4)*(p+i):既然p代表数组首元素的地址,那么p+1就表示第二个元素地址,p+2表示第三个元素地址,以此类推。还可以通过p[i]下标的方式来表示。
敲黑板
假设声明了数组int vote[10]={0}和指针变量int*p,再让指针变量指向数组p=vote,那么可以采用以下两种方法来访问数组元素:
●采用下标法p[i]来访问数组vote的元素。
●采用指针法*(p+i)(相当于地址往后移动i个位置)来访问数组vote的元素。
(5)*(p+i)==1、*(p+i)==-1将数组元素与1和-1进行比较。
巩固练习
(1)阅读下面的程序代码,如果想要输出字母'e',问号出应该选择数字几?()

A.5
B.4
C.3
D.2
(2)阅读下面的程序代码,填写程序的输出结果。

输出:_____________________________________________________________ _
(3)以下程序是对数组num中的所有元素求和,请完善该程序。
#include
using namespace std; int main(){
int num[10]={0,1,2,3,4,5,6,7,8,9}; int*p,sum=0; p=________________; for(int i=0;i<10;i++){
cout<<*(________________); sum +=p[_____________];}
cout<<endl; cout<<sum; return 0;}