【发布时间】:2018-09-11 05:43:29
【问题描述】:
正如标题所暗示的那样,我在获取要在此程序中计算的列总数和百分比时遇到了一些严重问题。我花了几个小时提取代码并尝试逐步实现,但失败得很惨。 C 不是我的强项。
该程序应该能够执行以下操作:
一个。用适当的标签显示表格的行和列。
b.计算并显示每位候选人获得的总票数和占总票数的百分比。
c。如果任何一位候选人获得了超过 50% 的选票,则程序应显示一条消息,宣布该候选人为获胜者。
d。如果没有候选人获得 50% 的选票,程序应显示一条消息,宣布在获得最高票数的两名候选人之间进行决选;两位候选人应通过他们的字母名称来识别。
e。使用显示的数据运行程序一次,并在候选人 C 在选区 4 中仅获得 108 票的情况下运行一次。
我的程序添加行总计并将它们打印到“总计”列。我正在尝试弄清楚如何添加列总计并将其传递给每个候选人的“总计”列。
#include <stdio.h>
int main()
{
int votes[5][4]={
192,48,206,37,
147,90,312,21,
186,12,121,38,
114,21,408,39,
267,13,382,29};
char cand[4]={'A','B','C','D'};
int row_totals[5];
int col_totals[4];
int total_votes;
float percent[5];
int row,col;
int total=0;
for(row=0;row<=4;row++)
{
row_totals[row]=0;
for(col=0;col<=3;col++)
{
row_totals[row] += votes[row][col];
total+=votes[row][col];
}
}
printf(" Candidate Candidate Candidate Candidate Total Percent\n");
printf(" Precinct A B C D\n");
for(row=0;row<=4;row++)
{
printf("%6d",row+1);
for(col=0;col<=3;col++)
{
printf("%12d",votes[row][col]);
}
printf("%11d",row_totals[row]);
percent[row]=(double)(row_totals[row]*100)/total;
printf("\t%.2f\n",percent[row]);
}
int i;
double first=percent[0];
double sec=percent[0];
int maxVal,second_big;
for(i=0;i<4;i++)
{
if(first>percent[i])
{
first=percent[i];
maxVal=i;
}
}
int j;
for(j=0;j<4;j++)
{
if(percent[j]>sec && percent[j]!=sec)
{
sec=percent[j];
second_big=j;
}
}
if(first>50)
{
printf("%c is the winner.\n",cand[maxVal]);
}
else if(sec<=50)
{
printf("%c and %c are in a runoff.\n",cand[maxVal],cand[second_big]);
}
return 0;
}
【问题讨论】:
-
printf("c is the winner.\n",cand[maxVal]);- 开头应该是%c。无论如何,你的问题到底是什么?您看到打印出来的值是什么?您期望什么? -
我的程序添加行总计并将它们打印到“总计”列。我正在尝试弄清楚如何添加列总计并将其传递给每个候选人的“总计”列。
标签: c arrays matrix sum percentage