分数 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;