7-128 随机产生选择题答案并统计

分数 20

全屏浏览题目

切换布局

作者 周永

单位 西南石油大学

用户输入一个正整数作为随机种子,根据这个随机种子,产生40个选择题的答案,也就是产生40个随机字母,每个字母是大写字母ABCD中的某一个。提醒:

(1) 务必用srand( )函数进行随机初始化。

(2)你在Windows下的运行结果,和Linux服务器上的运行结果,是不一致的。因此,在本地只管确保程序调试通过,能输出相应格式的信息后,提交代码在服务器上验证。

输入格式:

1到32767之间(含边界)的整数。

输出格式:

40个选择题的答案,及统计数据。

输入样例:

用户输入随机种子322。

322

输出样例:

数字序号用两位数,不足两位前面填充0;数字之后是一个纯英文的点;之后是随机产生的答案,大写字母;再接下来是两个空格。每一组答案信息后都有两个空格,例如下面第一行的“05.A ”之后,也是有两个空格的。
打印5个答案信息后,产生一个换行。
40个答案信息都打印完毕后,打印统计数据。字母后面是纯英文的冒号,然后是保留两位小数的百分比,四组统计数据之间有三组空格,每组空格都是两个空格。

01.A  02.C  03.A  04.C  05.A  
06.D  07.A  08.B  09.B  10.C  
11.C  12.C  13.A  14.D  15.D  
16.C  17.C  18.D  19.B  20.C  
21.C  22.A  23.A  24.B  25.C  
26.A  27.C  28.C  29.C  30.B  
31.A  32.D  33.D  34.A  35.B  
36.D  37.D  38.B  39.A  40.A  
A:30.00%  B:17.50%  C:32.50%  D:20.00%
#include <stdio.h>
#include <stdlib.h>
 
int main(){
    int n,i;
    double a=0,b=0,c=0,d=0;
    int arr[40];
    
    scanf("%d",&n);
    srand(n);
    
    for(i = 0 ; i < 40 ; i++ ){
 
      arr[i] = rand() % 4+65;  
      
   }
    
    //判断 A,B,C,D
    for(int j = 0;j < 40; j++){
        if(arr[j] == 65){
            a++;
        }
        else if(arr[j] == 66){
            b++;
        }
        else if(arr[j] == 67){
            c++;
        }
        else{
            d++;
        }
    }
//     printf("%lf %lf %lf %lf\n",a,b,c,d);
    
    //判断每行个数 达到5个就换行
    for (int k = 0; k < 40; k++){
        if(k % 5 == 0 && k != 0){
            printf("\n");
        }
        
        printf("%02d.%c  ",k+1,arr[k]);
    
    }
    
    printf("\n");
    printf("A:%.2lf%%  B:%.2lf%%  C:%.2lf%%  D:%.2lf%%",a/40*100,b/40*100,c/40*100,d/40*100);
 
    return 0;
}

rand()函数需要的头文件是:<stdlib.h>

 rand()会返回一个范围在0到RAND_MAX(至少是32767)之间的伪随机数(整数)

在调用rand()函数之前,可以使用srand()函数设置随机数种子,如果没有设置随机数种子,rand()函数在调用时,自动设计随机数种子为1。随机种子相同,每次产生的随机数也会相同

一般性:rand() % (b-a+1)+ a ;    就表示  a~b 之间的一个随机整数

使用rand()产生1-100以内的随机整数

int number1 = rand() % 100+1;

另附参考链接:C++中rand()函数的用法_风暴计划的博客-CSDN博客_c++ rand()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@pon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值