注册 登录
编程论坛 C++教室

QIUJIE用数组统计100个人给10个人的投票情况

书山压力不大 发布于 2021-05-21 21:41, 2154 次点击
有10位候选人,编号为1-10。现有100人参与投票,计算每位候选人的得票数。通过键盘输入投票人的投票编号并将数据保存到数组b中,候选人的得票数按编号顺序保存到数组a中。如果输入的投票编号不是1-10的数字,输入终止。具体要求如下:点击“试题文件夹”按钮进入,打开项目,然后编写程序并进行调试。

#include<stdio.h>
#include<stdlib.h>
void main()
{
     int a[10],b[100],rate,n=0,i; //数组a的10个元素按顺序分别代表1号--10号的投票数
    while(n<100)
    { //将投票数据通过键盘输入保存到数组b中,并且输的不是1到10的编号,输入结束
          scanf("%d",&rate);
          if(rate<1||rate>10) break;
          b[n]=rate;
          n++;
    }
    /*************代码开始**********/



   /***********代码结束************/
   for(i=0;i<10;i++)
          printf("编号%d:%d票\n",i+1,a[i]);
    system("pause");
}

【注意】:部分源程序在文件PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在/*****代码开始****/到/****代码结束****/之间填入缺省的若干语句,并且在该语句块中不允许声明新的变量以及不允许写printf输出语句。

2 回复
#2
rjsp2021-05-21 22:56
请勿改动主函数main和其他函数中的任何内容
不改的话,良心过不去。另外,我才反应过来,你这是C代码,还是C++代码?

程序代码:
#include <stdio.h>

int main( void )
{
    size_t a[10] = { 0 };

    size_t b[100], n;
    for( n=0; n!=sizeof(b)/sizeof(*b); ++n )
    {
        size_t rate;
        if( scanf("%zu",&rate)!=1 || rate<1 || rate>sizeof(a)/sizeof(*a) )
            break;
        b[n] = rate;
    }

    /*************代码开始**********/
    // 假如定义时未初始化( 即写成 size_t a[10] 而不是 size_t a[10]={0} )的话,这里还得加一句初始化
   
//for( size_t i=0; i!=sizeof(a)/sizeof(*a); ++i )
   
//    a[i] = 0;
    for( size_t i=0; i!=n; ++i )
        ++a[ b[i]-1 ];
    /***********代码结束************/

    for( size_t i=0; i!=sizeof(a)/sizeof(*a); ++i )
        printf( "编号%zu:%zu票\n", i+1, a[i] );
}
#3
书山压力不大2021-05-23 02:41
for(i=0;i!=n; i++ )
        ++a[b[i]-1];
1