C语言 投票问题
問(wèn)題描述: ? ? ? ? ??
? ? ? ?有N個(gè)選民參與投票,候選人分別為A,B,C,D, 現(xiàn)在選民分別投A,B,C,D代表4個(gè)候選人(數(shù)據(jù)由電腦隨機(jī)產(chǎn)生),無(wú)效數(shù)據(jù)自動(dòng)排出;最后由高到低排列候選人和其票數(shù);
要點(diǎn)解決:1. 產(chǎn)生隨機(jī)數(shù)要用到隨機(jī)種子, 以當(dāng)前時(shí)間為起始點(diǎn)進(jìn)行隨機(jī),生成隨機(jī)數(shù)較大 對(duì)其取余,加上’A‘即可生成對(duì)應(yīng)的ABCDEF.....范圍由余數(shù)決定。
? ? ? ? ? ? 2.候選人和其票數(shù)的排列問(wèn)題可以用兩個(gè)數(shù)組解決,一個(gè)數(shù)組存取票數(shù),另一個(gè)數(shù)組存取候選人名稱,兩個(gè)對(duì)應(yīng),對(duì)票數(shù)進(jìn)行冒泡排序, 交換數(shù)組值的同時(shí)把姓名
也進(jìn)行交換。
代碼 :
#include "stdafx.h" #include "time.h" #include "stdlib.h"int _tmain(int argc, _TCHAR* argv[]) {char name[4] = {'A', 'B', 'C', 'D'};char vote[100] = {'\0'};int n = 0, abandon = 0;int a[4] = {0};scanf("%d", &n);srand((unsigned)time(NULL));//設(shè)定隨機(jī)種子for(int i = 0; i < n; i++) {vote[i] = rand() % 7 + 'A'; //設(shè)定投票的范圍printf("%c", vote[i]);switch (vote[i]) {case 'A':a[0]++;break;case 'B':a[1]++;break;case 'C':a[2]++;break;case 'D':a[3]++;break;default :abandon++;break;}}for(int i = 0; i < 4 - 1; i++) {for(int j = 0; j < 4 - i - 1;j++) {if(a[j] < a[j + 1]) {int temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;char temp1 = name[j];name[j] = name[j + 1];name[j + 1] = temp1;}}}printf("\n");for(int i = 0; i < 4; i++) {printf("%c的票數(shù):%d\n", name[i], a[i]);}printf("棄權(quán)的票數(shù):%d\n", abandon);return 0; }總結(jié)
- 上一篇: https安全认证流程简介
- 下一篇: 模拟电路64(滤波电路)