c语言练习题
调查4个电台受欢迎程度。要求用选择排序法将受欢迎程度按照从大到小排列输出,最后给出无效投票的票数。请定义数组大小为5个整数元素的一维数组accept[5],用于存放4个电...
调查 4 个电台受欢迎程度。要求用选择排序法将受欢迎程度按照从大到小排列
输出,最后给出无效投票的票数。
请定义数组大小为 5 个整数元素的一维数组 accept[5], 用于存放 4 个电台
受欢迎的统计信息以及无效投票的票数,可将 0 号元素对应无效投票。假设总
的投票数据有 n 张(n 通过 scanf()读入), 输入的数据 1,2,3,4 分别对应 4
个受欢迎的电台编号,其它数据被视作无效投票。
本题注意:排序后电台号与投票的票数要对应输出。
例如当输入 n=12, 以及如下投票数据时,
1 2 1 2 0 3 1 2 3 1 2 2
表示输入 12 张投票结果,根据输入的数据结果计算得到电台受欢迎程度的得票
情况分别为 1 号电台是 4;2 号电台是 5; 三号电台是 2;四号电台是 0;无效
投票数据为 1
若输入上述数据后,根据问题的要求:程序的运行按照电台受欢迎程度从大到
小以及最后输出无效票数的输出结果为:
No2: 5
No1: 4
No3: 2
No4: 0
Invalid: 1
我的解答输入repeat和n后直接就出结果了,我不知道错在哪里
#include <stdio.h>
int main()
{
int accept[5]={0,0,0,0,0};
int repeat,ri;
int n,i,k,t,index,temp,x;
scanf("%d",&repeat);
for (ri=1;ri<=repeat;ri++){
scanf("%d",&n);
for (i=1;i<=n;i++){
scanf("&d",&x);
if (x<1||x>4)
accept[0]++;
else
accept[x]++;
}
for (k=1;k<5;k++){
index=k;
for (t=k+1;t<5;t++){
if (accept[t]<accept[index])
index=t;
}
temp=accept[index];
accept[index]=accept[k];
accept[k]=temp;
printf("No%d: %d\n",k,accept[index]) ;
}
printf("Invalid: %d",accept[0]);
}
} 展开
输出,最后给出无效投票的票数。
请定义数组大小为 5 个整数元素的一维数组 accept[5], 用于存放 4 个电台
受欢迎的统计信息以及无效投票的票数,可将 0 号元素对应无效投票。假设总
的投票数据有 n 张(n 通过 scanf()读入), 输入的数据 1,2,3,4 分别对应 4
个受欢迎的电台编号,其它数据被视作无效投票。
本题注意:排序后电台号与投票的票数要对应输出。
例如当输入 n=12, 以及如下投票数据时,
1 2 1 2 0 3 1 2 3 1 2 2
表示输入 12 张投票结果,根据输入的数据结果计算得到电台受欢迎程度的得票
情况分别为 1 号电台是 4;2 号电台是 5; 三号电台是 2;四号电台是 0;无效
投票数据为 1
若输入上述数据后,根据问题的要求:程序的运行按照电台受欢迎程度从大到
小以及最后输出无效票数的输出结果为:
No2: 5
No1: 4
No3: 2
No4: 0
Invalid: 1
我的解答输入repeat和n后直接就出结果了,我不知道错在哪里
#include <stdio.h>
int main()
{
int accept[5]={0,0,0,0,0};
int repeat,ri;
int n,i,k,t,index,temp,x;
scanf("%d",&repeat);
for (ri=1;ri<=repeat;ri++){
scanf("%d",&n);
for (i=1;i<=n;i++){
scanf("&d",&x);
if (x<1||x>4)
accept[0]++;
else
accept[x]++;
}
for (k=1;k<5;k++){
index=k;
for (t=k+1;t<5;t++){
if (accept[t]<accept[index])
index=t;
}
temp=accept[index];
accept[index]=accept[k];
accept[k]=temp;
printf("No%d: %d\n",k,accept[index]) ;
}
printf("Invalid: %d",accept[0]);
}
} 展开
2个回答
展开全部
#include <stdio.h>
int main() {
int accept[5],No[5];
int repeat,ri;
int n,i,j,k,t,x;
scanf("%d",&repeat);
for (ri = 0; ri < repeat; ri++) {
for(i = 0; i < 5; ++i)
accept[i] = No[i] = 0;
scanf("%d",&n);
for (i = 0; i < n;i++) {
scanf("%d",&x);
if (x < 1 || x > 4) accept[0]++;
else {
accept[x]++;
++No[x];
}
}
for (i = 1; i < 5 - 1; i++) {
k = i;
for (j = i + 1; j < 5;j++) {
if (accept[k] < accept[j])
k = j;
}
if( i != k) {
t = accept[k];
accept[k] = accept[i];
accept[i] = t;
t = No[i];
No[i] = No[k];
No[k] = t;
}
}
for(i = 1; i < 5; ++i)
printf("No%d: %d\n",No[i],accept[i]);
printf("Invalid: %d\n",accept[0]);
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |