数组典型例题及参考答案
c语言数组练习题及答案

c语言数组练习题及答案第一题:在数组a中,存放有n个学生的成绩.试编一函数:将低于平均分的学生人数m由函数值返回,将低于平均分的分数由数组b带回. int fun(int a[],int n,int b[]) {int i,m=0,aver=0;for(i=0;i<n;i++) aver+=a[i];aver/=n;for(i=0;i<n;i++)if(a[i]<aver) b[m++]=a[i];return m;}第二题:试编一函数:求出1000之间能被7或11整除,但不能同时被7或11整除的所有整数的个数n由函数值返回,并将符合条件的数放在数组a中带回. int fun(int a[]){int i,n=0;for(i=1;i<1000;i++)if((i%7==0&&i%11!=0)||(i%7!=0&&i%11==0)) a[n++]=i;return n;}第三题:试编一函数:将大于整数m且紧靠m的k个素数存入数组a中. void fun(int m,int k,int a[]) {int i,n,data,flag;data=m+1; n=0;while(n<k){flag=1;for(i=2;i<=data/2;i++)if(data%i==0){flag=0; break;}if(flag) a[n++]=data;data++;}}第四题:试编一函数:在数组a中有n个整数,要求把下标从0到p(p小于等于n-1)的数平移到数组的最后.如:原始内容: 1,2,3,4,5,6,7,8,9,10; 当p=4时:移后内容: 6,7,8,9,10,1,2,3,4,5void fun(int a[],int n,int p) {int i,j,t;for(i=0;i<=p;i++){t=a[0];for(j=1;j<n;j++) a[j-1]=a[j];a[n-1]=t;}}第五题:试编一函数:在具有n个数据的数组a中,求出次最大值的下标并由函数值返回.int fun(int a[],int n){int i,j,max,may;if(a[0]>a[1]){max=0; may=1;}else {max=1; may=0;}for(i=2;i<n;i++)if(a[i]>a[max]){may=max;amx=i;}else if(a[i]>a[may]) may=i;return may;}第六题:在数组a中有n个四位数.试编一函数,要求按每个数的后三位的大小进行升序排列,当后三位等相同时,则对这些数值按原始四位数据进行降序排序.将排序后的前10个数存入数组b中.(提示:可采用选择排序)int fun(int a[],int n,int b[]) {int i,j,k,t,m=10;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(a[j]%1000<a[k]%1000) k=j;else if(a[j]%1000==a[k]%1000 && a[j]>a[k]) k=j;if(k!=i){t=a[i]; a[i]=a[k]; a[k]=t;}}for(i=0;i<m;i++) b[i]=a[i];return m;}第七题:在三位数(100至999)中寻找符合下面条件的整数.它即是完全平方数,又有两位数字相同.(如:144,676;)并将符合条件数的个数n由函数值返回,符合条件的数存入数组a中返回.int fun(int a[]){int i,j,hun,ten,data,n=0;for(i=10;i<32;i++){j=i*i;if(j>=100&&j<=999){hun=j/100;ten=j%100/10;data=j%10;if(hun==ten||ten==data||data==hun) a[n++]=j;}}return n;}第八题:判断一个长整型数是否为回文数(回文数是指其数字左右对称的整数).当该数是回文数时,函数值返回1,否则返回0.(提示:利用逻辑量flag进行操作). intfun(long m){int i=0,n=0,flag=1,a[20];while(m){a[n]=m%10; m=m/10; n++;}while(i<=n/2 && flag)if(a[i]!=a[--n] flag=0;else i++;return flag;}第九题:在数组a中存有n个数据,试编一函数:依次从数组中取出一个数据,如查该数连续大于该数以后的5个数且该数是奇数,统计出满足此条件数的个数m由函数值返回,并把这些数按从小到大的顺序存入数组b中.int fun(int a[],int n,int b[]) {int i,j,flag,m=0;for(i=0;i<n-5;i++){for(j=i+1;j<=i+5;j++)if(a[i]>a[j]) flag=1;else {flag=0; break;}if(flag==1 && a[i]%2==1) b[m++]=a[i];}for(i=0;i<m-1;i++)for(j=0;j<m-1-i;j++)if(b[j]>b[j+1]){flag=b[j]; b[j]=b[j+1]; b[j+1]=flag;}return m;}第十题:在数组a中有n个四位数,试编一函数:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数m由函数值返回,再把所有满足此条件的四位数依次存入数组b中,然后对数组b中的四位数按从小到大的顺序排序.int fun(int a[],int n,int b[]) {int i,j,m,thou,hun,ten,data;for(i=0;i<n;i++){thou=a[i]/1000;hun=a[i]%1000/100;ten=a[i]%100/10;data=a[i]%10;if(thou+data==hun+ten) b[m++]=a[i];}for(i=0;i<m-1;i++)for(j=0;j<m-1-i;j++)if(b[j]<b[j+1]){data=b[j]; b[j]=b[j+1]; b[j+1]=data;}}第十一题:在数组a中有n=100个人围坐一圈并按顺时针方向从1到n编号,从第s=1个人开始进行从1到m=10的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止,现要求将出圈次序重新存入数组a中.void fun(int a[],int n,int s,int m) {int i,j,k,l,x;i=s-1; k=0; l=n;while(l>0){k++;if(k==m){x=a[i];for(j=i+1;j<n;j++) a[j-1]=a[j];a[n-1]=x;k=0; l--;}else i++;if(i==l) i=0;}}。
数据结构题目及答案

数据结构题目及答案一、数组题目及答案题目一:给定一个整数数组nums和一个目标值target,请你在数组中找出和为目标值的两个整数,并返回它们的索引。
题目描述:给定一个整数数组nums,以及一个目标值target,请找出数组中两个数字的和等于目标值target,并返回它们的索引。
示例输入:nums = [2, 7, 11, 15], target = 9示例输出:[0, 1]解释:nums[0] + nums[1] = 2 + 7 = 9,因此返回[0, 1]。
解题思路:1. 使用哈希表存储已经遍历过的数字及其索引;2. 遍历数组,对于每个元素,计算该元素与目标值的差值;3. 如果差值存在于哈希表中,则返回对应的索引;4. 如果不存在,则将当前元素加入哈希表中。
代码实现:```pythondef twoSum(nums, target):hashmap = {}for i, num in enumerate(nums):complement = target - numif complement in hashmap:return [hashmap[complement], i]hashmap[num] = ireturn []# 测试样例nums = [2, 7, 11, 15]target = 9print(twoSum(nums, target))```二、链表题目及答案题目二:给定一个链表,删除链表的倒数第N个节点,并返回链表的头节点。
题目描述:给定一个链表,删除链表的倒数第N个节点,并返回链表的头节点。
示例输入:1->2->3->4->5, N = 2示例输出:1->2->3->5解释:删除倒数第二个节点(4),得到链表1->2->3->5。
解题思路:1. 使用双指针技巧,使用两个指针pre和cur,其中cur指针先向前移动N个节点;2. 使用dummy节点作为头节点的前一个节点,以应对删除头节点的情况;3. cur指针到达链表的尾部时,pre指针的下一个节点即为要删除的节点;4. 删除节点后,返回dummy节点的下一个节点即为新链表的头节点。
数组选择试题及答案高中

数组选择试题及答案高中一、选择题1. 在C语言中,定义一个整型数组的语句是:A. int a[5] = {0, 1, 2, 3, 4};B. int a[] = {0, 1, 2, 3, 4};C. int a[5] = {0};D. int a = {0, 1, 2, 3, 4};2. 下列关于数组的描述中,正确的是:A. 数组的大小在定义时必须指定B. 数组的大小在定义后可以改变C. 数组的索引从0开始D. 数组的索引从1开始3. 以下代码的输出结果是什么?```cint main() {int arr[5] = {1, 2, 3, 4, 5};int *p = arr;printf("%d", *(p + 2));return 0;}```A. 1B. 2C. 3D. 44. 假设有一个数组a[10],下列哪个表达式不能正确表示数组元素的值?A. a[0]B. a[9]C. a[10]D. a[5]5. 在C语言中,数组元素的默认值是:A. 0B. 1C. -1D. 未定义二、填空题1. 定义一个长度为10的整型数组,数组的最后一个元素的下标是_________。
2. 在C语言中,数组名代表数组的_________。
3. 给定数组int arr[5] = {10, 20, 30, 40, 50}; 要访问数组的第三个元素,应该使用_________。
三、解答题1. 编写一个C语言程序,实现将一个整型数组中的所有元素乘以2,并输出结果。
```c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int i, n = sizeof(arr) / sizeof(arr[0]);for (i = 0; i < n; i++) {arr[i] *= 2;printf("%d ", arr[i]);}return 0;}```2. 说明数组在内存中的存储方式。
数组试题及答案

数组试题及答案1. 定义一个整型数组,包含10个元素,并初始化为0。
答案:```cint array[10] = {0};```2. 编写一个函数,用于计算数组中所有元素的和。
答案:```cint sumArray(int arr[], int size) {int sum = 0;for (int i = 0; i < size; i++) {sum += arr[i];}return sum;}```3. 给定一个数组,编写一个函数来找到数组中的最大值。
答案:```cint findMax(int arr[], int size) {int max = arr[0];for (int i = 1; i < size; i++) {if (arr[i] > max) {max = arr[i];}}return max;}```4. 编写一个程序,将一个数组中的所有元素逆序输出。
答案:```cvoid reverseArray(int arr[], int size) {for (int i = size - 1; i >= 0; i--) {printf("%d ", arr[i]);}}```5. 给定一个整数数组,编写一个函数,将数组中的所有负数移到数组的开头,所有非负数移到数组的末尾。
答案:```cvoid moveNegativesToFront(int arr[], int size) {int j = 0;for (int i = 0; i < size; i++) {if (arr[i] < 0) {arr[j++] = arr[i];}}for (int i = j; i < size; i++) {arr[i] = 0;}}```6. 编写一个函数,用于检查数组中是否存在重复元素。
答案:```cbool hasDuplicates(int arr[], int size) {for (int i = 0; i < size; i++) {for (int j = i + 1; j < size; j++) {if (arr[i] == arr[j]) {return true;}}}return false;}```7. 给定一个数组,编写一个函数,用于找出数组中第二大的元素。
数组选择试题及答案

数组选择试题及答案一、选择题1. 在C语言中,数组的索引是从哪个数字开始的?A. 0B. 1C. 2D. 3答案:A2. 下面哪个选项是正确的数组声明?A. int arr[5] = {1, 2, 3};B. int arr[5] = {1, 2, 3, 4, 5, 6};C. int arr[] = {1, 2, 3};D. int arr[5] = {1, 2};答案:C3. 如果有一个数组`int arr[10] = {0};`,那么数组中所有元素的初始值是多少?A. 1B. 0C. -1D. 未定义答案:B4. 以下哪个循环可以用来遍历数组?A. for (int i = 0; i < 10; i++) { ... }B. for (int i = 10; i > 0; i--) { ... }C. for (int i = 0; i <= 10; i++) { ... }D. for (int i = 0; i < 10; i += 2) { ... }答案:A5. 在C语言中,如何获取数组的长度?A. sizeof(arr) / sizeof(arr[0])B. sizeof(arr) * sizeof(arr[0])C. sizeof(arr) / sizeof(int)D. sizeof(arr) / sizeof(char)答案:A二、填空题1. 在C语言中,定义一个整型数组并初始化为前5个自然数,可以使用以下语句:`int arr[] = {______, ______, ______, ______,______};`答案:0, 1, 2, 3, 42. 如果有一个数组`int arr[5] = {10, 20, 30, 40, 50};`,那么`arr[2]`的值是______。
答案:303. 在C语言中,数组的内存是______的。
答案:连续4. 定义一个数组`int arr[3] = {0, 1, 2};`,数组的最后一个元素的索引是______。
数组选择试题及答案解析

数组选择试题及答案解析一、选择题1. 下列关于数组的描述中,错误的是:A. 数组是一种基本的数据结构,可以存储相同类型的多个元素B. 数组在内存中是连续存储的C. 数组的大小在定义后可以改变D. 数组可以通过索引来访问元素2. 假设有一个整型数组 int[] arr = {1, 2, 3, 4, 5}; 以下哪个表达式是正确的:A. arr[0] = 10B. arr[5] = 6C. arr[-1] = 0D. arr[5]3. 在Java中,以下哪个方法可以用来获取数组的长度:A. length()B. size()C. count()D. total()4. 假设有一个数组 int[] numbers = new int[5]; 以下哪个操作是合法的:A. numbers[5] = 10B. numbers[-1] = 0C. numbers[4] = 100D. numbers[0] = 55. 在C语言中,以下哪个数组声明是正确的:A. int arr[] = {1, 2, 3};B. int arr[3] = {1, 2, 3};C. int arr[3] = 1, 2, 3;D. int arr = {1, 2, 3};二、答案解析1. 答案:C解析:数组的大小在定义后是不可变的,这是数组的一个基本特性。
2. 答案:A解析:数组索引从0开始,arr[0]是第一个元素,可以赋值为10。
3. 答案:A解析:在Java中,数组的长度通过length属性获取。
4. 答案:C解析:数组索引从0到数组长度减一,所以索引4是合法的,可以赋值为100。
5. 答案:A解析:在C语言中,数组的声明可以不指定大小,编译器会根据初始化列表的长度自动计算数组的大小。
选项A是正确的声明方式。
数组经典题和解析

数组经典题和解析以下是一些经典的数组题目以及解析:1. 两数之和:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数的索引。
可以假设每个输入只对应一个答案,且同样的元素不能被重复利用。
解析:可以使用哈希表来解决该问题。
遍历数组,将每个元素的值和索引存入哈希表中,然后再次遍历数组,对于每个元素,通过判断目标值减去当前元素的差值是否在哈希表中找到另一个数的索引。
2. 三数之和:给定一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c,使得a + b + c = 0?找出所有满足条件且不重复的三元组。
解析:可以使用双指针法来解决该问题。
首先,将数组排序,然后固定一个元素,然后使用左右指针遍历剩余元素,通过判断三个元素的和是否为0,来确定是否满足条件。
为了避免重复的解,可以在遍历过程中跳过相同的元素。
3. 数组中的第K个最大元素:找到数组中第K个最大的元素。
注意,它是排序后的第K个最大元素,而不是第K个不同元素。
解析:可以使用堆来解决该问题。
维护一个大小为K的最小堆,遍历数组,将前K个元素加入堆中。
然后,对于剩余的元素,如果比堆顶元素大,则将堆顶元素弹出,将当前元素加入堆中。
最终,堆顶元素即为第K个最大元素。
4. 最长连续递增序列:给定一个未排序的整数数组,找到最长连续递增序列的长度。
解析:使用一个变量来记录当前连续递增序列的长度,以及一个变量来记录最长连续递增序列的长度。
从数组的第二个元素开始遍历,如果当前元素大于前一个元素,则将当前连续递增序列的长度加1,同时更新最长连续递增序列的长度。
如果当前元素小于等于前一个元素,则重新开始计算连续递增序列的长度。
5. 买卖股票的最佳时机:给定一个数组,它的第i个元素是一支给定股票第i天的价格。
设计一个算法来计算你所能获取的最大利润。
你最多可以完成两笔交易。
解析:使用动态规划来解决该问题。
维护四个变量:buy1表示第一次买入股票时的最大收益,sell1表示第一次卖出股票时的最大收益,buy2表示第二次买入股票时的最大收益,sell2表示第二次卖出股票时的最大收益。
数组典型例题分析与解答

1 定义一个名为a的单精度实型一维数组,长度为4,所有元素的初值均为0的数定义语句是________________【分析】按照一般数据定义语句的格式,可以直接写出方法一(参看答案);考虑到所有元素均赋初值时可以省略数组长度,可以写出方法二(参看答案);考虑到不省略数组长度,给部分元素赋初值时,所有未赋初值的元素均有空值(对数值型数组来说,初值为0),可以写出方法三(参看答案);考虑到选用静态型,不赋初值所有元素也自动赋予。
空值(对数值型数组来说,初值为0),可以写出方法四(参看答案)。
【答案】方法一:float a[4]={0.0,0.0,0.0,0.0};方法二:float a[]={ 0.0,0.0,0.0,0.0};方法三:float a[4]= {0.0};方法四: static float [4];2 下列数组定义语句中,错误的是()① char x[1]='a';②auto char x[1]={0};③ static char x[l];④ char x[l];【分析】显然答案①中给字符型数组赋初值的格式不对(不能直接赋予字符常量,必须用花括号括住),所以备选答案①是符合题意的答案。
【答案】①3 用"冒泡排序法"对n个数据排序,需要进行n一1 步。
其中第k步的任务是:自下而上,相邻两数比较,小者调上;该操作反复执行n-k次。
现在假设有4个数据:4、l、3、2要排序,假定4为上、2为下,则利用"冒泡排序法"执行第2步后的结果是_________________。
【分析】开始排序前的排列执行第1步后的排列执行第2步后的排列4 1 11 4 23 2 42 3 3【答案】 l、2、4、34 用"选择排序法"对n个数据排序,需要进行n-1步。
其中第k步的任务是:在第k个数据到第n个数据中寻找最小数,和第k个数据交换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章数组7-1输入一个正整数n(1≤n≤10),再输入n个整数(1)输出最大数和最小数,并输出平均值。
(2)将最小数与第一个数交换,最大数与最后一个数交换,然后输出交换后的结果。
(3)输出所有比平均值大的数。
(4)找到最接近平均值的数。
(提示:考虑差的绝对值)OutputPlease input 10 integers:17 34 -11 2 5 10 7 -9 0 25 /* input */The maximum is: 34, the minimum is: -11, the average is 8.00After exchange: -11 25 17 2 5 10 7 -9 0 34Larger than the average: 25 17 10 34The number closest to the average is: 77-2输入一个日期(按照year-month-day格式),计算该日期为当年的第几天。
(提示:注意闰年)(1)使用数组存储当年每个月应有的天数;(2)不使用数组完成;OutputPlease input a date: (year-month-day) 2008-4-14↵/* input */This date is the 105th day in the year.7-3输入一个正整数n(1≤n≤10),再输入n个整数,将这n个整数从大到小排序,然后在已经排序后的数组中插入平均数(取整),保持数组的升序,将插入平均数后的数组输出。
(1)用冒泡法排序;(2)用选择法排序。
OutputHow many numbers you want to sort? 5↵/* input */Please input 5 numbers:17 34 -11 2 5↵/* input */34 17 9 5 2 -117-4输入两个数组A和B(各5个元素),将其按照升序排序,然后将A和B合并到数组C中(合并的过程中保持升序,不要合并后再排序)。
输出排序后的数组A、B和C。
OutputPlease input array A (containing 5 elements):17 34 -11 2 5↵/* input */ Please input array B (containing 5 elements): 10 7 -9 0 25↵/* input */ Array C is: -11 -9 0 2 5 7 10 17 25 347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。
Output (1)Please input an integer: 9↵/* input */The binary complemental code of 9 is: 00000000 00001001Output (2)Please input an integer: -9↵/* input */The binary complemental code of -9 is: 11111111 111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。
示例: 1 1 1 1 01 1 1 0 -11 1 0 -1 -11 0 -1 -1 -10 -1 -1 -1 -17-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。
7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。
7-9杨辉三角形(也叫Pascal三角形)如下:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。
输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。
(提示:如果用i表示行,用j表示列,则第i行j列元素p i, j=p i-1,j-1 + p i-1, j)7-10 矩阵A 和矩阵B 相乘,要求A 的列数和B 的行数相同。
例如:m 行n 列的矩阵A 和n 行p 列的矩阵B 相乘,得到m 行p 列的矩阵C ,C 中的i 行j 列元素c ij 由下列公式得到:kj nk ik ij b a c ∑==1其中,a ik 是矩阵A 中的i 行k 列元素,b kj 是矩阵B 中的k 行j 列元素。
编写程序,输入3行4列的矩阵A 和4行5列的矩阵B ,输出A 和B 的乘积——3行5列的矩阵C 。
7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。
“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。
7-12编写程序,实现二叉树查找的算法。
该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。
如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。
注意:读入数组后,需要先排序。
第8章字符数组与字符串8-1编写程序,输入你的姓名,然后输出表示你名字的ASCII码系列。
OutputPlease input your name: Finoa /* input */70 105 111 110 978-2读入一行字符,统计字母、数字和其他字符的个数。
8-3不使用字符串处理函数,完成下面任务:(1)将字符串str1复制到字符串str2中(不使用strcpy函数),输出str2;(2)将字符串str2连接到字符串str1后(不使用strcat函数),输出str1;(3)比较字符串str1和str2的大小(不使用strcmp函数),输出较大的字符串(如果字符串一样,随便输出一个)。
提问:理解程序中的while循环吗?8-4从一个字符串中删除从某个特定字符开始的所有字符。
例如原字符串为"abcdefg",特定字符为'd',删除后的字符串为"abc"。
OutputPlease input a string: abcdefg↵/* input */ Which character do you want to delete from? d↵/* input */ The string is: abc8-5将一个字符串逆序存放,然后输出。
OutputPleas input the string:England /* input */dnalgnE8-6编写程序,完成下面任务:(1)输出问句:"Who is the inventor of C?";(2)接受一个答案;(3)如果答案正确(正确答案是Dennis),显示"GOOD"并停止运行;(4)如果答案不正确,输出消息"Try again";(5)如果第三次尝试后答案仍不正确,显示正确答案并停止运行。
8-7将字符串译成密码,密码规律是:若密钥为4,则用原来的字母后面第4个字母代替原来的字母。
例如字母A后面的第4个字母是E,A译为E;字每V、W、X、Y、Z分别译为Z、A、B、C、D。
如"China"应译为"Glmre"。
(1)编写一个程序,读入原字符串,当密钥为4时,输出翻译后的密码。
(2)编写一个程序,读入原字符串和密钥(1~25),输出翻译后的密码。
OutputPlease input a string: China↵/* input */ The password is: Glmre提问:理解程序中标记为红色的语句吗?OutputPlease input a string: China↵/* input */Please input the key: 17↵/* input */The password is: Tyzer8-8编写程序,从一个输入的字符串中抽取一部分(从第n个字符开始,抽取m个字符)并输出。
要求:n和m都由用户输入。
OutputPlease input a string: This is a game.↵/* input */Which position do you want to extract? 2↵/* input */How many characters do you want to extract? 5↵/* input */The extracted string is: his i8-9编写程序,读取一段文本(以换行作为输入的结束),然后计算某个单词或单词的一部分(几个连续的字符)(也由用户输入)出现的次数。
OutputPlease input a text:It is interesting!.↵/* input */Which word do you want to count? in↵/* input */There are 4 "in" in "It is interesting!"8-10某选举活动有五位候选人(用一个字符串数组记录候选人的名字),投票工作室在选票上标记出某位候选人的编号(1~5)即可。
编写程序,使用数组变量count读取选票并计算每位候选人的得票数(当输入0时,表示输入结束)。
条件:如果所读取数不在1~5的范围内,该选票被视为“废票”;若没有候选人超过总投票数的半数,则选举无效。
(1)输出每个人的姓名和得票数,和废票总数。
(2)若选举有效,票数最多的候选人当选,输出当选人的名字。
OutputThe 5 candidates are:Candidate 1: TomCandidate 2:JackCandidate 3: MikeCandidate 4: DipsyCandidate 5: EllaPlease input the vote:(Input 0 to end)1 2 2 4 2 3 1 5 2 2 6 2 2 3 1 2 2 1 2 2 0 /* input */Candidate 1: Tom Ballot: 4Candidate 2:Jack Ballot: 11Candidate 3: Mike Ballot: 2Candidate 4: Dipsy Ballot: 1Candidate 5: Ella Ballot: 1Invalid ballot: 1The eledt is candidate 2: Jack!8-11编写程序,用一个词代替给定字符串中的某个词。